美文网首页
2018-02-10@keil与proteus

2018-02-10@keil与proteus

作者: ermaoHa | 来源:发表于2018-02-10 11:56 被阅读0次

生日快乐

[(⊙o⊙)…额!哈哈!]昨天晚上好不容易搞好软件问题【(~ ̄(OO) ̄)ブ】,那不得趁热打铁赶紧整一下使自己玩玩,就照书打了代码花了原理图,成功听到仿真声音,不觉有些小激动

电路图

书中代码区

#include <reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit BEEP=P1^0;         //定义喇叭输出端口
uchar tick,t1,th;           //定义节拍和T0初始变量
uchar TABLE[]={         //音符节拍码表
    0x82,0x01,0x81,0x94,0x84,0xB4,0xA4,0X04,
    0X82,0X01,0X81,0X94,0X84,0XC4,0XB4,0X04,
    0X82,0X01,0X81,0XF4,0XD4,0XB4,0XA4,0X94,
    0XE2,0X01,0XE1,0XD4,0XB4,0XC4,0XB4,0X04,
    0X82,0X01,0X81,0X94,0X84,0XB4,0XA4,0X04,
    0X82,0X01,0X81,0X94,0X84,0XC4,0XB4,0X04,
    0X82,0X01,0X81,0XF4,0XD4,0XB4,0XA4,0X94,
    0XE2,0X01,0XE1,0XD4,0XB4,0XC4,0XB4,0X04,
    0X00,
};

uchar TABLE1[]={                                                    //音符对应的定时器初始表
    0xfd,0x04,0xfd,0x90,0xfc,0x09,0xfc,0x44,
    0xfc,0xac,0xfb,0x09,0xfb,0x34,0xfb,0x82,
    0xfb,0xc8,0xfe,0x06,0xfe,0x22,0xfe,0x56,
    0xfe,0x85,0xfe,0x9a,0xfe,0xc1,  
};

/********************************T0中断服务函数    *******************************/
timer0() interrupt 1 using 1{
    TL0=t1;TH0=th;  //重装定时初值
    BEEP=~BEEP;     //喇叭输出定时取反
}
/***************************基本单位延时函数*************************/
void delay1(){
    uint i;
    for(i=0;i<20000;i++);
}

/*****************************节拍延时函数**************************/

void delay(tt){

    uchar i;
    for (i=0;i<=tt;i++) delay1();
}

/***********************************主函数******************************/
void main(){

    uchar t,t1,k=0;
    while(1){
        TMOD=0X01;IE=0X82;          //定义T0工作方式,开中断
        while (TABLE[k]!=0){            //判断节拍码是否为结束码
            tick=(TABLE[k])&0x0f;   //不是则取节拍码
            t=(_crol_(TABLE[k],4))&0x0f;//取音符码
            if(t!=0){                   //判断取得的音符码是否为0
                t1=--t*2+1;             //不是根据取得的音符码计算T0初值
                t=t*2;
                t1=TL0=TABLE1[t1];
                th=TH0=TABLE1[t];
                TR0=1;                  //启动T0
            }
            else TR0=0;                 //取得音符码为0则停止T0
            delay(tick);                //根据节拍码延时
            k++;
        }
        TR0=0;                          //取得结束码则停止T0
    }
}

相关文章

  • 2018-02-10@keil与proteus

    生日快乐 [(⊙o⊙)…额!哈哈!]昨天晚上好不容易搞好软件问题【(~ ̄(OO) ̄)ブ】,那不得趁热打铁赶紧整一下...

  • 2018-02-10@keil与proteus

    额首先吐槽一下这玩意好玩是好玩但是从软件到各种整终于一个程序可以仿真成功了【哭!哭!】记一下自己一路上遇到的问题吧...

  • proteus资源

    Ptoteus 版本 Proteus 7.4 proteus7.5、proteus7.8、proteus8.0、p...

  • proteus仿真大全

    proteus仿真大全 proteus学习资源大全,热衷于分享资料,资源共享,这个proteus也是收集了很久的资...

  • 2018-02-09

    在keil与Proteus联通调试时候,按着步骤进行可是到最后

  • led

    windows下仿真程序(proteus+keilc) 点亮一个灯 proteus的仿真图: keilc的代码如下...

  • proteus仿真流水灯

    一. keil和proteus的使用 生成hex file proteus中找不到有些元件 二. 源程序 unsi...

  • proteus 8.4安装教程

    1、右击软件压缩包选择解压到“Proteus8.4”。 2、在解压文件夹中找到Proteus8.4 SP0 wit...

  • proteus线条

  • proteus整理

    蜂鸣器 参考链接:https://blog.csdn.net/gin_love/article/details/5...

网友评论

      本文标题:2018-02-10@keil与proteus

      本文链接:https://www.haomeiwen.com/subject/ltuctftx.html