网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月12日漏签0天
单片机吧 关注:213,209贴子:1,051,123
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 2回复贴,共1页
<<返回单片机吧
>0< 加载中...

求助一个单片机串口通信问题,跪求了!

  • 只看楼主
  • 收藏

  • 回复
  • yanqing20100
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<reg52.h>
#define uchar unsigned char
#define uint unsigend int
uchar flag,num,T0_flag,b,i;
uchar code string[]={" This is "};
sbit buzz=P1^4; //定义蜂鸣器
void init(); //初始化
void buzz_1();
void main() //主函数
{
init();
while(1)
{
buzz_1();
if(flag==1)
{
ES=0;
if(num==4||num==0)
{
ET0=0;
TR0=0;
buzz=0;
}
else if(num==1||num==2||num==3)
{
ET0=1;
TR0=1;
}
for(i=0;i<9;i++)
{
SBUF=string[i];
while(!TI);
TI=0;
}
SBUF=num;
while(!TI);
TI=0;
ES=1;
flag=0;
}
}
}
void init()
{
T0_flag=0;
b=0;
flag=0; //对串口中断标示位初始化
buzz=0; //蜂鸣器初始化为关闭状态
TMOD=0x20; //确定T0定时器工作方式1,T1定时器工作方式2
TH0=0x4c; //T0定时器高八位装入初值
TL0=0x00; //T0定时器低八位装入初值 用于设置50ms的中断
TH1=0xfd; //T1定时器高八位装入初值
TL1=0xfd; //TI定时器低八位装入初值 设置波特率 为9600
ET0=0; //打开T0 中断
TR0=0; //允许T0中断
TR1=1; //允许T1中断
REN=1; //允许串行接收位
SM0=0;
SM1=1; //设置SM0=1,SM1=1时 串口工作方式1
EA=1; //打开总中断
ES=1; //打开串口中断
}
void buzz_1()
{
switch(num)
{
case 1:
b=8;
break;
case 2:
b=4;
break;
case 3:
b=2;
break;
}
if(T0_flag==b && T0_flag!=0)
{
T0_flag=0;
buzz=~buzz;
}
}
void time_1() interrupt 1 //T0定时器 中断
{
TH0=0x4c;
TL0=0x00;
T0_flag++;
}
void ser() interrupt 4 //串口中断
{
RI=0;
num=SBUF;
flag=1;
}
这段代码,串口部分没问题 可以收发数据,但是蜂鸣器部分,不响, 我用T0定时器不工作,跪求高手指点! 万分感谢!


  • f27ny105t5123
  • 少校
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
代码什么功能能说一下么
没看出来什么问题的样子


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回单片机吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示