?? 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 + -