黄金会员
主题
帖子
积分6701
阅读权限40
注册时间2011-3-11
最后登录1970-1-1
在线时间 小时
|
楼主 |
发表于 2016-3-18 20:26
|
显示全部楼层
本帖最后由 pla155 于 2016-3-28 19:50 编辑
第一个AVR程序调试成功!!!
/*
* LED.asm
*
* Created: 2016/3/28 19:18:40
* Author: Administrator
*/
.include "m48def.inc" ;包含atmelage48定义文件
.org $0000 ;上单复位后第一条执行语句地址
rjmp reset ;第一条语句跳转到程序入口,跳过中断向量区
.org $002A ;主程序入口地址
reset: ;主程序标识符
ldi r20,high(RAMEND) ;high获取RAMEND高字节的立即数,将立即数装入r20
out sph,r20 ;将获取到的堆栈高字节立即数送堆栈寄存器SP高字节中
ldi r20,low(RAMEND) ;low获取RAMEND低位立即数,将立即数装入r20
out spl,r20 ;将获取到的堆栈低字节立即数送堆栈寄存器SP低字节中
ser r16 ;将temp1置位,等于是将temp1设置为0b11111111
sec ;将C标志位设置为1,下面将带进位位移
out ddrb,r16 ;将端口C全部设置为输出模式
out portb,r16 ;将引脚C全部设置为高电平,即全部熄灭
loop: ;循环闪烁
ldi r17,0b00001000
out portb,r17
ldi r20,80
rcall delay
ldi r17,0b00010000
out portb,r17
ldi r20,80
rcall delay
rjmp loop
delay:
push r20
del3:push r20
del2:push r20
del1:dec r20
brne del1
pop r20
dec r20
brne del2
pop r20
dec r20
brne del3
pop r20
ret
走马灯,2个LED灯交替闪烁。
|
|