专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
单片机自动向PC机发送数据的方法
2019-04-15 13:11
发布
生成海报
站内文章
/
PIC单片机
11037
0
1727
单片机通过串口向PC机发送数据一般是通过串口中断服务程序来实现,也就是说一般写在中断函数里。例如:
#include
/*主程序*/ void main (void) { SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */ TR1 = 1; /* TR1: timer 1 run */ EA = 1; /*打开总中断*/ ES = 1; /*打开串口中断*/ while (1) /*主循环不做任何动作*/ { } } void UART_SER (void) interrupt 4 //串行中断服务程序 { unsigned char Temp; //定义临时变量 if(RI) //判断是接收中断产生 { RI=0; //标志位清零 Temp=SBUF; //读入缓冲区的值 P1=Temp; //把值输出到P1口,用于观察 SBUF=Temp; //把接收到的值再发回电脑端 } if(TI) //如果是发送标志位,清零 TI=0; }
以上是一个单片机与PC机互发的程序,是通过PC机向缓冲区SBUF发送数据来实现打开串口中断,但要单片机自主的向PC机发送数据而不需PC机操作,这样就不能实现,因此可以将串口中断另外写成一个函数,在main()函数中调用:
…… void UART_SER () //串行口服务程序 { int i; unsigned char Temp; //定义临时变量 for(i=0;i<2;i++) { RI=0; //标志位清零 Temp=temp_data[i]; P1=Temp; //把值输出到P1口,用于观察 SBUF=Temp; //把接收到的值再发回电脑端 //TI=1; } } /* 主函数 */ /************************************/ void main() { SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */ TR1 = 1; /* TR1: timer 1 run */ EA = 1; /*打开总中断*/ ES = 1; Ok_Menu () ; do { Read_Temperature() ; Disp_Temperature() ; UART_SER (); delay1(100); } while(!presence); Error_Menu (); do { Init_DS18B20() ; beep() ; } while(presence) ; while(1); }
Ta的文章
更多
>>
单片机自动向PC机发送数据的方法
0 个评论
IKCM10H60GA IGCM10F60GA 600V 10A 英飞凌 600V三相智能电源模块
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮