Конспект лекций по курсам "Проектирование центральных и периферийных устройств ЭВС", "Микропроцессоры и ЭВМ в микросистемах". Лукьяненко Е.Б. - 47 стр.

UptoLike

Составители: 

.nolist
.include “…\tn2313def.inc”
.list
.def tmp=r16
def Delay1=r17
def Delay2=r18
def Delay3=r19
.cseg
.org 0
rjmp Reset
Reset:
ser tmp
out DDRB,tmp ; B0…B7 – выходы
out DDRD,tmp ; D0…D7 – выходы
ldi tmp,0b00000001 ; включаем 1-й светодиод
Out PortB,tmp
; обработка длительности свечения
Start:
Ldi delay1,0x00
Ldi delay2,0x35
Ldi delay3,0x0C
Loop:
subi delay1,1 ; вычитаем 1 из delay1
sbci delay2,0 ; вычитаем 1 из delay2, если флаг С=1
sbci delay3,0 ; вычитаем 1 из delay3, если флаг С=1
brcc loop
; меняем светодиод
In tmp,PortB ; считываем число из порта В (00000001)
Lsl tmp ; сдвиг влево (00000010)
Brcc PC+2 ; переход, если сброшен флаг переноса
Ldi tmp,0b00000001
Out PortB,tmp
Rjmp Start
2.15. Подпрограммы
Встречаются случаи, когда из разных мест программы необходимо выполнить
одно и то же действие. Тогда это действие удобно записать как подпрограмму с
соответствующей меткой. Пусть требуется в программе периодически запускать
двигатель. Тогда в главной программе вставляем команду rcall с соответствую-
щей меткой, которая и будет запускать каждый раз двигатель (рис. 37).
47