|
#include <STC8.H>
#define u8 unsigned char
#define u16 unsigned int
void UART_Init(u16 BaudRate) //串口初使化函数 11.0592Mhz 8A8K单片机
{
u8 TH1_Dat;
switch(BaudRate)
{
case 2400: TH1_Dat=0x70; break;
case 4800: TH1_Dat=0xB8; break;
case 9600: TH1_Dat=0xDC; break;
case 19200: TH1_Dat=0xEE; break;
case 57600: TH1_Dat=0xFA; break;
case 115200: TH1_Dat=0xFD; break;
}
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //定时器工作模式,0x20-工作方式2:8位自动重装载模式
SCON = 0x50; //串行口工作方式控制寄存器,当前为1
//Bit[7:6],00为工作方式0,01方式1,10方式2,11方式3
PCON |=0x00; //Bit7-波特率倍增位:0-不培增 1-培增
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfE; //串口1选择定时器1为波特率发生器
TH1 = TH1_Dat; //8位自动重装载定时器模式下,TH1被用作自动重装载值寄存器
TL1 = TH1_Dat; //TL1为计数寄存器
TR1 = 1; //定时器1开始计数
ET1 = 0; //禁止定时器1中断
ES = 1; //串口中断允许位
EA = 1; //打开总中断
}
void main()
{
UART_Init(115200);
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF; //出去接收到的数据
RI = 0; //清除接收中断标志位
SBUF=receiveData; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
#include <STC8.H>
#define u8 unsigned char
#define u16 unsigned int
void UART_Init(u16 BaudRate) //串口初使化函数 11.0592Mhz 8A8K单片机
{
u8 TH1_Dat;
switch(BaudRate)
{
case 2400: TH1_Dat=0x70; break;
case 4800: TH1_Dat=0xB8; break;
case 9600: TH1_Dat=0xDC; break;
case 19200: TH1_Dat=0xEE; break;
case 57600: TH1_Dat=0xFA; break;
case 115200: TH1_Dat=0xFD; break;
}
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //定时器工作模式,0x20-工作方式2:8位自动重装载模式
SCON = 0x50; //串行口工作方式控制寄存器,当前为1
//Bit[7:6],00为工作方式0,01方式1,10方式2,11方式3
PCON |=0x00; //Bit7-波特率倍增位:0-不培增 1-培增
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfE; //串口1选择定时器1为波特率发生器
TH1 = TH1_Dat; //8位自动重装载定时器模式下,TH1被用作自动重装载值寄存器
TL1 = TH1_Dat; //TL1为计数寄存器
TR1 = 1; //定时器1开始计数
ET1 = 0; //禁止定时器1中断
ES = 1; //串口中断允许位
EA = 1; //打开总中断
}
void main()
{
UART_Init(115200);
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF; //出去接收到的数据
RI = 0; //清除接收中断标志位
SBUF=receiveData; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
|
评分
-
查看全部评分
|