?? sl04.asm
字號:
;********************************************
;*MUSIC按鈕(PC6)控制喇叭(PA3)音樂程序發音。
;*請你增加一首你喜歡的歌曲。
;*AT90S8515 8MHz
;*雙龍電子 www.sl.com.cn
;* liqing 2002.05.08
;********************************************
.include "8515def.inc"
.org $000
rjmp sl04
.def TEMPDH =r2
.def TEMPDL =r3
.def CNT =r10
.def SCNN =r11
.def KEYN =r12
.def SCNK =r13
.def SCNDP =r14
.def KSNI =r15
.def TEMP =r16
.def TEMP1 =r17
.def TEMP2 =r18
.def TEMP3 =r19
.def SCNTT =r26 ;
.def MUSN =r22
.def TONL =r21
.def TONH =r20
.def PLYTON =r25
.def TONSET =r24
.def TONLNG =r23
.cseg
.org 0x06 ;TIM1_OVF定時器1溢出中斷處理入口地址
intt1: RJMP OUTPM ;轉定時器1溢出中斷處理,發音周期到,
;則跳轉到發音輸出態
.cseg ;跳過中斷區
.org 0x010 ;定時器1溢出中斷處理程序。
;發音周期到,重新裝入計數值,并由PC0輸出
OUTPM: OUT TCNT1H,TONH ;重新將TONH新計時值載入TCNT1H內
OUT TCNT1L,TONL ;重新將TONH新計時值載入TCNL1H內
SBIS PORTA,03 ;先檢測PA3是否為1而跳轉
RJMP SETOP1 ;若PA3口為0,則跳轉到SETOP1,令PA3轉為1
SETOP0: CBI PORTA,03 ;若PA3為1,則令PA3轉為1
LDI MUSN,$00 ;同時令MUSN為00值
RETI ;回中斷前主程序,并令可再次中斷返回
SETOP1: SBI PORTA,03 ;若PA3為1,則令PA3轉為1
LDI MUSN,$01 ;同時令MUSN為01值
RETI ;回中斷前主程序,并令可再次中斷返回
.cseg
.org 0x020 ;
sl04:
ldi r17,$02 ;棧指針置為$025f
ldi r16,$5f
out sph,r17
out spl,r16
wdr ;在使用看門狗計時器前需重設看門狗計時器
ldi temp,$0F ;WDTCR地址$21設定以TEMP緩沖,令WDE=D3=1
out WDTCR,temp ;并令預除為2048ms,設定WDE=D3=1,輸出到WDTCR內
LDI MUSN,$00 ;令MUSN為00值
ldi temp,$00 ;令TEMP暫存器放入00
OUT TCCR1A,TEMP ;將TEMP=00輸出到TCCR1A內,禁止比較器及PWM動作
OUT TCCR1B,TEMP ;將TEMP=00輸出到TCCR1A內,停止TC1計時及捕捉
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -