專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

avr單片機流水燈匯編程序及電路圖

作者:huqin   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年03月17日   【字體:


這是電路圖
 

本程序使用的avr單片機型號是m16 實現(xiàn)流水燈效果
下面是匯編程序源碼:
 

/*
 * LEDlight.asm
 * 運行環(huán)境  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 ;上單復位后第一條執(zhí)行語句地址
rjmp reset ;第一條語句跳轉到程序入口,跳過中斷向量區(qū)
.org $002A ;主程序入口地址
reset: ;主程序標識符
ldi r20,high(RAMEND) ;high獲取RAMEND高字節(jié)的立即數(shù),將立即數(shù)裝入r20
out sph,r20 ;將獲取到的堆棧高字節(jié)立即數(shù)送堆棧寄存器SP高字節(jié)中
ldi r20,low(RAMEND) ;low獲取RAMEND低位立即數(shù),將立即數(shù)裝入r20
out spl,r20 ;將獲取到的堆棧低字節(jié)立即數(shù)送堆棧寄存器SP低字節(jié)中
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: ;循環(huán)閃爍
out portc,count ;通過count來判斷
rcall delay                                        ;調用延時函數(shù)
rol count                                        ;帶進位循環(huán)左移            前面sec將標志位C設置為了1,即移位后填充為1
rjmp loop                                          ;集訓循環(huán)閃爍

 

 
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
關閉窗口

相關文章