📄 demo_5_1.asm
字号:
;AVR汇编程序实例: demo_5_1.asm
.include "m16def.inc" ;包括器件配置定义文件,不能缺少
.def temp1=r20 ;定义寄存器R20用临时变量名temp1代表
.org $0000 ;上电复位启始地址
rjmp reset ;转上电复位后的初始化程序执行
;中断向量区
.org $002A ;跳过中断向量区
reset: ldi r16,high(RAMEND) ;取内部RAM最高地址的高位字节
out sph,r16 ;放入SP的高位
ldi r16,low(RAMEND) ;取内部RAM最低地址的低位字节
out spl,r16 ;放入SP的低位,SP中的值见器件配置文件"m16def.inc"
ser temp1 ;置temp1(R20)为0XFF
out ddrc,temp1 ;定义PC口为输出
out portc,temp1 ;PC口输出全"1",LED不亮
ldi r16,197 ;设置一秒延时参数
loop: cbi portc,0 ;值PORTC.0位为"0",LED亮
rcall delay ;调用延时子程序,延时一秒
sbi portc,0 ;值PORTC.0位为"1",LED灭
rcall delay ;调用延时子程序,延时一秒
rjmp loop ;循环跳转到loop继续执行
;通用延时子程序
delay: push r16 ;压栈(2t)
del1: push r16 ;压栈(2t)
del2: push r16 ;压栈(2t)
del3: dec r16 ;r16 = r16 - 1,(1t)
brne del3 ;不为0跳转移,为0顺序执行(2t/1t)
pop r16 ;出栈(2t)
dec r16 ;r16 = r16 - 1,(1t)
brne del2 ;不为0跳转移,为0顺序执行(2t/1t)
pop r16 ;出栈(2t)
dec r16 ;r16 = r16 - 1,(1t)
brne del1 ;不为0跳转移,为0顺序执行(2t/1t)
pop r16 ;出栈(2t)
ret ;子程序返回(4t)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -