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

 
 
 
日一二三四五六
       
       
       
       
       
       

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

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

本吧签到人数:0

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

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

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

大神们,求助啊!!!写了一个串口通讯的程序,有的地方求指教!

  • 只看楼主
  • 收藏

  • 回复
  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,flag0,a;
sbit beep=P3^7;
void warning1();
void warning2();
void warning3();
void init()
{
TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;//装初值,设置波特率为9600
TL1=0xfd;
TR1=1;//启动T1定时器
REN=1;//允许串口接收
SM0=0;//设置串口为工作方式1
SM1=1;
EA=1;//开总中断
ES=1;//开串口中断
}
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
init();//初始化
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
SBUF=a;
switch(flag0)//根据flag0的值进入不同的报警函数
{
case 0: warning1();
break;
case 1: warning2();
break;
case 2: warning3();
break;
case 3: printf("Error!\n");
break;
}
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
//P1=SBUF;
a=SBUF;
flag=1;
if(a==0)//根据上位机发送的不同指令,将flag0设置为不同的
flag0=0;
else if(a==1)
flag0=1;
else if(a==2)
flag0=2;
else
flag0=3;
}
void warning1()
{
while(1)
{
P1=0x01;
beep=1;
delay(500);
P1=0;
beep=0;
delay(500);
}
}
void warning2()
{
while(1)
{
P1=0x55;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}
void warning3()
{
while(1)
{
P1=0x0f;
beep=1;
delay(500);
P1=~P1;
beep=0;
delay(500);
}
}


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
每次进入switch后面的报警子函数都会陷入死循环,大神们,求指教,怎样既能达到我要的报警效果,又不会陷入死循环?


2025-05-17 10:42:08
广告
  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自己顶


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大神们,快来啊!


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求助啊!


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求赐教啊!


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求指导啊!


  • 杜甫骑摩托车
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看过来啊!


2025-05-17 10:36:08
广告
  • 走自己的路ok1
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1 当break跳出之后 程序停在了while(!TI);处 2 楼主没使用发送为什么要检测TI


登录百度账号

扫二维码下载贴吧客户端

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