完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我想实现的目的是串口助手发送一个字符串给单片机,单片机又原封不动的返回给我;
实现的机制,是接受到的字节放入一个数组,30毫秒后,再把接受到的数据发送给单片机。 现在代码是一发送数据,就不停的给串口助手发0,完全停不下来,跟吃了炫迈一样; 百思不得其解;望有能力的大神帮小弟一把; 一下是代码: //把接受的字符串发送到串口 #include #include typedef unsigned int uint; typedef unsigned char uchar; uchar i = 0; //接受的字节数; uchar tr[80]; //接受缓冲区; bit biaozhi = 0; //30ms标志位; uchar th = 0; //定时器0高字节; uchar tl = 0; //定时器0低字节; void UART_Init() //串口初始化; { TMOD &= 0X0F; //清空高4位; TMOD |= 0X20; //定时器1,工作模式2; TH1 = 0XDF; //9600波特率 TL1 = 0XDF; SCON |= 0X50; //串口工作方式1,允许接受; TR1 = 1; //开定时器1; ES = 1; //开串口中断; } void tmer0(uint t) //定时器0初始化 { TMOD &= 0XF0; //清空低4位 TMOD |= 0X01; //设置定时器0,工作模式1; th = (65535-t*1000)/256; //定时器初值; tl = (65535-t*1000)%256; TH0 = th; //给定时器0赋初值; TL0 = tl; ET0 = 1; //开定时器0中断过 } void URT_zd() interrupt 4 //串口中断; { TR0 = 1; //当接受到数据定时器0开始计数; RI = 0; //清零接受标志位 tr[i] = SBUF; //把接受到的数据放入缓冲区; i++; } void tmer() interrupt 1 //定时器0; { static uchar j = 0; TH0 = th; //赋初值; TL0 = tl; j++; // 每1ms加1; if(j == 30) //当三十毫秒后,我们就把接受到的数据发送出去; { j = 0; //清空时间;从0开始计数; biaozhi = 1; //发送标志位置1; TR0 = 0; //并关闭定时器0; } } void UART_Xie_Bit(uchar x) //发送一个字节函数; { SBUF = x; //把一字节数据方入到发送区; while(!TI); //判断是否发送完毕; TI = 0; //把发送标志位置0;等待下一字节的发送; } void UART_Xie_Bety(uchar *p) //发送字符串函数; { while(*p) //判断是否发送到最后一个字节; { UART_Xie_Bit(*p++); //一个字节一个字节的发送; } } void main() { EA = 1; //开总中断; UART_Init(); //初始化串口; tmer0(1); //初始化定时器0; while(1) { if(biaozhi) //当三十毫秒到就把缓冲区的数据发送出去; { biaozhi = 0; //清0标志位; UART_Xie_Bety(tr); //发送 i = 0; //清零字节计数标志位; } } } |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2201 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2027 浏览 3 评论
4633 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2171 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2705 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 05:48 , Processed in 0.487865 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号