BUZZER EQU P2.4
org 0000h ;主程序起始地址
ajmp main ;跳至主程序
org 000bh ;timer0中斷起始地址
jmp tim0 ;跳至timer0中斷子程序
org 0030h
main:
MOV tmod,#01h ;設timer0在MODE1
MOV ie,#82h ;中斷使能
checkkey:
lcall key ;8ms when no key pressed.
cpl a
jz checkkey
MOV a,34h
cjne a,#0ah,checkkey
ajmp start0
start0:
MOV 30h,#00h ;取簡譜碼指針
next:
lcall key ;8ms when no key pressed.
cpl a
jz begm
MOV a,34h
cjne a,#0bh,begm
ajmp end0
begm:
MOV a,30h ;簡譜碼指針載入A
MOV dptr,#table ;至table取簡譜碼
MOV c a,@a+dptr
MOV r2,a ;取到的簡譜碼暫存于R2
jz end0 ;是否取到00(結束碼)?
anl a,#0fh ;不是,則取低4位(節拍碼)
MOV r5,a ;將節拍碼存入R5
MOV a,r2 ;將取到的簡譜碼再載入A
swap a ;高低四位交換
anl a,#0fh ;取低四位(音符碼)
jnz sing ;取到的音符碼是否為零?
clr tr0 ;是,則不發音
jmp d1
sing: dec a ;取到的音符碼減1(不含0).
MOV 22h,a ;存入(22H).
rl a ;乘2
MOV dptr,#table1 ;至table1取相對的高位字節計數值
MOV c a,@a+dptr
MOV th0,a ;取到的高位字節存入TH0
MOV 21h,a ;取到的高位字節存入(21H)
MOV a,22h ;再載入取的的音符碼
rl a ;乘2
inc a ;加1
MOV c a,@a+dptr ;至table1取相對的低位字節計數值
MOV tl0,a ;取到的高位字節存入TL0
MOV 20h,a ;取到的高位字節存入(20H)
setb tr0 ;啟動timer0
d1: call delay ;基本單位時間1/4拍187毫秒
inc 30h ;取簡譜碼指針加1
jmp next ;取下一個碼
end0: clr tr0 ;停止timer0
jmp checkkey ;重復循環
tim0:
push aCC ;將A的值暫存于堆棧
push psw ;將psw的值暫存于堆棧
MOV tl0,20h ;重設計數值
MOV th0,21h
cpl BUZZER ;將蜂鳴器反相
pop psw ;至堆棧取回psw的值
pop acc ;至堆棧取回a的值
reti ;返回主程序
delay: MOV r7,#02h ;187毫秒
d2: MOV r4,#187
d3: MOV r3,#248
djnz r3,$
djnz r4,d3
djnz r7,d2
djnz r5,delay ;決定節拍
ret
KEY: LCALL KS
JNZ K1
ljmp key_exit
K1: LCALL delay4ms
LCALL delay4ms
LCALL KS
JNZ K2
ljmp key_exit
K2: MOV R2,#0EFH
MOV R4,#00H
K3: MOV P1,R2
L6: JB P1.0,L1
MOV A,#00H
AJMP LK
L1: JB P1.1,L2
MOV A,#04H
AJMP LK
L2: JB P1.2,L3
MOV A,#08H
AJMP LK
L3: JB P1.3,NEXT1
MOV A,#0cH
LK: ADD A,R4
MOV 34h,a
K4: ;LCALL delay4ms
; lcall display
; LCALL KS
; JNZ K4
RET
NEXT1:
INC R4
MOV A,R2
JNB ACC.7,key_exit
RL A
MOV R2,A
AJMP K3
key_exit:
MOV a,#0ffh
ret
KS: MOV P1,#0FH
MOV A,P1
XRL A,#0FH
RET
delay4ms: ;4ms
MOV R5,#08H
L7: MOV R6,#0FAH
L8: DJNZ R6,L8
DJNZ R5,L7
RET
table1:
dw 64260,64400,64524,64580
dw 64684,64777,64820,64898
dw 64968,65030,65058,65110
dw 65157,65178,65217
table:
;1
db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
;2
db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h
;3
db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
;4
db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00
end
實現按鍵蜂鳴器演奏歌曲功能,按“A”鍵開始播放,按“B”鍵停止播放.
上一篇:超聲波測距測溫的工作原理
下一篇:TIMER0在MODE0下延時時間程序
推薦閱讀
史海拾趣
面對日新月異的電子行業發展趨勢,Antex公司始終保持敏銳的市場洞察力和創新精神。公司積極推進技術開發、設備強化,不斷探索新的生產技術和應用領域。同時,Antex還注重人才培養和團隊建設,為公司的未來發展儲備了豐富的人才資源。
這些故事只是Antex公司發展歷程中的一部分,它們展示了公司在電子行業中的不斷努力和追求卓越的精神。未來,隨著技術的不斷進步和市場的不斷變化,Antex將繼續保持創新和發展,為電子行業的繁榮做出更大的貢獻。
請注意,以上內容僅為概述,并未詳細展開每個故事的每一個細節。如果需要更具體、更詳細的故事,建議查閱Antex公司的官方資料或相關新聞報道,以獲取更準確、更全面的信息。
背景:在電子產品市場競爭日益激烈的背景下,Galaxy深知技術創新和品質提升的重要性。為了進一步提升產品性能,公司決定尋求與行業頂尖廠商的合作。
行動:Galaxy與瑞士著名散熱器廠商“Arctic Cooling”建立了戰略合作伙伴關系,共同推出了備受矚目的影馳GeForce6系列產品。這款產品在散熱性能上實現了重大突破,為用戶帶來了更加穩定、高效的使用體驗。
成果:憑借出色的性能和口碑,影馳GeForce6系列產品迅速在市場上走紅,不僅鞏固了Galaxy在顯卡市場的領先地位,還極大地提升了公司在行業內的影響力。
背景:在21世紀初,Galaxy公司憑借其在電子產品領域的深厚積累,決定進一步拓展國際市場。通過詳細的市場調研,公司發現歐洲市場潛力巨大,特別是對高質量電子產品的需求日益增長。
行動:于是,Galaxy在波蘭Cracow成立了歐洲分公司,地處歐洲中部,這一地理位置使其能夠很好地覆蓋整個歐洲大陸,包括東部和西部的國家。該分公司不僅作為銷售中心,還承擔起返修件回收處理的重任,確保客戶能夠享受到無時區差別的銷售和維修服務。
成果:這一戰略部署顯著提升了Galaxy在歐洲市場的知名度和競爭力,市場份額逐年攀升,為公司的全球化進程奠定了堅實基礎。
Boyd Corporation在追求經濟效益的同時,也積極履行社會責任。公司注重環保和可持續發展,通過采用環保材料和節能技術,減少生產過程中的環境污染和資源消耗。此外,Boyd Corporation還積極參與公益事業和慈善活動,回饋社會。這些舉措使得Boyd Corporation在社會上樹立了良好的企業形象,也贏得了更多客戶的信任和支持。
設計人員在考慮無源器件時,他們想到的是電感電容的生產容限,一般為± 20% 或±10%。這在理論上是對的,但在實際應用中卻不然。本文介紹電容電感易受影響的一些參數以及系統設計人員必須了解的知識,并討論如何為最小但最高效的便攜式電源系統解決 ...… 查看全部問答∨ |
請問,上面圖形中的R1是如何取值的,是不是110V/穩壓管1N4742的電流,那穩壓管1N4742的電流又該是多少? 還有,確定R1后,穩壓管的電流即可確定,那后面三極管的基級電流又是多少? 還有,就是如何確定三極管集電極中的R2,據我分析,R2必須要同時滿足 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 09:19 編輯 談談TTL和CMOS電平 TTL——Transistor-Transistor Logic HTTL——High-speed TTL LTTL——Low-power TTL STTL——Schottky TTL LSTTL——Low-power Schottky TTL ASTTL——Advanced Schot ...… 查看全部問答∨ |
|
wince上能否實現對文件屬性控制? 如c#中的 FileInfo fi = new FileInfo(textBox1.Text); fi.IsReadOnly == false… 查看全部問答∨ |
|
如題。 要做一個用于圖像顯示的手持設備,用于顯示照片的,帶有簡單的邏輯(如搜索)和網絡功能(下載數據)。 需要怎樣的硬件構成?arm7行嗎?wifi?還需要哪些?電路板需要哪些功能?越詳細越好。謝謝?!? 查看全部問答∨ |
|
最近公司里,有個大的程序需要我去熟悉,這個程序是別人的程序,而且已經可以應用了,沒有出現什么問題...... 現在我想去了解和調試這個程序,但不知道怎么去調試,因為程序很大,第一次接觸大的程序,而且單片機也接觸的時間不太長. 希望,在這個 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- EEWorld十五周年,感恩同行!盤點那些難忘的小確幸~
- 嵌入式Rust修煉營直播(第二場):MCU上電后,Rust代碼啟動流程解析
- 是德科技服務日研討會|武漢站——邀請函
- Sitara™ AM335x ARM® Cortex™-A8 團購
- Microchip直播:單片機編程不再難, 利用MPLAB®代碼配置器(MCC)實現快速開發
- Digi-key干貨視頻教程來襲,意見領袖講解疑難設計問題,帶你突破成長瓶頸~
- 【備戰國賽】超多電賽干貨資料等你下載!蓋樓助力電賽贏積分
- 報名贏【掛燈、浴巾】等好禮|TI MSPM0家用電器和電機控制應用詳解
- 下載有禮:4種方法幫助您高效進行元器件表征,加速元器件檢測