文本内容:
头文件Uart.h#ifndef_UART_H_#define_UART_H_#includeDataType.hvoidUart1_Initu16SYS_Clku32baud;voidUart1_SendDatau8data;voidUart1_IOConfigvoid;externu8RecData;externu8flag;#endif源文件Uart.c#includeiostm8s.h#includeUart.hu8RecData;u8i=0;u8flag;voidUart1_Initu16SYS_Clku32baud{u16UART_Temp=0;Uart1_IOConfig;USART1_CR2=0;//禁止UART发送和接收USART1_CR1=0x00;//8bitUSART1_CR3=0x00;//1stopbit//USART1_BRR2=0x0D;//USART1_BRR1=0x00;//9600baudrate/**************************************************设置波特率,必须注意以下几点1必须先写BRR22BRR1存放的是分频系数的第11位到第4位,3BRR2存放的是分频系数的第15位到第12位,和第3位到第0位例如对于波特率位9600时,分频系数=2000000/9600=208对应的十六进制数为00D0,BBR1=0DBBR2=00*************************************************/UART_Temp=SYS_Clk*1000000/baud;USART1_BRR2=u8UART_Temp0x000F|UART_Temp0xF0008;USART1_BRR1=u8UART_Temp0x0FF04;USART1_CR2=0x2C;//b3=1允许发送//b2=1允许接收//b5=1允许产生接收中断}@far@interruptvoidUSART1_RX_IRQHandlervoid{u8RxBuffer;RxBuffer=USART1_DR;//StorethereceivedbyteinRxBuffer//Uart1_SendDataRec_whole[w];RecData=RxBuffer0x0ff;return;}voidUart1_SendDatau8data{whileUSART1_SR0x80==0x00;//若发送寄存器不空,则等待USART1_DR=data;//将要发送的字符送到数据寄存器}voidUart1_IOConfigvoid{PD_DDR|=15;//输出模式TXDPD_CR1|=15;//推挽输出PD_DDR=~16;//输入模式RXDPD_CR1=~16;//浮空输入}。