单片机怎么实现演奏两首歌(生日快乐+两只老虎) 汇编语言 求51单片机蜂鸣器音乐汇编语言,两只老虎的
\u7528C51\u5355\u7247\u673a\u5982\u4f55\u7f16\u7a0b\u51fa\u4e24\u53ea\u8001\u864e\u8fd9\u9996\u6b4c\u66f2\uff1f\uff08\u8981\u7528C\u8bed\u8a00\u7f16\u7a0b\uff09\u7528T0/T1\uff0c\u4e00\u4e2a\u7528\u4e8e\u9891\u7387\u63a7\u5236\uff08\u97f3\u8c03\uff09\uff0c\u4e00\u4e2a\u63a7\u5236\u65f6\u957f\uff08\u8282\u594f\uff09
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0INT
ORG 0050H
MAIN: MOV TMOD,#01H
MOV IE,#82H
Again: MOV DPTR,#TAB;\u8868\u9996\u5730\u5740
LOOP: CLR A
MOVC A,@A+DPTR
MOV R2,A ;\u65f6\u95f4\u9ad8\u4f4d
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R3,A;\u65f6\u95f4\u4f4e\u4f4d 2
ORL A,R2
JZ STOP
MOV A,R2
ANL A,R3
CJNE A,#0FFH,NEXT
AJMP Again
NEXT: MOV TH0,R2
MOV TL0,R3
SETB TR0
NEXT1: CLR A
INC DPTR
MOVC A,@A+DPTR
MOV P1,A;\u5b57\u5f62\u7801\u663e\u793a 3
CLR A
INC DPTR
MOVC A,@A+DPTR; \u5ef6\u65f6\u5e38\u6570 4
DEL: MOVR5, 2
DEL0: MOVR6 ,#250
DEL1: MOVR7, #248
NOP
DEL2: DJNZR7, DEL2
DJNZR6,DEL1
DJNZR5,DEL0
CLR TR0
INC DPTR;\u4e0b\u4e00\u4e2a\u97f3\u8282
LJMP LOOP
STOP: AJMP NEXT1
T0INT: PUSH A
PUSH PSW
PUSH DPH
PUSH DPL
CPL P3.0;\u97f3\u9891\u53d6\u53cd
MOV TH0,R2
MOV TL0,R3
SETB TR0
POP DPL
POP DPH
POP PSW
POP A
RETI
TAB: DB
\u5728TAB\u540e\u628a\u7b80\u8c31\u6253\u4e0a
numtim equ 20h
EQUei equ 21h
EQUwei equ 22h
EQUnled equ 23h
EQU 000hORGp startJMPg 00bh
jORGtim0
oJMP100h
ORGart:; JB P3.7,$ ;检测播放按键是否按下
mov tmod,#00000001b
MOV mov ie,#10000010b
MOV mov numtim,#01h
startMOVov 30h,#00h
nextMOVv a,30h
mov MOVr,#table
MOVovc a,@a+dptr
mov r2,a
jz eMOV
anl aJZ0fh
mov r5,a
mov aMOV
swap MOV anl a,#0fh
jnz sing
clr tJNZ
jmp d1
sing: dec aJMP mov 22h,DEC rl aMOV mov dptr,#table1
MOVmovc a,@a+dptr
mov th0,a
mov MOV,a
mov MOV2h
rl aMOV inc a
movc a,@INCptr
mov tl0,a
mov MOV,a
setbMOV0
d1:lcall delay
inc 30h
jmp neINC
end0:clr JMP
jmp start0
tim0:puJMPacc
pushPUSH
mov PUSH2PSW
MOV th0,21h
MOV p1.6 ;由该口输出音频数据
pop psw
pop acc
POPrPSW
dPOPy: mov r7,#02h
d2: mov r4,#1MOV
d3: mov r3,#MOV
djnz r3,MOV djnz r4,d3
djnz r7,d2
djnz r5,delay
ret
table1: RET ;音乐码表
dw 64260,64400,64524,64580
DW dw 64684,64777,64820,64898
DW dw 64968,65030,65058,65110
DW dw 65157,65178,65217
table:dDW82h,01h,81h,94h,84h
DB 0b4h,0a4h,04h
db 82hDB1h,81h,94h,84h
DB 0c4h,0b4h,04h
db 8DB,01h,81h,0f4h,0d4h
DBdb 0b4h,0a4h,94h
db 0e2DB01h,0e1h,0d4h,0b4h
DB db 0c4h,0b4h,04h
db 8DB,01h,81h,94h,84h
DB 0b4h,0a4h,04h
db 82hDB1h,81h,94h,84h
DB 0c4h,0b4h,04h
db 8DB,01h,81h,0f4h,0d4h
DBdb 0b4h,0a4h,94h
db 0e2DB01h,0e1h,0d4h,0b4h
DB db 0c4h,0b4h,04h
db 00DB
TABLE2:DB 0C0H,0F9H,DB4H,0B0H,99H,92H,8DB,0F8H,80H,90H
end
END
我只有生日快乐的程序,希望对你有帮助,从我这个程序你了解了原理,你就可以随意搞了,玩熟悉了就简单了!
绛旓細pushPUSH mov PUSH2PSW MOV th0,21h MOV p1.6 ;鐢辫鍙h緭鍑洪煶棰戞暟鎹 pop psw pop acc POPrPSW dPOPy: mov r7,#02h d2: mov r4,#1MOV d3: mov r3,#MOV djnz r3,MOV djnz r4,d3 djnz r7,d2 djnz r5,delay ret table1: RET ;闊充箰鐮佽〃 dw 64260,64400,64524,64580...
绛旓細鏈変袱绉嶆柟娉曪細涓銆佺敤鑴夊啿鎺у埗铚傞福鍣ㄩ鐜囨潵妯′豢闊宠氨锛屾妸闇瑕佺殑鍝ユ洸杞崲鎴愯剦鍐查鐜囩殑鍊锛屼簩銆傜敤璇煶鑺墖锛屾妸鍝ョ儳褰曡繘璇煶鑺墖锛岀劧鍚庣敤鍗曠墖鏈烘帶鍒舵挱鏀惧嵆鍙傝鏄庯細绗竴绉 闇瑕佸鍗曠墖浜嗚В寰楃浉瀵规繁鍏ヤ簺锛岀浜岀寰堢畝鍗曪紝浼氭帶鍒跺崟鐗囨満IO灏卞彲浠ヤ簡銆俉T588璇煶鑺墖灏辫兘瀹炵幇锛屽叿浣撹鐪嬩綘鐨勬澘瀛愮殑灏哄鍜屽畨瑁呬綅缃槸鍚﹀厖瓒...
绛旓細unsigned char timer0h,timer0l,time;//鐢熸棩姝 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2, 6,1,2,4,2,1, 4...
绛旓細12,9, 12,3, 11,12, 9,12, 10,12, 9,24}; //姝岃氨 2涓竴缁(0,0)(闊宠皟,鑺傛媿)void init () //鍒濆鍖 { EA=1;TMOD=0x11;ET0=1;ET1=1;i=0;flag=1;} void sing(){ if(flag==1){ h=song[i];jiep=song[i+1];i=i+2;if(i>46) i=0;hz=fre[h];TH0=(hz)/256...
绛旓細1銆佸啓鍏ュご鏂囦欢銆2銆佸姞鍏ュ畯瀹氫箟銆3銆佷綅瀹氫箟 缁欏嚭铚傞福鍣ㄥ彉閲 beep锛屾帴鍙f槸P2^3銆俿bit beep = P2^3;銆4銆佽璁″欢杩熷嚱鏁帮細void delay(uint z){uint x,y;for(x = z; x > 0; x--)for(y = 60; y > 0 ; y--);} 銆5銆佽璁′富鍑芥暟銆6銆佸姞鍏ュ惊鐜晥鏋滐紝铚傞福鍣ㄣ俠eep = ~beep涓細 ~鎸...
绛旓細//鐢熸棩蹇箰姝岃妭鎷嶈〃锛岃妭鎷嶅喅瀹氭瘡涓煶绗︾殑婕斿闀跨煭 uchar code SONG_LONG[]={9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};//寤舵椂 void DelayMS(uint x){ uchar t;while(x--) for(t=0;t<120;t++);//鎾斁鍑芥暟 void PlayMusic(){ uint i=...
绛旓細鍏跺疄寰堝鏄撶殑鍛傛壘涓涓鍗曠墖鏈鏈灏忕郴缁熸澘鎴栬呭紑鍙戞澘锛岀劧鍚庢帴濂借渹楦e櫒鐢佃矾銆傚湪缃戜笂鎵句竴涓渹楦e櫒濂忎箰鐨勪緥绋嬶紝鏀瑰ソI/O锛屽氨鍙互濂忎箰浜嗐傚啀鎵句竴涓渹楦e櫒璧颁篃鐨勮緟鍔╄蒋浠讹紝杈撳叆鐢熸棩姝鐨勭畝璋憋紝灏卞彲浠ュ鐢熸棩姝屼簡銆
绛旓細瑕佹兂鐢ㄦā鎷熸瓕澹伴鍏堣瀹氫箟1234567涓嶅悓鐨勯煶绗,鍋氫釜h鏂囦欢鏀捐繖閲,,浣犲悗鍋氬叾浠栫殑姝屾洸鍙互鍏变韩銆傝繖閲岀綉涓婂彲浠ユ壘鍒,鎴戠粰浣犱竴涓傘傜劧鍚庡缓绔嬩釜姝屾洸涓荤▼搴,鏍规嵁姝岃氨瀛,缁撳悎浣犵殑闊崇瀹氫箟缁欎粬浠栫紪鐮,鎶婄紪鐨勭爜鏀惧埌涓涓暟缁勯噷闈㈢劧鍚庤緭鍑哄氨濂戒簡,,涓嬮潰鎴戠粰浣涓棣栨瓕浣滀负渚嬪瓙,,鎴戜篃娌″仛涓綘閭d釜浠涔鐢熸棩姝,浣犺嚜宸卞幓缂栫爜鍚,,鏈...
绛旓細;瀹氭椂鍣ㄥ艰瀹氫负62500锛屽垯鍙鎵ц涓ゆ涓柇锛屽嵆鍙骇鐢1/4鎷嶇殑闀垮害銆侭ASE EQU -62500 SPEAKER EQU P1.0 ;=== ORG 0000H LJMP INITIAL ORG 000BH LJMP TONE_INT ORG 001BH LJMP BEAT_INT INITIAL:MOV TMOD,#11H MOV IE,#10001010B MOV SP,#70H START:CLR F0 MOV R7,#00H MOV R6,#...
绛旓細delay(time); //寤舵椂褰撳墠棰戠巼鐨婕斿鏃堕棿 } void main(void){ unsigned char k,i;TMOD=1; //缃瓹T0瀹氭椂宸ヤ綔鏂瑰紡1 EA=1; ET0=1;//IE=0x82 //CPU寮涓柇,CT0寮涓柇 while(1){ i=0;while(i<75){ //闊充箰鏁扮粍闀垮害 锛屽敱瀹屼粠澶村啀鏉 k=sszymmh[i]+7*sszymmh[i+1]-1; //鍙栧綋鍓...