📄 uart2.c
字号:
/****************************************************************************************
*文件:UART2.C
*功能:利用LPC900普通I/O口实现模拟串口,占用定时器1
*日期:05/07/18
*****************************************************************************************/
#include "Reg935.h"
#include "uart2.h"
#define uchar unsigned char
#define BRH 0xfd //0xfe 0x95//波特率为9600,使用内部RC振荡
#define BRL 0x15 //0xfd 0x15 //波特率为4800,使用内部RC振荡
//////////////////////////////////////////////////////////////////////////////////////////
uchar num;
uchar uart2s; //ie. SBUF2
unsigned char uart2f=0; //0:disable 1:read 2:send 3: read completed 4:send completed
//****************************************************************************************
void timer1_isr(void) interrupt 3
{
TH1=BRH;
TL1=BRL;
if(uart2f==2) //每个IF大概运行32周期,从而可以计算出BRH和BRL
{
if(num>1)
{
if(uart2s&(0x01<<(9-num)))
{uart2txd=1;}
else
{uart2txd=0;}
num--;
}
else if(num==1)
{
uart2txd=1;
//uart2f=4;
num--;
// num=9;
}
else {TR1=0;uart2f=4;}
}
if(uart2f==1)
{
if(num>1)
{
if(uart2rxd)
{uart2s=uart2s|(0x01<<(9-num));}
else
{uart2s=uart2s&~(0x01<<(9-num));}
num--;
}
// else if(num==1){if(uart2rxd)num--;
// }
else
{
uart2f=3;
TR1=0;
}
}
}
//---------------------------------------------------------------------------------------
//uart2send: 向模拟串口发送一个字符
//入口参数: s 被发送字符
//出口参数: 无
//---------------------------------------------------------------------------------------
void uart2send(uchar s)
{
TH1=BRH;
TL1=BRL;
num=9;
uart2s=s;
uart2f=2;
uart2txd=0;
TR1=1;
while(uart2f!=4);
}
//---------------------------------------------------------------------------------------
//uart2read: 向模拟串口接收一个字符
//入口参数 无
//出口参数 s 被发送字符
//---------------------------------------------------------------------------------------
unsigned char uart2read(void)
{
while(uart2rxd);
num=9;
uart2f=1;
TH1=BRH-1;
TL1=BRL;//-0x15;
TR1=1;
while(uart2f!=3);
while(!uart2rxd);
return(uart2s);
}
//---------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -