求助51单片机串口定时发送

hush❤️☠� 2019-05-06 10:13:04
我抄了一个用按键控制的串口发送程序,然后把它改成了每隔着2s发送,但是仿真不成功
...全文
162 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hush❤️☠� 2019-05-06
  • 打赏
  • 举报
回复
#include <reg51.h>#include <intrins.h>#define uchar unsigned char #define uint unsigned intunsigned char flag, tmp, n;unsigned char code name[]={"successful"};void Init(void); bit key_scan(); uint count2s=0; void key_event(); void delayms(unsigned char ms); void send_data(unsigned char txd); main(){ Init(); TR1 = 1; n='d'; while(1) { if(key_scan()) ? { key_event();//发送字符串d delayms(100)//延时100ms flag=0; } }}void Init(void){ TMOD = 0x21; //定时器1工作在八位自动装载,定时器0为16为计时器 TH1 = 0xFd; TL1 = 0xFd; SCON = 0x50; PCON&= 0xef; TH0 = (65535 - 10000)/256;//计时10ms TL0 = (65535 - 10000)%256; EA=1; ET0=1; TR0=1; TR1=1; }bit key_scan() { if(count2s==1); count2s=0; flag=1; return(flag); }void key_event(){ if(flag==1) { send_data(n); }}void send_data(unsigned char txd){ SBUF = txd; while(!TI); TI = 0; }void delayms(unsigned char ms) { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); }} void Timer0() interrupt 1{ TH0 = (65535 - 10000)/256; TL0 = (65535 - 10000)%256; count10ms ++; if (count10ms==200) //计时2s { count10ms = 0; count2s=1; } }

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧