完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
void uart_init()
{ TMOD=0X20; //定时器1 SCON=0X50; //串口1 PCON=0X00; //不分屏 TH1 =0XFD; //253 TL1 =0XFD; //253 ti =0; //发送状态清零 RI =0; //接受状态清零 TR1 =1; //开定时器1 EA =1; //开总中断 ES =1; //开串口中断1 } void uartes() interrupt 4 { if(RI) { RI=0; //标志清零 recevi=SBUF; stat=1; } if(TI) { TI=0; busy=1; } } void main() { uart_init(); while(1) { if((busy==1)&&(stat=1)) { SBUF=recevi; busy=0; stat=0; } } } |
|
相关推荐
22个回答
|
|
if((busy==1)&&(stat=1))应该为 if((busy==1)&&(stat==1))
最佳答案
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
认真。谢谢了。。 |
|
|
|
|
|
|
|
if((busy==1)&&(stat=1))改为 if((busy==1)&&(stat==1))
|
|
|
|
|
|
|
|
if(busy&&stat) |
|
|
|
你好,试问下 if(RI) { RI=0; //标志清零 recevi=SBUF; stat=1; } 中的 recevi=SBUF;改为 SBUF=recevi;而 if((busy==1)&&(stat==1)) { SBUF=recevi; busy=0; stat=0; } 中的SBUF=recevi;改为recevi=SBUF会怎样??? 为什么我的串口助手智能这样改才会正常显示??? |
|
|
|
你好,试问下 if(RI) { RI=0; //标志清零 recevi=SBUF; stat=1; } 中的 recevi=SBUF;改为 SBUF=recevi;而 if((busy==1)&&(stat==1)) { SBUF=recevi; busy=0; stat=0; } 中的SBUF=recevi;改为recevi=SBUF会怎样??? 为什么我的串口助手智能这样改才会正常显示??? |
|
|
|
你好,试问下 if(RI) { RI=0; //标志清零 recevi=SBUF; stat=1; } 中的 recevi=SBUF;改为 SBUF=recevi;而 if((busy==1)&&(stat==1)) { SBUF=recevi; busy=0; stat=0; } 中的SBUF=recevi;改为recevi=SBUF会怎样??? 为什么我的串口助手智能这样改才会正常显示??? |
|
|
|
SBUF=recevi发送这样写 recevi=SBUF接收这样写,你把全部程序发过来我看看什么问题 |
|
|
|
你这样试试 void uart_init() { TMOD=0X20; //定时器1 SCON=0X50; //串口1 PCON=0X00; //不分屏 TH1 =0XFD; //253 TL1 =0XFD; //253 TI =0; //发送状态清零 RI =0; //接受状态清零 TR1 =1; //开定时器1 EA =1; //开总中断 ES =1; //开串口中断1 } void uartes() interrupt 4 { if(RI) { RI=0; //标志清零 recevi=SBUF; stat=1; } } void main() { uart_init(); while(1) { if(stat==1) { stat=0; SBUF=recevi; while(TI==0); TI=0; } } } |
|
|
|
你好,这个是我的程序。如果把if(RI)里面的SBUF=RECEVI;改为RECEVI=SBUF;就显示不了了,同样把TI的也改了也是显示不了的。。 #include "reg52.h" #include "intrins.h" #define u8 unsigned char #define u16 unsigned int u8 RECEVI; //接收发送变量 u8 STAT=0; //接送完毕 u8 busy=0; //忙检测 void time_init() { TMOD=0X20; //定时器1 方式2 自动重装载 8位定时器 SCON=0X50; //串口模式1 PCON=0X00; //不分屏 TH1 =0XFD; //高位初始值253 TL1 =0XFD; //波特率计算:9600=1*11059200/(2*(256-253)*32) TR1 =1; //开启定时器 EA =1; //开总中断 ES =1; //开串口中断 TI =0; //清零发送 RI =0; //清零接收 } void busy_init() { if(STAT&&busy) //当检测到发送一帧完毕后与接送完毕 { STAT=0; //清零标志位 TI=0; //清零接收标志 RECEVI=SBUF; //把数据传给串口助手 } } void main() { time_init(); //初始化 while(1) { busy_init(); //调用函数 } } void time() interrupt 4 //串口中断函数 串口中断模式4 { if(RI) //检测是否接收到数据 被置1表示接收到数据 { RI=0; //清零标志位 SBUF=RECEVI; //数据传送给接收缓冲器 STAT=1; //置1表示接收到数据 } if(TI) //检测是否接收到数据 { TI=0; //清零标志位 busy=1; //忙检测 } } |
|
|
|
|
|
|
|
可以用,只要在接收中断里不加 if(TI) //检测是否接收到数据 { TI=0; //清零标志位 busy=1; //忙检测 } 就可以使用。 有个疑问??为什么要在接收中断里面判断是否发送了?if(TI)??? |
|
|
|
if((busy==1)&&(stat=1))中的stat==1 怎么不用代码生成器
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
321 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
325 浏览 0 评论
296 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十六章 照相机实验
313 浏览 0 评论
STM32模拟eeprom只有起始地址0x8001000正常其他地址都会造成单片机运行不正常怎么回事
276 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12078 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 04:52 , Processed in 1.166822 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号