//SPBRG=25; // SPBRG=51; 9600波特率计算出来的结果。 25为19200 波特率计算的通讯结果<br />// 辅助试验,改变波特率 或者改变通讯方式“ 异步高速、异步低速通讯方式 及基本的同步通讯方式F/4(X+1) 通常简易9600 高速异步通讯误差小<br /><br />#include"pic.h"<br />#include"pic1687x.h"<br />unsigned char table0[10]={0XBF,0X86,0XDB,0XCF,0XE6,0XED,0XFD,0XF7,0XFF,0XEF}; //LED 共阴极数码管显示代码,带点。<br />unsigned char table[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};<br /><br />unsigned char recdata; //来自计算机串口窗口发送的数据 V2.2<br /><br />void SYSinitial()<br />{<br />TRISD=0X00;<br />PORTD=0XFF;<br />INTCON=0X00;<br />ADCON1=0X07; //声明8个模拟通道都恢复通常的IO输入输出功能。不是模拟输入也不是参考电压设置。<br />}<br /><br />void USART232initial()<br />{<br />TRISC6=0; //RC6,SCL/TX 方向输出 RC7,SDA/RX 方向输入接受; <br />TRISC7=1;<br />PORTD=0XFF;<br /><br />TXSTA=0B00000000; //改为异步低速通讯 //CSRC, TX9,TXEN,SYNC; * ;BRGH,TRMT,TX9D; 异步通讯模式下,没有启用CSRC时钟源选择位。 本题是异步高速通讯模式。<br />RCSTA=0X80; //SPEN,RX9,SREN,CREN; ADDEN, FERR,OERR,RX9D;<br /><br />SPBRG=13; // SPBRG=51; 9600波特率计算出来的结果。 25为19200 波特率计算的通讯结果<br />PIR1=0X00;<br /><br />RCIE=1; //设置好串口的接受、发送中断使能位。 之后则只需要一个中断标志位置1.<br />//TXIE=1; //函数加了这条语句,RD 端口显示为全8 字符。 会影响到后期的显示部分,可以根据书本要点,省列此语句。<br />CREN=1;<br />TXEN=1; //首先考虑中断使能位, 再考虑具体的位。 RCSTA; TXSTA;<br />}<br /><br />void interrupt USART232() //异步同步(都包括) 的串口通讯中断子程序<br />{<br />if(RCIF==1)<br /> {<br /> RCIF=0;<br /> recdata=RCREG; //数据信息首先来自 PC机界面 V2.2窗口。 四个寄存器 接受结果寄存器,其中的数据赋值给变量,变量再转给发送 结果寄存器。<br /> TXREG=recdata+1; // TXREG=recdata+2; 如果函数再界面传送的数据都是16进制,那么可以考虑同时选中。<br /> }<br />}<br /><br /><br />void main()<br />{<br />SYSinitial();<br />USART232initial();<br />INTCON=INTCON|0XC0;<br /><br />while(1)<br /> {<br /> PORTD=table0[7];<br /> }<br /><br />} |
|