?? 鍵控看門(mén)狗演示.avr
字號(hào):
;鍵控看門(mén)狗演示程序(入門(mén)練習(xí))
;----------------------------------
;實(shí)驗(yàn)系統(tǒng):ME300全系列單片機(jī)開(kāi)發(fā)板。
;實(shí)驗(yàn)芯片: ATmega8515L或Atmega8515
;工作頻率: 8MHz
;作者:偉納電子 Gguoqing
;出處:偉納電子網(wǎng)站 www.willar.com
------------------------------------
;功能:
;開(kāi)機(jī)時(shí),P0.1、P0.0引腳上的LED燈閃爍發(fā)光。
;按K1鍵,激活看門(mén)狗后,喂狗,P0.7、P0.6引腳上的LED閃爍發(fā)光。
;按K2鍵,進(jìn)入不喂狗程序,則程序復(fù)位,P0.1、P0.0引腳上的LED閃爍發(fā)光。
;------------------------------------
;匯編程序:
;-----------------------------------------------------------
;工作芯片:ATmega8515L
;工作頻率8MHz
;-----------------------------------------------------------
.INCLUDE "8515DEF.INC" ;CPU配置文件
.ORG $0000
RJMP RESET ;上電復(fù)位跳轉(zhuǎn)到主程序
.ORG $007 ;T/C0溢出中斷
RJMP TOVF0
.ORG $010
RESET:
LDI R16,LOW(RAMEND) ;設(shè)置堆棧指針
OUT SPL,R16
LDI R16,HIGH(RAMEND)
OUT SPH,R16
LDI R16,$FF ;設(shè)置PA口為輸出端口
OUT DDRA,R16
LDI R16,$0F ;
OUT DDRB,R16 ;PB口高4位作輸入
LDI R16,$FF
OUT PORTB,R16 ;接通輸入引腳內(nèi)部上拉電阻
LOOP:
LDI R16,$FF
OUT PORTA,R16
RCALL DELAY
LDI R16,$FC
OUT PORTA,R16
RCALL DELAY
LDI R16,$FF
OUT PORTA,R16
RCALL DELAY
SBIS PINB,4 ;若PINB4=1,則跨越。
RJMP WDOG ;若PINB4=0,跳到WDOG。(K1=0)
RJMP LOOP
;---------------------------------------------------------------
;看門(mén)狗
;---------------------------------------------------------------
WDOG:
WDR ;WDT使用前先復(fù)位
LDI R20,$09 ;WDTCR中的WDE置1
OUT WDTCR,R20 ;啟動(dòng)WDT,溢出時(shí)限30ms
;---------------------------------------------------------------
;T/C0中斷初始化
;---------------------------------------------------------------
LDI R17,$F0 ;T/C0 初值
OUT TCNT0,R17 ;定時(shí)間隔16ms
LDI R16,$05
OUT TCCR0,R16 ;對(duì)CPU時(shí)鐘進(jìn)行1024分頻
LDI R16,$02 ;擬將TOIE0 位置1
OUT TIMSK,R16 ;開(kāi)放TOV0中斷
SEI ;開(kāi)總中斷
LOOP1: RJMP LOOP1
;-----------------------------------------------------------------
;T0中斷子程序
;-----------------------------------------------------------------
TOVF0:
LDI R16,$00 ;擬將TOIE0 位置0
OUT TIMSK,R16 ;關(guān)閉TOV0中斷
SBIS PINB,5 ;若PINB5=1,則跨越。
RJMP LOOP2 ;若PINB5=0,跳到LOOP2。(K2=0)
LDI R17,$F0 ;T/C0 初值
OUT TCNT0,R17 ;定時(shí)間隔16ms
LDI R16,$3F
OUT PORTA,R16
RCALL DELAYA
LDI R16,$FF
OUT PORTA,R16
RCALL DELAYA
LDI R16,$02 ;擬將TOIE0 位置1
OUT TIMSK,R16 ;開(kāi)放TOV0中斷
RETI
LOOP2:
LDI R16,$00 ;擬將TOIE0 位置0
OUT TIMSK,R16 ;關(guān)閉TOV0中斷
RJMP LOOP2 ;等待看門(mén)狗復(fù)位
RET
;----------------------------------------------------------------
;若R17初值為1,則延時(shí)總計(jì)25ms左右。
;晶振頻率為8MHz。
;----------------------------------------------------------------
DELAY:
LDI R17,$03
CLR R18
CLR R19
DELAY1:
DEC R18
BRNE DELAY1
DEC R19
BRNE DELAY1
DEC R17
BRNE DELAY1
RET
DELAYA:
LDI R17,$03
CLR R18
CLR R19
DELAY1A:
DEC R18
BRNE DELAY1A
WDR ;看門(mén)狗復(fù)位指令
DEC R19
BRNE DELAY1A
DEC R17
BRNE DELAY1A
RET
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -