串品打印在调试程序中的应用

串品打印在调试程序中的应用

ID:15471537

大小:29.50 KB

页数:8页

时间:2018-08-03

串品打印在调试程序中的应用_第1页
串品打印在调试程序中的应用_第2页
串品打印在调试程序中的应用_第3页
串品打印在调试程序中的应用_第4页
串品打印在调试程序中的应用_第5页
资源描述:

《串品打印在调试程序中的应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、串品打印在调试程序中的应用//单片机上电后等待从上位机(PC)串口发送过来的命令,同时在数码管的前三位以十进制方式显示A/D采集的数值,在未收到上位发送来的启动A/D转换命令前数码管始终显示000;当收到上位机以十六进制发送来的01后,向上位机发送字符串"Turnonad!",同时间隔一秒读取一次A/D的值,然后把A/D采集回来的8位二进制数转换成十进制数表示的实数电压浮点数,并从串口发送给上位机,形式如"Thevoltageis3.335522V",发送周期也是一秒一次,同时在数码管上也要每秒刷新

2、新的显示的数据;当收到上位机以十六进制发来的02后,向上位机发送字符串"Turnoffad!",然后停止发送电压值,数码管上显示上次结束时保持的值;当收到上位机发来的其它任何数据,向上位机发送字符串"Error!".//#include#include#include#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^6;sbitwela=P2^7;sbitadwr=P3^6;s

3、bitadrd=P3^7;ucharflag,a;unsignedcharflag_uart,flag_time,flag_on,a,i,t0_num,ad_val;floatad_vo;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms(uintxms){uinti,j;for(i=xms;i>0;i--)for(j=110;j>

4、0;j--);}voidinit(){TMOD=0x21;//定时/计数器工作方式寄存器TMOD:定时器1工作方式2-8位初值自动重装的8位定时器//定时器0工作方式1,为16位定时器//SCON=0x50;*************TH0=(65536-50000)/256;//定时器T0初值1秒HL0=(65536-50000)%256;//TH1=0xfd;//定时器T1初值串口波特率TL1=0xfd;//方式1的波特率=(2SMOD/32)*T1溢出率TR1=1;//定时器/计数器控制寄存器

5、TCON-TR1定时器T1运行控制位ET0=1;//中断允许寄存器IEET0定时计数器0中断允许位SM0=0;//SM0/SM1/REN都是串行口控制寄存器SCON中的位,单片机刚上电时SCON被清0,SM1=1;//此时串口设定为方式0(同步移位寄存器的输入/输出方式),当执行完REN=1后,REN=1;//单片机便直接开始从RXD引脚接收数据,并不管与它连接的系统有无发送数据,//这时SM0和SM1还未操作,可单片机串口寄存器已经收到数据,并产生串口中断,//因此串口中断中的标志位flag将被置

6、1,当运行到下面两条指令后,串口方式才//设置为方式1,此时才终止串口接收数据,当程序运行到While(1)大循环中时,//因为串口中断服务程序中的标志位flag已被置1,所以接下来发送里面的"Iget",//至于后面的a被发送到上位机后为什么是一个空格!!a=之前没赋值!EA=1;//全局中断允许位ES=1;//串行口中断允许位}voiddisplay(ucharvalue){ucharbai,shi,ge;bai=value/100;shi=value/100/10;ge=value%10;du

7、la=1;P0=table[bai];dula=0;P0=0xff;wela=1;P0=0x7e;wela=0;delayms(5);dula=1;P0=table[shi];dula=0;P0=0xff;wela=1;P0=0x7d;wela=0;delayms(5);dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0x7b;wela=0;delayms(5);}ucharget_ad(){ucharadval;adwr=1;_nop_();adwr=0;

8、_nop_();adwr=1;P1=0xff;adrd=1;_nop_();adrd=0;_nop_();adval=P1;adrd=1;returnadval;}voidmain(){init();wela=1;P0=0x7f;wela=0;while(1){if(flag_uart==1){flag_uart=0;ES=0;TI=1;//每次调用printf()和puts()函数之前,须将串口中断关闭,若不关闭串口中断,每发送一个字节//,程序就会申请进入串口中断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。