📄 uart_040.c
字号:
#include "c8051F040.h"
#define uchar unsigned char
#define uint unsigned int
void port_init();
void os_init();
void uart_init();
void time_init();
/*************************************************************************
*
*主函数
**************************************************************************/
void main()
{
uchar g;
WDTCN = 0xDE; // 关闭看门狗
WDTCN = 0xAD;
os_init(); //晶振初始化
port_init(); //端口初始化
uart_init();
time_init();
SFRPAGE = CONFIG_PAGE;
IE = 0x90; //开中断
while(1)
{
SFRPAGE = UART0_PAGE;
g=SBUF0;
SFRPAGE = UART0_PAGE;
while(RI0==0); RI0=0;
{
SFRPAGE = UART0_PAGE;
SBUF0=g;
while(TI0==0);
SFRPAGE = UART0_PAGE;
TI0=0;
}
}
}
/*************************************************************************
*
*端口初始化函数
**************************************************************************/
void port_init()
{
SFRPAGE = CONFIG_PAGE;
XBR0 = 0x04;
XBR2 = 0x40;
P0MDOUT = 0X10;
}
/*************************************************************************
*
*系统时钟初始化,选择外部晶体振荡器
**************************************************************************/
void os_init()
{
int i = 0;
SFRPAGE = CONFIG_PAGE;
OSCXCN = 0x67; //外部22.1184M晶振
for (i = 0; i < 3000; i++); //等待外部晶振稳定
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01; //系统时钟不分频
}
/*************************************************************************
*
*串口初始化,选择UART1
**************************************************************************/
void uart_init()
{
SFRPAGE = UART0_PAGE;
SCON0 = 0x50; //允许uart1
}
/*************************************************************************
*
*定时器初始化,作为UART0的波特率发生器
*************************************************************************/
void time_init()
{
SFRPAGE = TIMER01_PAGE;
TCON = 0X40;
TMOD = 0x20;
CKCON = 0X10;
TH1 = 0xb8;
TR1=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -