深圳市英锐恩科技有限公司:台湾麦肯单片机(Micon MDT单片机)亚太地区A级代理商
QLdsPIC3}RS-232通信1{C30+dsPIC30F6014A}
适用于带握手协议的RS232-A模块
#include //dsPIC30F6014标准头文件
_FOSC(0x0ffe5); //XT振荡,4倍频晶振.
_FWDT(WDT_OFF); //关闭看门狗定时器
_FBORPOR(PBOR_OFF & MCLR_EN); //掉电复位禁止,MCLR复位使能。
_FGS(CODE_PROT_OFF); //代码保护禁止
void ini232(void);
void __attribute__((__interrupt__)) _U1RXInterrupt(void); /*Declare 232 interrupt ISRs*/
unsigned char rxdata1; //定义接收数据缓存变量
//******************主函数*************************
int main (void)
{
unsigned char i;
ini232(); //调用RS232口初始化函数
for(i=100;i>0;i--); //延长时间以保证可靠初始化
while(1);
}
//*************RS232初始化函数**********************
void ini232(void)
{
TRISFbits.TRISF2 =1; //RC脚输入
TRISFbits.TRISF3 =0; //TX脚输出
IPC2bits.U1RXIP=7; //中断优先级别
IEC0bits.U1TXIE=0; //禁止发送中断
IEC0bits.U1RXIE=1; //使能接收中断
U1BRG =64; //波特率设置为9600,外部10M
U1MODE =0x8020; //使能UART功能
U1STA=0X0000;
U1STAbits.UTXEN =1; //允许发送
}
//************接收中断函数**************************
void __attribute__((__interrupt__)) _U1RXInterrupt(void)
{
IFS0bits.U1RXIF = 0; //清除中断标志位
while(U1STAbits.URXDA) //读取接收到的所有数据
{
rxdata1=U1RXREG; //缓存接收的数据
U1TXREG=rxdata1; //把接收到的数据发送回去
while(U1STAbits.TRMT==0); //等待发送完毕
}
}