发表于:2004-08-26 12:32:00
2楼
其实去买一本C51的书就有。下面是前些日子写的一段程序,可以参考
//初始化串口
void InitPort()
{
//serial port initail
IP = 0x10; //high priority interrupt
TCON = 0x05;
TMOD = 0x21; //timer1 auto-load mode, timer0 work mode 1
PCON = 0x80; //baud rate double
SCON = 0x50; //serial work mode 1, allow receive
TH1 = 0x0F4; //9600 at 22.1184MHz
TL1 = 0x0F4; //
TR1 = 1; //start timer 1
EA = 1; //enable interrupt
ES = 1; //enable serial interrupt
//
BUSY=1;
REQ=0;
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//函数名称:GetChar
//------------------------------------------------------------------------------------------------
//输入参数:
//输出参数:
//------------------------------------------------------------------------------------------------
//说明:串口接收字
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
char GetChar()
{
char SData;
bit E;
E = EA;
EA = 0;
SData = SBUF;
RI = 0;
EA = E;
return SData;
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//函数名称:SerialRcv_INT
//------------------------------------------------------------------------------------------------
//输入参数:
//输出参数:
//------------------------------------------------------------------------------------------------
//说明:串口接收中断//Serial Receive Interrupt react program
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
void SerialRcv_INT(void) interrupt 4 using 3
{
char Rcv;
EA = 0;
Rcv = GetChar();
//将接收字符做处理--协议自定
EA = 1;
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//函数名称:PutChar
//------------------------------------------------------------------------------------------------
//输入参数:char SData
//输出参数:
//------------------------------------------------------------------------------------------------
//说明:串口发送字符//Put Charactor<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
void PutChar(char SData)
{
bit E;
E = EA;
EA = 0;
SBUF = SData;
while(TI == 0);
TI = 0;
EA = E;
}
PCON = 0x80; //baud rate double
SCON = 0x50; //serial work mode 1, allow receive
// TH1 = 0x0FC; //9600 at 7.3746MHz
// TL1 = 0x0FC; //
TH1 = 0x0F4; //9600 at 22.1184MHz
TL1 = 0x0F4; //
TR1 = 1; //start timer 1
EA = 1; //enable interrupt
ES = 1; //enable serial interrupt
//
BUSY=1;
REQ=0;
}
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//函数名称:GetChar
//------------------------------------------------------------------------------------------------
//输入参数:
//输出参数:
//------------------------------------------------------------------------------------------------
//说明:串口接收字
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
char GetChar()
{
char SData;
bit E;
E = EA;
EA = 0;
SData = SBUF;
RI = 0;
EA = E;
return SData;
}