📄 comtest.c
字号:
//*************************************************************
//* The RS232 program(C)version 1.0 *
//* By Li Huailiang 2007.10.12 *
//*************************************************************
#pragma REGPARMS
#include<c8051f020.h>
#include<intrins.h>
#include<absacc.h>
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
//--------------------------------------------------------------
uchar data asab[]={"this is Li \n"};
//uchar xdata RESULT[300];
//--------------------------------------------------------------
#define BAUDRATE 9600 // Baud rate of UART in bps
#define SYSCLK 11059200 // SYSCLK frequency in Hz
//--------------------------------------------------------------
void Oscillator_Init()
{
int i = 0;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
OSCICN = 0x0C;
}
//--------------------------------------------------------------
void PORT_Init (void)
{
XBR0 = 0x07; //Enable UART0 P0.0=TXD0 P0.1=RXD0
//Enable SPI P0.2=SCK P0.3=MISO
XBR1 = 0x00;
XBR2 = 0x44;
P0MDOUT |= 0xFD;
P1MDOUT |= 0x40;
P1MDIN=0xFF;
EMI0CF=0x3B;
}
//--------------------------------------------------------------
void WDT()
{
EA=0;
WDTCN = 0xde; // disable watchdog timer
WDTCN = 0xad;
EA=1;
}
//-----------------------------------------------------------------------------
// Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
void UART0_Init (void)
{
SCON0 = 0x50; //选择串口方式1,波特率9600bps
TMOD = 0x20;
TH1 = 256-(SYSCLK/BAUDRATE/384);
CKCON |= 0x00; // Timer1 uses SYSCLK as time base
PCON |= 0x00; // SMOD00 = 1
//TH1 = 0xFD;
//TL1 = 0xFD;
EA=1;
ES0=1; //UART0中断开启
TR1=1;
}
//-------------------------------------------------------------------------
void main()
{
uchar data i;
WDT();
Oscillator_Init();
PORT_Init();
UART0_Init();
for(i=0;i<15;i++)
{
ES0=0;
SBUF0=asab[i];
while(!TI0);
TI0=0;
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -