[MCU] Микроконтроллеры. Игрушки для взрослых
Вот как развлекаются студенты СГАУ специальности "Автоматизированные Системы Обработки и Управления": Практическое изучение микроконтроллеров всегда нужно начинать с зажигания светодиодов :)Технические детали:
Микроконтроллер: ATmega8535
Частота тактирования по умолчанию: 1 MHz
Количество ножек: 40
Использовано ножек: 10 (1 - GND, 1 - VCC, 8 - PORT A)
Исходный код:
.include "C:\VMLAB315\include\m8535def.inc"
reset:
rjmp start
reti ; Addr $01 ; вектора прерываний
reti ; Addr $02 ; (у нас прерывания не используются)
reti ; Addr $03
reti ; Addr $04
reti ; Addr $05
reti ; Addr $06
reti ; Addr $07
reti ; Addr $08
reti ; Addr $09
reti ; Addr $0A
reti ; Addr $0B
reti ; Addr $0C
reti ; Addr $0D
reti ; Addr $0E
reti ; Addr $0F
reti ; Addr $10
reti ; Addr $11
reti ; Addr $12
reti ; Addr $13
reti ; Addr $14
; Program starts here after Reset
;
start:
SBI ACSR, ACD ; выключаем аналоговый компаратор
ldi r16, 0b11111111
out ddra, r16 ; устанавливаем все ножки порта A на вывод
ldi r16, 0b00000001 ; выставляем в единичку младший бит регистра R16
out porta, r16 ; выводим R16 в порт A
forever:
;Формируем задержку приблизительно в 50 миллисекунд
;(частота тактирования = 1МГц)
;Задержка(сек) = Кол-во тактов / Частота(тактов/сек)
;Кол-во тактов = задержка(сек) * 1000000
;Для задержки в 50мс (0.050 с) нужно выполнить 0.050*1000000 = 500000 операций
LDI R17, 65
LDI R18, 245
BigDelay0:
DEC R18
BRNE BigDelay0
DEC R17
BRNE BigDelay0
rol r16 ; сдвигаем циклически содержимое регистра R16
out PORTA, r16 ; выводим R16 в порт A
rjmp forever ; прыг на начало цикла
Комментариев: (4)
27.04.2011


Постов: 3
Комментарий #4 от : Tue June 14, 2011, 14:19:02