простые интересные РАДИОСХЕМЫ сделанные своими руками


» СХЕМЫ И СТАТЬИ




Внимание! Форум только для чтения, продолжение на Shemaforum.ru


  • Страница 1 из 23
  • 1
  • 2
  • 3
  • 22
  • 23
  • »
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » AVR: операции с битами (Все что связано с битами регистров: установка, сброс и т.д.)
AVR: операции с битами
Пт, 20.04.2012, 18:47 | Сообщение # 1        
skateman
аватар
  Постов: 4420   Друзья 
Сюда с вопросами установки, сброса отдельных битов, наложением битмасок и т.п. Пишите, будем разбираться насколько мозга хватит wacko

Добавлено (20.04.2012, 18:47)
---------------------------------------------
С настройкой простейшей периферии (порта ввода/вывода) разобрались. Как установить на выводе порта 1 или 0 - знаем. А че творить когда по ходу программы надо менять логический уровень на выводе порта? Вот тут приходят на помощь команды операций с битами...
sbi (Set Bit I/O) - команда установки отдельного бита РВВ
cbi (Clear Bit I/O) - команда сброса отдельного бита РВВ
Пример:

Code

sbi PORTB,1 ; установка пина PB1 в 1
Пт, 20.04.2012, 19:01 | Сообщение # 2        
SssaHeKkk
аватар
  Постов: 4131   Друзья 
то есть мы в начале установили логический уровень..например 1..потом нам нужно чтобы диод мигнул...для этого мы сначала устанавливаем и потом сбрасываем отдельный бит..так или что то неправильно говорю?
Пт, 20.04.2012, 19:07 | Сообщение # 3        
skateman
аватар
  Постов: 4420   Друзья 
так, ты начальный уровень на выводе определяешь исходя тупо из своих соображений. Настроил на выход и установил 1 при настройке порта (исходя из логики работы устроиства) , в цикле чтоб мигнуть ты ставишь на данном пине 0, потом 1, дальше прыгаешь через rjmp на начало цикла где все у тебя повторяется. Напиши код!
Пт, 20.04.2012, 19:17 | Сообщение # 4        
SssaHeKkk
аватар
  Постов: 4131   Друзья 
ну давай возьмем порт В
...
ldi R16, 0b00000001
out DDRB, R16
ldi R16, 0b00000001
out PORTB, R16
Main:
sbi PORTB,0
cbi PORTB,0
rjmp Main


Отредактировал SssaHeKkk - Пт, 20.04.2012, 19:30
Пт, 20.04.2012, 19:22 | Сообщение # 5        
skateman
аватар
  Постов: 4420   Друзья 
SssaHeKkk, отлично!

Добавлено (20.04.2012, 19:22)
---------------------------------------------
но есть небольшой нюанс... контроллер выполняет одну операцию за одит тик тактового генератора, т.е команды sbi и cbi будут выполнятся примерно за 1 милионную секунды и ты мигания светодиода не увидишь - для тебя он будет постоянно светится

Пт, 20.04.2012, 19:24 | Сообщение # 6        
SssaHeKkk
аватар
  Постов: 4131   Друзья 
вот я как раз и хотел узнать...как устанавливать задержку
Пт, 20.04.2012, 20:23 | Сообщение # 7        
skateman
аватар
  Постов: 4420   Друзья 
чуть позже, делишки нарисовались

Добавлено (20.04.2012, 20:23)
---------------------------------------------
SssaHeKkk, в чем заключается задержка между выполнением команд?

Пт, 20.04.2012, 20:30 | Сообщение # 8        
SssaHeKkk
аватар
  Постов: 4131   Друзья 
ну в увеличении времени между выполнениями этих команд
Пт, 20.04.2012, 20:41 | Сообщение # 9        
skateman
аватар
  Постов: 4420   Друзья 
правильно, ты должен заставить контроллер делать то, что не изменит состояние порта.
у AVR есть команда которая заставляет контроллер ничего не делать на протяжении 1 имульса тактового генератора:
nop
Получается что на ее выполнение уходит 1 тактовый импульс. Допустим при тактовой МК 8 МГц для обеспечения задержки в 1 секунду надо прописать 8млн. таких команд. в облом такое набирать?
Пт, 20.04.2012, 20:43 | Сообщение # 10        
SssaHeKkk
аватар
  Постов: 4131   Друзья 
ну естественно
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » AVR: операции с битами (Все что связано с битами регистров: установка, сброс и т.д.)
  • Страница 1 из 23
  • 1
  • 2
  • 3
  • 22
  • 23
  • »
Поиск:

Форум только для чтения, обсуждение на Shemaforum.ru


Группа вконтакте Канал ютуб Группа в фэйсбук © 2010-2021 "Радиосхемы" Все права защищены Почта Моб.версия