Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



BASCOM AVR

Сообщений 1 страница 6 из 6

1

Вопрос по программе робота в журнале Радио № 9 за 2006 год.
Что означают строки, особенно вторая.
Command = Command And &B01111111
Reset Portb.a : Reset Portd.a
В Bascavr.pdf и в помоши этого нет!

Фрагмент программы где эти строки:

Getrc5(address , Command)     'Прием команды ПДУ
If Address = 0 Then           'Затем – ее выполнение
Command = Command And &B01111111
If Command = 12 Then         'Выключаем все (клавиша ОN-OFF)
For A = 0 To 7
  Reset Portb.a : Reset Portd.a
Next A
End If

0

2

Command = Command And &B01111111 это наложение маски, васик тут не причем учи основы программирования.
Reset Portb.a : Reset Portd.a - установить соответсвующие порты в ноль

0

3

Можно записать так:

Getrc5(address , Command)     'Прием команды ПДУ
If Address = 0 Then           'Затем – ее выполнение
Command = Command And &B01111111
If Command = 12 Then         'Выключаем все (клавиша ОN-OFF)
Reset Portb.0 : Reset Portd.0
Reset Portb.1 : Reset Portd.1
Reset Portb.2 : Reset Portd.2
Reset Portb.3 : Reset Portd.3
Reset Portb.4 : Reset Portd.4
Reset Portb.5 : Reset Portd.5
Reset Portb.6 : Reset Portd.6
Reset Portb.7
End If

Согласитесь, первый вариант короче?!

Getrc5 неплохо описана в хелпе.

0

4

Если я правильно понял, то Reset Portd.a означает Reset Portd.all ?
Но в описаниях этого нет!
Зачем на Command накладывать маску (что это наложение маски, я знаю)
если в далнейшем не используется по ходу программы.
В описании команды Getrc5(address , Command) зачем накладывается маска
ни слова.
Спасибо за ответы.

0

5

mironov_us написал(а):

Зачем на Command накладывать маску (что это наложение маски, я знаю)
если в далнейшем не используется по ходу программы.

В данном случае обнуляется седьмой бит переменной Command.

mironov_us написал(а):

Если я правильно понял, то Reset Portd.a означает Reset Portd.all ?

Нет.
Изменяется только один разряд а не все.
В программе для обнуления всех разрядов использован цикл For - Next

Код:
For a = 0 To 7
  Reset Portb.a : Reset Portd.a
Next a

обратите внимание на имя переменной в цикле

0

6

Петр. Большее спасибо за толковое объяснение.
Притупил на Dim A As Byte и Reset Portb.a : Reset Portd.a
Раньше начинал осваивать PIC и рабтал в MPLab, а там А и а разные вещи.
Еще раз спасибо.

Отредактировано mironov_us (2009-03-11 19:41:40)

0