⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_5_1.asm

📁 CVAVR完整程序
💻 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 + -