#include<c8051f060.h>
#include<stdio.h>
unsigned char ch = 0xBB;
#define SYSCLK 20000000 //系统时钟
#define BAUDRATE 115200 //UART波特率
void SYSCLK_Init (void); //系统时钟初始化
void PORT_Init (void); //端口初始化
void UART0_Init (void); //UART0初始化
void SYSCLK_Init (void)
{
SFRPAGE = CONFIG_PAGE;
OSCICN = 0x88;
}
void PORT_Init (void)
{
SFRPAGE = CONFIG_PAGE;
XBR0 = 0x04; //使能UART0
XBR1 = 0x00;
XBR2 = 0X40; //使能数据交叉开关和弱上拉
P0MDOUT |= 0x01;//允许TX0为推挽输出
}
void UART0_Init (void)
{
SFRPAGE = UART0_PAGE;
SCON0 = 0x50; //SCON0:模式1、8位UART、使能RX
TMOD = 0x20; //TMOD:定时器1、模式2、8位重装
TH1 = -(SYSCLK/BAUDRATE/16); //根据波特率设定值设定定时器1重装值
TR1 = 1;
CKCON |= 0x10; //定时器1使用系统时钟
PCON |= 0x80; //SMOD0=1
}
void main(void)
{
WDTCN = 0xde;
WDTCN = 0xad;
SYSCLK_Init();
PORT_Init();
UART0_Init();
while(1)
{
SBUF0 = ch;
while(!TI0);
TI0 = 0;
}
}