buzzer equ p2.4
KEY EQU P3.7
org 00h ;主程序起始地址
jmp start ;跳動主程序
org 0bh ;timer0中斷起始地址
jmp tim0 ;跳至timer0在mode1
start: MOV tmod,#00000001b ;設timer0在mode1
MOV ie,#10000010b ;中斷使能
jb KEY,$ ;第一次按to?
call delay1 ;消除抖動
jnb KEY,$ ;to放開?
MOV 31h,#00 ;按to次數計數指針初值為00h
start0:
MOV 30h,#low song ;取簡譜碼指針(第1首)
next: MOV a,30h
MOV dptr,#table
MOV c a,@a+dptr ;至相關頁碼,高4位為音符的高低
MOV r2,a ;低4位為音符的節拍
jz end0 ;檢查簡譜碼是否已結束(有無00?)
anl a,#0fh ;取節拍(低4位)
MOV r5,a ;存入r5,節拍的時間
MOV a,r2
swap a
anl a,#0fh ;取音頻值(高4位)
jnz sing ;是否為0,是0則不發音
clr tr0
jmp d1
sing: dec a ;因0不列入
MOV 22h,a ;存入(22h)
rl a ;乘2
MOV dptr,#table
MOV c a,@a+dptr ;至table取碼,取t的值
MOV th0,a ;取到的高位字節存入th0
MOV 21h,a ;取到的高位字節存入(21h)
MOV a,22h ;再載入取到的音符碼
rl a ;乘2
inc a ;加1
MOV c a,@a+dptr ;至table取相對的低位字節計數值
MOV tl0,a ;取到的低位字節存入tl0
MOV 20h,a ;取到的低位字節存入(20h)
setb tr0 ;啟動timer0
d1: call delay
inc 30h ;取簡譜碼指針加1
jmp next
end0: clr tr0 ;停止計數器
MOV a,31h ;載入計次指針
xrl a,#00h ;是否按第1次?
jnz end1 ;不是則跳至end1
jb KEY,$ ;按第2次?
call delay1 ;消除抖動
jnb KEY,$ ;放開否?
inc 31h ;計次地址(31h)加1
MOV 30h,#low song1 ;第2首歌指針
jmp next
end1:
MOV a,31h ;載入計次指針
xrl a,#01h ;是否按第2次?
jnz end2 ;不是則跳至end2
jb KEY,$ ;按第3次?
call delay1 ;消除抖動
jnb KEY,$ ;放開否?
inc 31h ;計次地址(31h)加1
MOV 30h,#low song2 ;第3首歌指針
jmp next
end2:
MOV a,31h ;載入計次指針
xrl a,#02h ;是否按第3次?
jnz end3 ;不是則跳至end3
jb KEY,$ ;按第4次?
call delay1 ;消除抖動
jnb KEY,$ ;放開否?
inc 31h ;計次地址(31h)加1
MOV 30h,#low song3 ;第4首歌指針
jmp next
end3:
MOV a,31h ;載入計次指針
xrl a,#03h ;是否按第4次?
jnz end4 ;不是則跳至end4
jb KEY,$ ;按第5次?
call delay1 ;消除抖動
jnb KEY,$ ;放開否?
inc 31h ;計次地址(31h)加1
MOV 30h,#low song4 ;第5首歌指針
jmp next
end4:
MOV a,31h ;載入計次指針
xrl a,#01h ;是否按第5次?
jnz end5 ;不是則跳至end2
jb KEY,$ ;按第6次?
call delay1 ;消除抖動
jnb KEY,$ ;放開否?
inc 31h ;計次地址(31h)加1
MOV 30h,#low song5 ;第6首歌指針
jmp next
end5:
jmp start ;回到第1次位置
tim0: push aCC ;將a的值暫存于堆棧
push psw ;將psw的值暫存于堆棧
setb rs0 ;設工作寄存器庫1,rs0=1,rs1=0
clr rs1
MOV tl0,20h ;重設計數值
MOV th0,21h
cpl buzzer ;將p10位反相
clr rs0
pop psw ;至堆棧取回psw的值
pop acc ;至堆棧取回a的值
reti ;返回主程序
delay: MOV r7,#02 ;125秒
d2: MOV r4,#125
d3: MOV r3,#248
djnz r3,$
djnz r4,d3
djnz r7,d2
djnz r5,delay ;決定節拍
ret
delay1: MOV r4,#20
d4: MOV r3,#248
djnz r3,$
djnz r4,d4
ret
org 300h
table:
dw 64260,64400,64524,64580
dw 64684,64777,64820,64898
dw 64968,65030,65058,65110
dw 65157,65178,65217
song: ;第一首歌 哈 巴 狗
;1
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
;2
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
db 00h
song1: ;第2首歌 生 日 快 樂
;1
db 82h,01h,81h,94h,84h
db 0b4h,0a4h,04h
db 82h,01h,81h,94h,84h
db 0c4h,0b4h,04h
;2
db 82h,01h,81h,0f4h,0d4h
db 0b4h,0a4h,94h
db 0e2h,01h,0e1h,0d4h,0b4h
db 0c4h,0b4h,04h
db 00h
song2: ;第3首歌 不 倒 翁
;1
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
;2
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
db 00h
song3: ;第4首歌 妹妹背著洋娃娃
;1
db 84h,02h,82h,64h,54h
db 64h,54h,48h
db 64h,02h,52h,44h,24h
db 14h,24h,18h
;2
db 24h,02h,22h,42h,24h
db 44h,54h,68h
db 54h,02h,52h,84h,84h
db 54h,64h,48h
db 00h
song4: ;第5首歌 兩只老虎
;1
db 44h,54h,64h,44h
db 44h,54h,64h,44h
db 64h,74h,88h
db 64h,74h,88h
;2
db 82h,92h,82h,72h,64h,44h
db 82h,92h,82h,72h,64h,44h
db 44h,84h,48h
db 44h,14h,48h,00H
song5: ;第6首歌 三只小貓
;1
db 62h,82h,82h,62h,98h
db 92h,0b2h,0b2h,82h,98h
db 62h,82h,82h,52h,68h
db 92h,0b2h,0b2h,82h,98h
;2
db 62h,82h,82h,62h,92h,92h,94h
db 92h,0b2h,0b2h,92h,84h,94h
db 0b8h,0b4h,04h
db 00h
end
89c51六首歌曲的音樂門鈴程序
上一篇:TIMER0在MODE0下延時時間程序
下一篇:51單片機+18B20顯示程序+74HC164擴展顯示數碼管
推薦閱讀
史海拾趣
隨著電子行業的快速發展和市場競爭的加劇,Catalyst / ON Semiconductor公司面臨著前所未有的挑戰。為了應對這些變革,公司進行了一系列的轉型和調整。公司優化了組織架構和管理流程,提高了運營效率;同時,公司還加大了對新興技術的投入和研發力度,以適應市場的不斷變化。
在電子行業的早期,Catalyst / ON Semiconductor公司由一群富有遠見和熱情的工程師創立。他們看到了半導體技術在電子領域的巨大潛力,并決定投身于這一新興的產業。初創時期,公司面臨著資金短缺、技術難題和市場接受度低等多重挑戰。然而,憑借團隊成員的堅持不懈和勇于創新的精神,他們成功開發出了幾款具有競爭力的半導體產品,并逐漸在市場上獲得了一席之地。
隨著技術的不斷進步,Catalyst / ON Semiconductor公司逐漸在半導體領域取得了重要的技術突破。公司投入大量資源進行研發,成功開發出了一系列高性能、低功耗的半導體產品,這些產品在市場上受到了廣泛的歡迎。這些技術突破不僅提升了公司的市場競爭力,也為整個電子行業的發展注入了新的活力。
品質一直是Anachip公司非常重視的一環。為了確保產品的穩定性和可靠性,公司建立了嚴格的品質管理體系,從原材料采購到生產過程的每一個環節都進行嚴格控制。同時,公司還加大了品牌建設的力度,通過廣告宣傳、贊助活動等方式提升品牌知名度。這些舉措不僅提升了公司的市場競爭力,也贏得了客戶的信任和忠誠。
進入20世紀60年代,ERNI開始關注連接器技術的發展。他們意識到,隨著電子設備的日益復雜和多樣化,對連接器技術的需求也將不斷增長。因此,ERNI投入大量資源進行研發,終于在1967年成功開發出第一個背板連接器,這一創新技術迅速成為公司的核心產品,也為ERNI在連接器市場贏得了聲譽。
隨著全球對環境保護問題的日益關注,GD Rectifiers Ltd積極響應并踐行綠色環保理念。公司投入大量資源進行綠色產品的研發和生產,推出了一系列符合環保標準的整流器產品。這些產品不僅具有高效、節能的特點,還大幅降低了生產和使用過程中的環境污染。同時,公司還加強了對廢棄物的處理和回收利用工作,努力實現生產全過程的綠色化。GD Rectifiers Ltd的環保行動贏得了社會各界的廣泛贊譽和支持,為公司的可持續發展奠定了堅實基礎。
書名:MOTOROLA J, K系列廉價單片機原理及應用 作者:余永權/林偉 出版社:北京航空航天大學出版社 頁數:217 出版日期:1998-12-1 簡介:單片機在工業控制、汽車、儀器、家用電器、玩具、計算機外部設備、航空航天、交通運輸、通信等領域都有廣泛的 ...… 查看全部問答∨ |
關于“U1050: Required macro SOURCES=。。。”的錯誤 具體情況如下,我在顯示驅動代碼實現中調用背光驅動,顯示驅動代碼中導入了背光驅動的LIB文件,后面具體調用過程省略。 #include "VGAoutpch.h" #include "CH702X.h" #include "bsp_backlight.h" #pragma comment(lib,"backlight ...… 查看全部問答∨ |
小弟剛找到份工作 接到一個任務 BOSS給了塊SIM300實驗板 讓我看AT命令 還讓我用C程序實現撥通這個實驗板 其實我還不是很明白我要做什么 又該是如何實現呢 望大蝦不惜賜教~… 查看全部問答∨ |
|
本帖最后由 ddllxxrr 于 2016-1-7 17:12 編輯 本站強薦:185娛樂x城.足球x真_人.彩票齊全x手機可投x注任何游戲. 首次開戶送10元.首存送58元.信譽絕對保證185.cc … 查看全部問答∨ |
|
硬件狀況:開發板一塊,自制板卡一塊 調試情況說明:串口配置如下: USART_ClockInitStructure.USART_Clock = USART_Clock_Disable; USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; USART_ ...… 查看全部問答∨ |
|
#include <msp430g2231.h> unsigned int a=0,p=1; void delay(int x) { int i,j; for(i=0;i<=x;i++) for(j=0;j<=x;j++); } void initial() { &nb ...… 查看全部問答∨ |
printf 和scanf函數是C語言中最常用的輸入出函數,從學習C語言開始,就開始使用這兩個函數,然而當寫用C語言寫單片機程序時卻不能使用這兩個函數,總覺得單片機的C語言和一般的C語言差別很大,寫起來不大方便;其實,單片機的C語言也是標準C語言上 ...… 查看全部問答∨ |