跪求大神解疑 :单片机编写音乐小程序 定时器问题
时间:10-02
整理:3721RD
点击:
各位大神,小弟菜鸟一枚,照着书本敲了一段代码如下:可以正常播放音乐。小弟尝试用工作模式1修改了下程式r如下注释,可是实际无法达到相同效果,求大神解疑!
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u16 C;
#define dao 523
#define re 587
#define mi 659
#define fa 698
#define sao 784
#define la 880
#define xi 987
sbit beep=P1^5;
void delay()
{
u8 i,j;
for(i=0;i<200;i++)
for(j=0;j<110;j++);
}
void main()
{
u8 i,j;
u16 code f[]={dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,sao,sao,fa,fa,mi,mi,re,sao,sao,fa,fa,mi,mi,re,dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,0xff};
u8 code JP[]={4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8};
TMOD|=0X00; ------TMOD|=0X01
EA=1;
ET0=1;
while(1)
{
i=0;
while(f!=0xff)
{
C=460830/f;
TH0=(8192-C)/32; ----- TH0=(65536-C)/256;
TL0=(8192-C)%32; -----TL0=(65536-C)%256;
TR0=1;
for(j=0;j<JP;j++)
delay();
TR0=0;
i++;
}
}
}
void Time0() interrupt 1 using 1
{
beep=~beep;
TH0=(8192-C)/32; ------------TH0=(65536-C)/256;
TL0=(8192-C)%32; -----TL0=(65536-C)%256;
}
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u16 C;
#define dao 523
#define re 587
#define mi 659
#define fa 698
#define sao 784
#define la 880
#define xi 987
sbit beep=P1^5;
void delay()
{
u8 i,j;
for(i=0;i<200;i++)
for(j=0;j<110;j++);
}
void main()
{
u8 i,j;
u16 code f[]={dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,sao,sao,fa,fa,mi,mi,re,sao,sao,fa,fa,mi,mi,re,dao,dao,sao,sao,la,la,sao,fa,fa,mi,mi,re,re,dao,0xff};
u8 code JP[]={4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8,4,4,4,4,4,4,8};
TMOD|=0X00; ------TMOD|=0X01
EA=1;
ET0=1;
while(1)
{
i=0;
while(f!=0xff)
{
C=460830/f;
TH0=(8192-C)/32; ----- TH0=(65536-C)/256;
TL0=(8192-C)%32; -----TL0=(65536-C)%256;
TR0=1;
for(j=0;j<JP;j++)
delay();
TR0=0;
i++;
}
}
}
void Time0() interrupt 1 using 1
{
beep=~beep;
TH0=(8192-C)/32; ------------TH0=(65536-C)/256;
TL0=(8192-C)%32; -----TL0=(65536-C)%256;
}
下次记得把bug截图还有问题描述清楚一点