專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
深圳市英銳恩科技有限公司:臺(tái)灣麥肯單片機(jī)(Micon MDT單片機(jī))亞太地區(qū)A級(jí)代理商
QLdsPIC3}RS-232通信1{C30+dsPIC30F6014A}
適用于帶握手協(xié)議的RS232-A模塊
#include //dsPIC30F6014標(biāo)準(zhǔn)頭文件
_FOSC(0x0ffe5); //XT振蕩,4倍頻晶振.
_FWDT(WDT_OFF); //關(guān)閉看門狗定時(shí)器
_FBORPOR(PBOR_OFF & MCLR_EN); //掉電復(fù)位禁止,MCLR復(fù)位使能。
_FGS(CODE_PROT_OFF); //代碼保護(hù)禁止
void ini232(void);
void __attribute__((__interrupt__)) _U1RXInterrupt(void); /*Declare 232 interrupt ISRs*/
unsigned char rxdata1; //定義接收數(shù)據(jù)緩存變量
//******************主函數(shù)*************************
int main (void)
{
unsigned char i;
ini232(); //調(diào)用RS232口初始化函數(shù)
for(i=100;i>0;i--); //延長(zhǎng)時(shí)間以保證可靠初始化
while(1);
}
//*************RS232初始化函數(shù)**********************
void ini232(void)
{
TRISFbits.TRISF2 =1; //RC腳輸入
TRISFbits.TRISF3 =0; //TX腳輸出
IPC2bits.U1RXIP=7; //中斷優(yōu)先級(jí)別
IEC0bits.U1TXIE=0; //禁止發(fā)送中斷
IEC0bits.U1RXIE=1; //使能接收中斷
U1BRG =64; //波特率設(shè)置為9600,外部10M
U1MODE =0x8020; //使能UART功能
U1STA=0X0000;
U1STAbits.UTXEN =1; //允許發(fā)送
}
//************接收中斷函數(shù)**************************
void __attribute__((__interrupt__)) _U1RXInterrupt(void)
{
IFS0bits.U1RXIF = 0; //清除中斷標(biāo)志位
while(U1STAbits.URXDA) //讀取接收到的所有數(shù)據(jù)
{
rxdata1=U1RXREG; //緩存接收的數(shù)據(jù)
U1TXREG=rxdata1; //把接收到的數(shù)據(jù)發(fā)送回去
while(U1STAbits.TRMT==0); //等待發(fā)送完畢
}
}