×
单片机 > 单片机程序设计 > 详情

avr单片机流水灯汇编程序及电路图

发布时间:2020-06-02 发布时间:
|

这是电路图
 

本程序使用的avr单片机型号是m16 实现流水灯效果
下面是汇编程序源码:
 

/*
 * LEDlight.asm
 * 运行环境  atmelage16 4M晶振 流水灯共阳极
 * 由于引脚输出电流20mA  输入电流最大能达到40mA
 *  Created: 2014/3/13 13:08:20
 *   Author: Wujie
 */ 
 .include "m16def.inc" ;包含atmelage16定义文件
 .def     temp1=r16 ;定义标识符temp1表示寄存器r16
 .def     count=r17 ;定义标识符count表示寄存器r17

 
.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 temp1 ;将temp1置位,等于是将temp1设置为0b11111111
sec ;将C标志位设置为1,下面将带进位位移
out ddrc,temp1 ;将端口C全部设置为输出模式
out portc,temp1 ;将引脚C全部设置为高电平,即全部熄灭
ldi r20,197 ;设置1秒延时
 
ldi count,0b01111111 ;将最左边LED点亮

 
loop: ;循环闪烁
out portc,count ;通过count来判断
rcall delay                                        ;调用延时函数
rol count                                        ;带进位循环左移            前面sec将标志位C设置为了1,即移位后填充为1
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
关键字:avr单片机  流水灯  汇编程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单