找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1892|回复: 1
收起左侧

51单片机音乐播放器Proteus仿真

[复制链接]
ID:1139743 发表于 2024-12-16 14:56 | 显示全部楼层 |阅读模式
主要代码
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit BEEP=P1^0;
uchar tick,tl,th;
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,
   0x00};
uchar TABLE1[]={
   0xfb,0x04,0xfb,0x90,0xfc,0x09,0xfc,0x44,
   0xfc,0xac,0xfd,0x09,0xfd,0x34,0xfd,0x82,
   0xfd,0xc8,0xfe,0x06,0xfe,0x22,0xfe,0x56,
   0xfe,0x85,0xfe,0x9a,0xfe,0xC1};
void timer0() interrupt 1 using 1
{
        TL0=tl;TH0=th;
        //请补充中断服务函数内容
        BEEP=~BEEP;
}
void delay1()
{
        uint i;
        for(i=0;i<20000;i++) ;
}
void delay(tt)
{
          uint i;
        for(i=0;i<=tt;i++)
        delay1();
}
void main(void)
{
        uchar t,t0,k=0;
        while(1)
        {
                //请补充初始化代码:定时器T0,工作方式1,中断总开关使能,定时器T0开关使能
                TMOD=0x01;IE=0x82;
                while(TABLE[k]!=0)
                {
                        tick=(TABLE[k])&0x0f;
                        t=(_crol_(TABLE[k],4))&0x0f;
                        if(t!=0)
                        {
                                t0=(--t)*2+1;
                                t=t*2;
                                tl=TL0=TABLE1[t0];
                                th=TH0=TABLE1[t];
                                TR0=1;
                        }
                        else TR0=0;
                        delay(tick);
                        k++;
                }
                TR0=0;
         }
}
51hei.png

01.7z

82.45 KB, 下载次数: 0, 下载积分: 黑币 -5

仿真和代码

回复

使用道具 举报

ID:1135606 发表于 2025-1-9 06:04 | 显示全部楼层
程序不完整
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表