#include "W78E354.H"<br />#define COUNT 4 //定义接收缓冲区的大小//<br />#define uchar unsigned char<br />/*数据采集部分管脚定义*/<br />/*串口输出部分管脚定义*/<br />sbit RE_DE=P1^4;//485控制引脚//<br />sbit Key_3=P0^4;<br />sbit Key_4=P0^5;<br />sbit ALARM=P0^3;<br />/*7219管脚定义*/<br /> <br /><br />uchar idata displ[COUNT]={3,6,8};/*定义发送缓冲区*/<br />void COM_inter(void);/*声明函数变量*/<br />void Timer_ini(void);<br />main()<br />{ <br /> RE_DE=0;/*485准备接收*/<br /> Timer_ini();<br /> while(1)<br /> { <br /> }<br />}<br /><br />void Timer_ini(void) //定时器的初始化//<br />{<br /> TMOD=0x20;/*定时器0工作于方式2,定时器1工作于方式2, 0010 0010*/ <br /> TH1=0xb7;//实现数据传输率9600//<br /> TL1=0xb7;<br /> SCON=0x50;//选择串口工作方式1,打开接收允许//<br /> PCON=0x00;//波特率倍增设置//<br /> TR1=1;//启动定时器T1//<br /> ES=1;EA=1;//允许串口中断//<br />}<br /><br />//--------------------------------------------------------<br />//函数名称:COM_send();串口发送函数<br />//函数功能:把数据缓冲区的4位数据发送出去<br />//--------------------------------------------------------<br />void COM_send(void)<br />{<br /> uchar point;<br /> for(point=0;point<COUNT;point++) //连续发送4位数据,将数据发送到缓冲口//<br /> { <br /> SBUF=displ[point];//发送数据//<br /> while(TI!=1);<br /> TI=0;<br /> }<br /> ES=1;<br />}<br /><br />//--------------------------------------------------------<br />//函数名称:com_interrup()串口接收中断处理函数<br />//函数功能:接收包括起始位0xFE,地址位和终止位0xEF在内的10bit数据到数据缓冲区<br />// ,地址不匹配,则接收到的是无效数字,不写到接收缓冲区<br />//--------------------------------------------------------<br /> void COM_inter(void) interrupt 4 using 1//串口处理函数//<br />{ <br /> uchar a;/*串口标志*/<br /> RI=0;<br /> ES=0;<br /> RE_DE=0;<br /> a=SBUF;<br /> switch(a)<br /> {<br /> case 0x01:RI=0;ES=1;break;/*调用函数实现泵的控制*/<br /> case 0x02:RI=0;ES=1;break;/*调用函数实现阀的控制*/<br /> default:RE_DE=1;TI=0; ES=0;COM_send();break;/*使485处于发送状态,发送数据*/<br /> }<br />}<br />我的程序在keil里 仿真 是能发送数据的 但是在串口调试助手里,就不能发送数据到上位机 ,请各位看看 我在线等 谢谢 |
|