新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PIC18FXX8单片机通用同步异步收发器的接口电路和C源代码

PIC18FXX8单片机通用同步异步收发器的接口电路和C源代码

作者:时间:2012-06-01来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/171367.htm

voidinterrupt low_priorityLOW_ISR()/* 低优先级中断子程序 */
{
if(RCIF==1)/* RS232接收中断 */
{
RCIF=0;/* 清中断标志 */
receive232[receive_count]=RCREG;/* 接收数据并存储 */
send232[receive_count]=RCREG; /* 接收数据存放到发送缓冲数组 */
receive_count++;/* 接收计数器加1 */
if(receive_count>7)/* 如果已经接收到8个数据 */
{
receive_count=0;/* 接收计数器清0 */
SciReceiveFlag=1;/* 置接收到8个数据标志 */
}
}
elseif((0!=Send_Mode)(TXIF==1))/* 中断发送数据方式且为发送中断 */
{
if(send_count>7)/* 已经发送完8个数 */
{
TXEN=0;/* 发送不使能 */
return;
}
else
{
send_count++;/* 发送计数器加1 */
TXREG=*pointer++;/* 发送当前应发送数据,发送指针加1 */
}
}
}

main() /* 主程序 */
{
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;i8;i++)
{
TXREG=*pointer++;/* 发送数据后,将发送指针加1 */
while(1)/* 等待发送完成 */
{
if(TXIF==1)break;/* 等待发送完成 */
}
}
}
}
}
}

DIY机械键盘相关社区:机械键盘DIY



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭