#include <iostm8s103f3.h>
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
uchar data;
void Fosc_Init(void)
{
CLK_CKDIVR_HSIDIV = 0; //1分频
}
/************************************************
函数名称:gpio_init
函数功能:GPIO始化
入口参数:无
出口参数:无
************************************************/
void gpio_init(void)
{
PB_DDR = 0X20;
PB_CR1 = 0X00;
PB_CR2 = 0X00;
PB_ODR = 0Xff;
}
void uart1_init(void)
{
UART1_CR1=0x00;
UART1_CR2=0x00;
UART1_CR3=0x00;
UART1_BRR2 = 0x03;
UART1_BRR1 = 0x68; //9600波特率
UART1_CR2_TEN = 1; //允许发送
UART1_CR2_REN = 1; //允许接收
UART1_CR2_RIEN = 1; //接收中断使能
}
void uart1_send(uchar dat)
{
while((UART1_SR & 0x80)==0x00);
UART1_DR = dat;
}
void main(void)
{
asm("sim"); //关总中断
gpio_init(); //IO初始化
uart1_init(); //串口初始化 TX(PD5) RX(PD6)
Fosc_Init(); //16M
asm("rim"); //开总中断
while(1)
{
asm("nop");
}
}
#pragma vector = UART1_R_RXNE_vector
__interrupt void uart1rxd(void)
{
UART1_SR_RXNE = 0;
data = UART1_DR;
if(data==0x01)
PB_ODR = 0X00; //LED亮
else
PB_ODR = 0Xff; //LED灭
}