org 0000h
Sjmp MAIN
org 000bh
mov th0,r1
mov tl0,r0
cpl p1.0
RETI
MAIN:MOV TMOD,#01H
MOV IE,#82H
MOV DPTR,#TAB
LOOP: CLR A
MOVC A,@A+DPTR
MOV R1,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV R0,A
ORL A,R1
JZ NEXT0
MOV A,R0
ANL A,R1
CJNE A,#0FFH,NEXT
SJMP MAIN
NEXT : MOV TH0,R1
MOV TL0,R0
SETB TR0
SJMP NEXT1
NEXT0:CLR TR0
NEXT1: CLR A
INC DPTR
MOVC A,@A+DPTR
MOV R2,A
LOOP1: ACALL D200C
DJNZ R2,LOOP1
INC DPTR
AJMP LOOP
D200C:MOV R3,#81H
D200B:MOV A,#0FFH
D200A:DEC A
JNZ D200A
DEC R3
CJNE R3,#00H,D200B
RET
TAB: DB 0FEH,25H,04H,0FEH,25H,02H
DB 0FEH,25H,02H,0FDH,80H,04H
DB 0FEH,84H,02H,0FEH,84H,02H
DB 0FEH,84H,04H,0FEH,25H,04H
DB 0FEH,25H,02H,0FEH,84H,02H
DB 0FEH,0C0H,04H,0FEH,84H,02H
DB 0FEH,98H,02H,0FEH,84H,02H
DB 0FEH,57H,08H,00H,00H,04H
DB 0FFH,0FFH
END
像这样的 可以在我的基础上改 这是新年快乐的代码 可以换成其他歌 也可以给我一个类似的源程序
能用的给200分
要单片机的
追答你给出的例程使用汇编编写的。我说的是用C语言编的单片机程序,而不是汇编编写的可以吗?
追问要汇编的
追答好的,我承认我败了,我这没有,任性不了了,哈哈。你可以将其他网友的歌词编码自己填写到你的程序的TAB 里面就可以了。
用单片机80c51制作电子音乐 求源程序
sbit _Speak =P2^3 ; \/\/蜂鸣器控制脚 unsigned char code SONG[] ={ \/\/祝你平安,以下为编码 0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0...
80c51单片机音乐播放器设计
调2\/4 250毫秒 调2\/4 125毫秒 ⑹ 建立音乐的步骤:1)先把吧乐谱的音符找出,然后由上表建立T值表的顺序。2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。表9.4 简谱对应的简谱码、T值...
用汇编语言编写80c51单片机程序,求内部RAM中50H~59H十个单元内容的平均...
MAIN:MOV R0,#50H MOV R7,#10 MOV R2,#00H MOV A,#00H LOOP:CLR C ADD A,@R0 JNC BBB INC R2 CLR C BBB: INC R0 DJNZ R7,LOOP MOV 5CH,A ;把和放5CH,不用管溢出的,和为s1 MOV 5BH,R2 ;把溢出的次数放地址5BH MOV B,5BH ;溢出的次数给B MOV A,#19H ;...
使用80c51单片机at89s52芯片、汇编语言编写“世上只有妈妈好”的音乐...
SETB ET0 ;在EA打开的前提下,打开T0定时器中断 CLR TR0 ;不启用T0计数器\/定时器LOOP: NOP ;开始循环播放了。程序不完整 ; --- ; 1-|6. 5 3 5 | ;第一段 LCALL DY6 ;长跳转到低音6标号那里,程序不完整,没有写出来。以下同理 SETB TR0 ;开始启用T0计数器\/定时器 LCALL DEL11 LC...
设计一个80C51与DAC0832的接口电路,并编制程序,
[硬件电路][源代码]#include<reg51.h>sbit dawr=P3^6; \/\/DA写数据sbit csda=P3^2; \/\/DA片选unsigned char a,j,k;void delay(unsigned char i) \/\/延时,这里你自己算,我就举个例子大概差不多{for(j=i;j>0;j--)for(k=125;k>0;k--);}void main(){csda=0;a=0x51;dawr=0;...
单片机80C51的指令系统
MOV A,#00H \/\/把立即数0送给A ,A=#00H MOV @R0,A \/\/A送内部RAM单元,40H=0 MOV A,#3BH \/\/3BH送给A, A=#3BH MOV 41H,A \/\/ (41H)=#3BH MOV 42H,41H \/\/ (42H )=#3BH 程序全部执行完之后,A中内容为0,R0为40H,(40H)=(41H)=(...
80c51单片机120秒延时程序怎么编写
为了编写一个80C51单片机的120秒延时程序,需要遵循以下步骤。首先,我们需要创建一个名为“delay”的函数,用于实现延时功能。该函数接收一个参数“z”,即所需延时的周期数。在函数内部,我们使用两个嵌套的循环结构,分别用变量“x”和“y”作为循环计数器。外层循环的次数由参数“z”决定,即循环“z...
80c51单片机驱动LED显示。。。急急急
汇编源程序 ORG 0 START:MOV R1,#00H NEXT:MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC R1 CJNE R1,#10,NEXT LJMP START DELAY:MOV R5,#20 D2:MOV R6,#20 D1:MOV R7,#248 DJNZ R7,DJNZ R6,D1 DJNZ R5,D2 RET TABLE:DB 3FH,06H,5BH,4FH,66H,6...
求大神解答下单片机80c51,下面程序中的一个能够让万年历调时间的代码...
1,我们可以通过这一位判断时钟在单片机系统掉电后是否还正常运行。剩下的7 位高 3 位是秒的十位,低 4 位是秒的个位,这里再提请注意一次,DS1302 内部是 BCD 码,而秒的十位最大是 5,所以 3 个二进制位就够了。second|0x80后面的这个数据使用 | 符号就是把最高位CH变成1.
在80C51单片机中,已知时钟频率为6MHz,请编程使P1.0和P1.1分别输出周期为...
SJMP T0_INT START:MOV TMOD, #01H MOV TH0, #9EH MOV TL0, #58H ;50ms@6MHz SETB TR0 SETB ET0 SETB EA MOV R2, #5 MOV A, #0 CLR P1.0 CLR P1.1 SJMP T0_INT:MOV TH0, #9EH MOV TL0, #58H ;50ms@6MHz DJNZ R2, T0_END MOV R2, #...