?? sl09.asm
字號(hào):
;********************************************
;*按鍵音樂(lè)程序。請(qǐng)你演奏一首你喜爰的樂(lè)曲。
;*按鍵發(fā)音符聲,可記錄按鍵情況,并能演奏出用戶(hù)所彈的樂(lè)曲。
;*AT90S8515 8MHz
;*雙龍電子 www.sl.com.cn
;* liqing 2002.05.08
;********************************************
.include "8515def.inc"
.org $000
rjmp sl09 ;跳過(guò)中斷區(qū)
.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定時(shí)器1溢出中斷處理入口地址
intt1: RJMP OUTPM ;轉(zhuǎn)定時(shí)器1溢出中斷處理,發(fā)音周期到,
;則跳轉(zhuǎn)到發(fā)音輸出態(tài)
.cseg
.org 0x010 ;定時(shí)器1溢出中斷處理程序。
;發(fā)音周期到,重新裝入計(jì)數(shù)值,并由PC0輸出
OUTPM: OUT TCNT1H,TONH ;重新將TONH新計(jì)時(shí)值載入TCNT1H內(nèi)
OUT TCNT1L,TONL ;重新將TONH新計(jì)時(shí)值載入TCNL1H內(nèi)
SBIS PORTA,3 ;先檢測(cè)PA3是否為1而跳轉(zhuǎn)
RJMP SETOP1 ;若PA3口為0,則跳轉(zhuǎn)到SETOP1,令PC0轉(zhuǎn)為1
SETOP0: CBI PORTA,3 ;若PA3為1,則令PA3轉(zhuǎn)為1
LDI MUSN,$00 ;同時(shí)令MUSN為00值
RETI ;回中斷前主程序,并令可再次中斷返回
SETOP1: SBI PORTA,3 ;若PA3為1,則令PA3轉(zhuǎn)為1
LDI MUSN,$01 ;同時(shí)令MUSN為01值
RETI ;回中斷前主程序,并令可再次中斷返回
.cseg
.org 0x020 ;
sl09:
ldi r17,$02 ;棧指針置為$025f
ldi r16,$5f
out sph,r17
out spl,r16
wdr ;在使用看門(mén)狗計(jì)時(shí)器前需重設(shè)看門(mén)狗計(jì)時(shí)器
ldi temp,$0F ;WDTCR地址$21設(shè)定以TEMP緩沖,令WDE=D3=1
out WDTCR,temp ;并令預(yù)除為2048ms,設(shè)定WDE=D3=1,輸出到WDTCR內(nèi)
LDI MUSN,$00 ;令MUSN為00值
ldi temp,$00 ;令TEMP暫存器放入00
OUT TCCR1A,TEMP ;將TEMP=00輸出到TCCR1A內(nèi),禁止比較器及PWM動(dòng)作
OUT TCCR1B,TEMP ;將TEMP=00輸出到TCCR1A內(nèi),停止TC1計(jì)時(shí)及捕捉
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -