微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 跪求大神解疑 :单片机编写音乐小程序 定时器问题

跪求大神解疑 :单片机编写音乐小程序 定时器问题

时间: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;
}

下次记得把bug截图还有问题描述清楚一点

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top