(一个简单的滴。。滴。。声的程序)这几行代码的实现有何不同,请各位高手帮忙解惑 万分感谢!!

passlicence 2010-08-25 10:12:37
代码如下:(第一段代码R0、R1的初值分别为100和4)
; DJNZ R0,SW
; MOV R0,#100
; DJNZ R1,SW
; MOV R1,#4
; CPL FLAG
第二段代码:(R0、R1初值分别都为0)
INC R0
CJNE R0,#100,SW
INC R1
CJNE R1,#4,SW
MOV R0,#00
MOV R1,#00
CPL FLAG
两者的运行结果 声音上有很大区别
完整的程序如下:
FLAG BIT P1.7
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT0
MAIN:
;MOV R0,#100
;MOV R1,#4

MOV R0,#00
MOV R1,#00
MOV TMOD,#01H
MOV TL0,#0CH
MOV TH0,#0FEH
SETB EA
SETB ET0
SETB TR0
SJMP $
INT0:
MOV TL0,#0CH
MOV TH0,#0FEH
; DJNZ R0,SW
; MOV R0,#100
; DJNZ R1,SW
; MOV R1,#4
; CPL FLAG

INC R0
CJNE R0,#100,SW
INC R1
CJNE R1,#4,SW
MOV R0,#00
MOV R1,#00
CPL FLAG
SW:JNB FLAG,LOOP
CPL P1.0
LOOP:RETI
END
请诸位大虾帮忙 谢谢!!
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2010-08-29
  • 打赏
  • 举报
回复
大概是通过定时器发出不同频率和时间长度的信号,来产生歌曲。给一点资料:
低0C调=131HZ标准C调=262HZ高1C调=523HZ高2C调=1047HZ(每8度,频率高1倍)
标准D调=294HZ(每8度,频率高1倍)
标准E调=330HZ(每8度,频率高1倍)
标准F调=349HZ(每8度,频率高1倍)
标准G调=392HZ(每8度,频率高1倍)
标准A调=440HZ(每8度,频率高1倍)
标准B调=494HZ(每8度,频率高1倍)
wackestar 2010-08-29
  • 打赏
  • 举报
回复
不同的频率对应不同的声音。和晶振和主频有关系的。不停的换的话就是音乐了。呵呵
guetcw 2010-08-25
  • 打赏
  • 举报
回复
每个声音都对应一种频率,频率不一样听起来当然就不一样

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧