PIC18FXX8单片机通用同步异步收发器的编程应用
p; /* 主程序 */
{
INTCON=0x00; /* 关总中断 */
ADCON1=0X07; /* 设置数字输入输出口,不用作模拟口 */
PIE1=0; /* PIE1 的中断不使能 */
PIE2=0; /* PIE2 的中断不使能 */
PIE3=0; /* PIE3 的中断不使能 */
Send_Mode=1; /* Send_Mode不为0,中断方式发送数据;
Send_Mode =0,非中断方式发送数据 */
sciinitial(); /* 串行通讯初始化子程序 */
IPEN=1; /* 使能中断高低优先级 */
INTCON=INTCON|0xc0; /* 开总中断、开外围接口中断 */
while(1)
{
if(1==SciReceiveFlag) /* 是否接收到8个通信数据 */
{
SciReceiveFlag=0; /* 清接收到8个通信数据标志 */
if(0!=Send_Mode) /* Send_Mode不为0,中断方式发送 */
{
send_count=0; /* 发送数据计数清0 */
pointer=&send232[0]; /* 发送指针指向发送数据数组首地址 */
TXREG=*pointer++; /* 发送第一个数据后,将发送指针加1 */
TXEN=1; /* 使能发送 */
}
else /* Send_Mode =0,非中断方式发送数据 */
{
pointer=&send232[0]; /* 发送指针指向发送数据数组首地址 */
for(i=0;i<8;i++)
{
TXREG=*pointer++; /* 发送数据后,将发送指针加1 */
while(1) /* 等待发送完成 */
{
if(TXIF==1) break; /* 等待发送完成 */
}
}
}
}
}
}
《PIC18FXX8单片机通用同步异步收发器的编程应用(第4页)》
本文链接地址:http://www.oyaya.net/fanwen/view/158319.html
{
INTCON=0x00; /* 关总中断 */
ADCON1=0X07; /* 设置数字输入输出口,不用作模拟口 */
PIE1=0; /* PIE1 的中断不使能 */
PIE2=0; /* PIE2 的中断不使能 */
PIE3=0; /* PIE3 的中断不使能 */
Send_Mode=1; /* Send_Mode不为0,中断方式发送数据;
Send_Mode =0,非中断方式发送数据 */
sciinitial(); /* 串行通讯初始化子程序 */
IPEN=1; /* 使能中断高低优先级 */
INTCON=INTCON|0xc0; /* 开总中断、开外围接口中断 */
while(1)
{
if(1==SciReceiveFlag) /* 是否接收到8个通信数据 */
{
SciReceiveFlag=0; /* 清接收到8个通信数据标志 */
if(0!=Send_Mode) /* Send_Mode不为0,中断方式发送 */
{
send_count=0; /* 发送数据计数清0 */
pointer=&send232[0]; /* 发送指针指向发送数据数组首地址 */
TXREG=*pointer++; /* 发送第一个数据后,将发送指针加1 */
TXEN=1; /* 使能发送 */
}
else /* Send_Mode =0,非中断方式发送数据 */
{
pointer=&send232[0]; /* 发送指针指向发送数据数组首地址 */
for(i=0;i<8;i++)
{
TXREG=*pointer++; /* 发送数据后,将发送指针加1 */
while(1) /* 等待发送完成 */
{
if(TXIF==1) break; /* 等待发送完成 */
}
}
}
}
}
}
参考文献
[1] Microchip Technology Inc. PIC18FXX8 Data Sheet.2003.
《PIC18FXX8单片机通用同步异步收发器的编程应用(第4页)》