|
Программирование MCS-51, Настройка портов на ввод |
|
|
|
Jan 2 2012, 18:23
|
Группа: Участник
Сообщений: 12
Регистрация: 30-10-11
Пользователь №: 68 056

|
Ребят, тут такая ситуация, написал код для программы, вроде синтаксически правильный и т.д. Но при этом не работал. Подкинули идею, что я не настроил порты на ввод и вывод.. Тут с прискорбием пришлось признать, что я не в курсе как это делается.. Знаю, что это основы, но видать прослушал на лекциях. помню что-то про установление единицы в фиксатор, но не знаю, как сделать. Собственно, сам код. Код SJMP BEGIN ORG 0000h BEGIN: MOV P1,#00001000b M4: MOV A,#00000000b JNB P1.0,M1 INC A M1: JNB P1.1,M2 INC A M2: JNB P1.2,M3 INC A M3: JZ M4 MOV P1,#00000000b DJNZ A,M5 DJNZ A,M6 MOV P1#01000000b SJMP M4 M5: MOV P1,#00010000b SJMP M4 M6: MOV P1,#00100000b SJMP M4 END
Сообщение отредактировал Jead - Jan 2 2012, 18:25
|
|
|
|
|
 |
Ответов
|
Jan 18 2012, 19:59
|
Группа: Участник
Сообщений: 12
Регистрация: 30-10-11
Пользователь №: 68 056

|
Палыч, сделал все как Вы подсказали, вышло вот так Код SJMP BEGIN ORG 0000h BEGIN: MOV P1,#01111111b ORL P1,#00001000b M4: MOV A,#00000000b JNB P1.0,M1 INC A M1: JNB P1.1,M2 INC A M2: JNB P1.2,M3 INC A M3: JZ M4 CLR P1.3 DJNZ A,M5 DJNZ A,M6 SETB P1.6 SJMP M4 M5: SETB P1.4 SJMP M4 M6: SETB P1.5 SJMP M4 END Но вот только я не совсем понимаю, если мы делаем MOV P1, #00000111b(настраиваем порты на ввод), то как нам потом снимать значения, т.е. есть ли там единица или нет? Грубо говоря, биты с нулевого по второй у нас подключены к кнопкам, с третьего по шестой - к светодиодам. И надо считывыя с Р.0, Р.1 и Р.2 результат (есть ли единица там или нет, т.е. нажата ли кнопка) определить какое количество кнопок нажато и зажечь определенный светодиод. Но когда мы настраиваем порты на ввод и вывод компилятор видит во всех этих настроенных битах единицы и, соответственно, не реагирует.
|
|
|
|
|
Jan 18 2012, 20:27
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(Jead @ Jan 18 2012, 23:59)  Но вот только я не совсем понимаю, если мы делаем MOV P1, #00000111b(настраиваем порты на ввод), то как нам потом снимать значения, т.е. есть ли там единица или нет? При обращении к порту возможны три типа команд: 1. запись (пример: MOV P1,#0) 2. чтение (MOV А,P1 или JNB P1.0,метка) 3. чтение-модификация-запись (ANL P1,#NOT 00001000b) Команда первого типа (запись) помещает некое значение в ячейку памяти (триггер), состояние которого определяет состояние ключа, соединяющего пин с землёй. Команда второго типа (чтение) помещает значение в соответствии с уровнем сигнала на пине порта в "получатель", заданный в команде. При этом не важно, что выдавалось ранее в порт и зафиксированно состоянием триггера, важен только уровень на пине (как уже объяснял выше: высокий уровень, заданный выданной в порт единицей может "пересилить" низкий уровень "навалившийся" извне). А, вот, для команд третьего типа, как раз, не важен уровень сигнала на пине порта, а принимается в расчет состояние того самого триггера, о котором говорилось выше. Так вот: для настройки на ввод и установки состояния выводов используются команды первого и третьего типа, а для ввода - команды второго типа.
|
|
|
|
Сообщений в этой теме
Jead Программирование MCS-51 Jan 2 2012, 18:23 kovigor Цитата(Jead @ Jan 2 2012, 21:23) Ребят, т... Jan 2 2012, 19:17 Harbinger Озвучьте конкретную модель микроконтроллера. В кла... Jan 2 2012, 20:19 Jead Цитата(Harbinger @ Jan 2 2012, 23:19) Озв... Jan 2 2012, 21:20 Harbinger Тогда установка, допустим, P0.7 на ввод будет выгл... Jan 2 2012, 23:37 Jead Спасибо! Т.е, если мне надо настроить все разр... Jan 9 2012, 11:13 Jead Глупый вопрос задал, извиняюсь... А на вывод как н... Jan 11 2012, 12:17 Палыч Цитата(Jead @ Jan 11 2012, 16:17) Глупый ... Jan 11 2012, 15:30 Jead Все равно что-то возмущается... на этот раз на SJM... Jan 13 2012, 09:38 Палыч Цитата(Jead @ Jan 13 2012, 13:38) Все рав... Jan 13 2012, 10:56  Harbinger Цитата(Палыч @ Jan 13 2012, 12:56) 2. Ком... Jan 13 2012, 15:41 Jead Менял первые 2 строки местами, все равно ругается.... Jan 13 2012, 11:36 MaslovVG Цитата(Jead @ Jan 13 2012, 15:36) Менял п... Jan 13 2012, 12:08 Палыч Цитата(Jead @ Jan 13 2012, 15:36) Менял п... Jan 13 2012, 12:56 Jead Ну не совсем обнулять, а скажем послать в него опр... Jan 13 2012, 13:19 MaslovVG Цитата(Jead @ Jan 13 2012, 17:19) Ну не с... Jan 13 2012, 13:47 Палыч Цитата(Jead @ Jan 13 2012, 17:19) Ну не с... Jan 13 2012, 15:01 Jead Спасибо большое за информацию, но я видать совсем ... Jan 18 2012, 20:51 Палыч Цитата(Jead @ Jan 19 2012, 00:51) но там ... Jan 18 2012, 21:17  Палыч Чтобы Вам втолковать работу параллельных портов в ... Jan 19 2012, 06:23   Harbinger Цитата(Палыч @ Jan 19 2012, 08:23) Предст... Jan 19 2012, 08:49
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|