📄 main.c.bak
字号:
#include <stdio.h>
#include <pic.h>
#include "usart.h"
#include "user_base_def.h"
#include "m_usart.h"
#include "gobal_ram.h"
void delay(uint n)
{
uint i;
uchar j;
for(i=0; i<n; i++)
{
for(j=0; j<255; j++);
}
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
void main(void)
{
char i=0;
//
init_comms();
//
Init_m_usart(0, 0);
//
PEIE=1;
GIE=1;
while(1)
{
m_putch(i++);
delay(1000);
}
}
//-----------------------------------------------------------------
static void interrupt INT_PROC(void)
{
//时钟1中断
if(TMR1IF)
{
//重入
TMR1IF=0;
TMR1H=m_BT_reLoad_H;
TMR1L=m_BT_reLoad_L;
//发送时序
if(m_TX_enble)
{
if(0==p_m_TXBUF)
{
TX_Line=0;
p_m_TXBUF++;
}
else if(p_m_TXBUF<9)
{
if((1<<(p_m_TXBUF-1))&m_TXBUF)
{
TX_Line=1;
}
else
{
TX_Line=0;
}
p_m_TXBUF++;
}
else
{
//是否要发第九位
if(m_8_OR_9)
{
if(9==p_m_TXBUF)
{
TX_Line=m_TX_BIT9;
}
else
{
//停止
TX_Line=1;
m_TX_enble=0;
}
}
else
{
//停止
TX_Line=1;
m_TX_enble=0;
}
}
}
//接收时序
if(m_RX_enble)
{
if(0==p_m_RXBUF)
{
//起始位的时间已过开始接收数据
if(RX_Line)
{
m_RXBUF|=0x01;
}
else
{
m_RXBUF&=0xfe;
}
//
p_m_TXBUF++;
}
else if(p_m_RXBUF<8)
{
if(RX_Line)
{
m_RXBUF|=(1<<p_m_TXBUF);
}
else
{
m_RXBUF&=!(1<<p_m_TXBUF);
}
//
p_m_TXBUF++;
}
else
{
//是否要收第九位
if(m_8_OR_9)
{
m_RX_BIT9=RX_Line;
}
//接收结束
m_RX_enble=0;
p_m_RXBUF=0;
//开检测中断
RBIE=1;
m_RCIF=1; //模拟接收到新数据标志
}
}
}
//=============================================================
//模拟端口接收中断起始
if(RBIF)
{
if(0==p_m_RXBUF)
{
if(!RX_Line)
{
//起始位到了
m_RX_enble=1;
//重入模拟波特率
TMR1IF=0;
TMR1H=m_BT_reLoad_H;
TMR1L=m_BT_reLoad_L;
//关检测中断
RBIE=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -