|
轉(zhuǎn)自:http://www.torrancerestoration.com/mcu/2992.html

這是電路圖
/*
* LEDlight.asm
* 運(yùn)行環(huán)境 atmelage16 4M晶振 流水燈共陽(yáng)極
* 由于引腳輸出電流20mA 輸入電流最大能達(dá)到40mA
* Created: 2014/3/13 13:08:20
* Author: Wujie
*/
.include "m16def.inc" ;包含atmelage16定義文件
.def temp1=r16 ;定義標(biāo)識(shí)符temp1表示寄存器r16
.def count=r17 ;定義標(biāo)識(shí)符count表示寄存器r17
.org $0000 ;上單復(fù)位后第一條執(zhí)行語(yǔ)句地址
rjmp reset ;第一條語(yǔ)句跳轉(zhuǎn)到程序入口,跳過(guò)中斷向量區(qū)
.org $002A ;主程序入口地址
reset: ;主程序標(biāo)識(shí)符
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設(shè)置為0b11111111
sec ;將C標(biāo)志位設(shè)置為1,下面將帶進(jìn)位位移
out ddrc,temp1 ;將端口C全部設(shè)置為輸出模式
out portc,temp1 ;將引腳C全部設(shè)置為高電平,即全部熄滅
ldi r20,197 ;設(shè)置1秒延時(shí)
ldi count,0b01111111 ;將最左邊LED點(diǎn)亮
loop: ;循環(huán)閃爍
out portc,count ;通過(guò)count來(lái)判斷
rcall delay ;調(diào)用延時(shí)函數(shù)
rol count ;帶進(jìn)位循環(huán)左移 前面sec將標(biāo)志位C設(shè)置為了1,即移位后填充為1
rjmp loop ;集訓(xùn)循環(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
|
|