PIC串口模拟代码
- 名称:PIC串口模拟代码
- 类型:单片机学习
- 授权方式:免费版
- 更新时间:09-10 23:00:38
- 下载要求:无需注册
- 下载次数:6240次
- 语言简体中文
- 大小:2.48 MB
- 推荐度:3 星级
PIC串口模拟代码
unsigned char m_TXBUF; //(全局)模拟发送缓冲字节
unsigned char m_RXBUF; //(全局)模拟接收缓冲字节
bit m_TX_BIT9; //(全局)模拟发送第九位
bit m_RX_BIT9; //(全局)模拟接收第九位
unsigned char p_m_TXBUF; //(全局)发送指针
unsigned char p_m_RXBUF; //(全局)接收指针
bit m_8_OR_9; //(全局收发模式标志:1为9位收发,0位8位收发
//bit m_TXIF; //(全局发送完标志(1发送完,0正在发)
bit m_TX_enble; //发送允许
bit m_RCIF; //(全局接收完标志(1接收完,0在接收或等待接收)
bit m_RX_enble; //接收允许
unsigned char m_BT_reLoad_H; //(全局时钟1初值重载_H
unsigned char m_BT_reLoad_L; //(全局时钟1初值重载_L
//
//缓冲区
unsigned int TIMER_M_BYTE_OVER_count; //模拟字节超时计时
unsigned char M_RXBuf[M_RX_PKG_LEN]; //模拟包缓冲区
unsigned char p_M_RXBuf; //模拟包缓冲区指针
bit Flag_M_byte_time; //模拟字节间隔计时标志
bit Flag_M_PKG_Over; //模拟包结束(1为收完一包,0未收完)
//----------------------------------------------------------------------------- 字串9
//初始化模拟串口
//Bt: 波特率代码
//Flag89: 9位还是8位收发
void Init_m_usart(unsigned long Foc, unsigned long Bt, unsigned char Flag89)
{
//字节部分
//=
//初始化全局内存变量
if(Flag89)
{
m_8_OR_9=1;
}
else
{
m_8_OR_9=0;
}//9位接收标志
p_m_TXBUF=0; //发送初始
p_m_RXBUF=0; //接收初始
//m_TXIF=1; //初始发送完
m_TX_enble=0; //发送允许(不允许)
m_RCIF=0; //初始等待接收
m_RX_enble=0; //接收允许(不允许)
//初始波特率时钟T1
//m_BT_reLoad_H=0xF7; //(全局时钟1初值重载_H 11.0592M 1200
//m_BT_reLoad_L=0x00; //(全局时钟1初值重载_L
//m_BT_reLoad_H=0xEE; //(全局时钟1初值重载_H 11.0592M 600
//m_BT_reLoad_L=0x00; //(全局时钟1初值重载_L
m_BT_reLoad_H=(FULL_U16-Foc/(4*Bt))/FULL_U8;
m_BT_reLoad_L=(FULL_U16-Foc/(4*Bt))%FULL_U8;
T1CON=1; //不分频,时钟开起来
//m_BT_reLoad_H=0x00; //(全局时钟1初值重载_H 字串8
//m_BT_reLoad_L=0x00; //(全局时钟1初值重载_L
//T1CON=0x31; //不分频,时钟开起来
TMR1H=m_BT_reLoad_H;
TMR1L=m_BT_reLoad_L;
TMR1IE=1; //允许时钟1中断
//模拟串口的口线输入输出类型设定
IOStyle_TX_Line=0; //发送口线类型 (输出)
TX_Line=1; //发送口线 (高)
IOStyle_RX_Line=0; //接收口线类型 (输出)
RX_Line=1; //接收口线 (高)
IOStyle_RX_Line=1; //接收口线类型 (输入)
//接收外部中断(PB端口电瓶变化)开起来
RBIF=0;
RBIE=1;
//=
//包部分
//=
TIMER_M_BYTE_OVER_count=0; //模拟字节超时计时
p_M_RXBuf=0; //模拟包缓冲区指针
Flag_M_PKG_Over=0; //模拟包结束(1为收完一包,0未收完)
Flag_M_byte_time=0; //模拟字节间隔计时标志 高速下载