分享

生日快乐歌单片机C语言程序

 快乐读书法 2016-04-26
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit BEEP=P2^3;//接喇叭或蜂鸣器的接口
uint h,i;
uint hz;
uchar jiep;
bit flag;
uint code fre[]={ 64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};
uchar code song[]={6,9, 6,3, 7,12, 6,12, 9,12, 8,24, 6,9, 6,3, 7,12,
6,12, 10,12, 9,24, 6,9, 6,3, 13,12, 11,12, 8,12, 7,12,
12,9, 12,3, 11,12, 9,12, 10,12, 9,24}; //歌谱 2个一组(0,0)(音调,节拍)

void init () //初始化
{
        EA=1;
        TMOD=0x11;
        ET0=1;
        ET1=1;
        i=0;
        flag=1;
}

void sing()
{
        if(flag==1)
        {
        h=song;
        jiep=song[i+1];
        i=i+2;
        if(i>46)
                i=0;
        hz=fre[h];
        TH0=(hz)/256;
        TL0=(hz)%256;
        flag=0;
        TR0=1;
        TR1=1;
        }
}

void main()
{
        init();
        while(1)
        {
        sing();
        }
}

void time0() interrupt 1 //定时器0
{
        TH0=(hz)/256;
        TL0=(hz)%256;
        if(!flag)
                BEEP=!BEEP;
        else
                TR0=0;
}

void time1() interrupt 3
{
        TH1=(15536)/256;
        TL1=(15536)%256;
        --jiep;
        if(jiep==0)
        flag=1;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多