реклама на сайте
подробности

 
 
> Программирование MCS-51, Настройка портов на ввод
Jead
сообщение Jan 2 2012, 18:23
Сообщение #1





Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jead
сообщение Jan 18 2012, 19:59
Сообщение #2





Группа: Участник
Сообщений: 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 результат (есть ли единица там или нет, т.е. нажата ли кнопка) определить какое количество кнопок нажато и зажечь определенный светодиод. Но когда мы настраиваем порты на ввод и вывод компилятор видит во всех этих настроенных битах единицы и, соответственно, не реагирует.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 18 2012, 20:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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)

Команда первого типа (запись) помещает некое значение в ячейку памяти (триггер), состояние которого определяет состояние ключа, соединяющего пин с землёй.

Команда второго типа (чтение) помещает значение в соответствии с уровнем сигнала на пине порта в "получатель", заданный в команде. При этом не важно, что выдавалось ранее в порт и зафиксированно состоянием триггера, важен только уровень на пине (как уже объяснял выше: высокий уровень, заданный выданной в порт единицей может "пересилить" низкий уровень "навалившийся" извне).

А, вот, для команд третьего типа, как раз, не важен уровень сигнала на пине порта, а принимается в расчет состояние того самого триггера, о котором говорилось выше.

Так вот: для настройки на ввод и установки состояния выводов используются команды первого и третьего типа, а для ввода - команды второго типа.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016