#include "STM8S207R8.h"void Init_UART1(void){ UART1_CR1=0x00; UART1_CR2=0x00; UART1_CR3=0x00; // 设置波特率,必须注意以下几点: // (1) 必须先写BRR2 // (2) BRR1存放的是分频系数的第11位到第4位, // (3) BRR2存放的是分频系数的第15位到第12位,和第3位 // 到第0位 // 例如对于波特率位9600时,分频系数=2000000/9600=208 // 对应的十六进制数为00D0,BBR1=0D,BBR2=00 UART1_BRR2=0x00; UART1_BRR1=0x0d; UART1_CR2=0x2c;//允许接收,发送,开接收中断 }void UART1_sendchar(u8 data){ while((UART1_SR & 0x80)==0x00); UART1_DR=data;}@far @interrupt void UART1_Recv_IRQHandler (void){ u8 data; data=UART1_DR; showLine(6,2,lcd_buffer,"0x%x2",(u16)data); return;}void Init_UART3(void){ UART3_CR1=0x00; UART3_CR2=0x00; UART3_CR3=0x00; // 设置波特率,必须注意以下几点: // (1) 必须先写BRR2 // (2) BRR1存放的是分频系数的第11位到第4位, // (3) BRR2存放的是分频系数的第15位到第12位,和第3位 // 到第0位 // 例如对于波特率位9600时,分频系数=2000000/9600=208 // 对应的十六进制数为00D0,BBR1=0D,BBR2=00 UART3_BRR2=0x00; UART3_BRR1=0x0d; UART3_CR2=0x2c;//允许接收,发送,开接收中断 }void UART3_sendchar(u8 data){ while((UART3_SR & 0x80)==0x00); UART3_DR=data;}@far @interrupt void UART3_Recv_IRQHandler (void){ u8 data; data=UART3_DR; showLine(6,2,lcd_buffer,"0x%x2",(u16)data); return;}main(){ u8 tmp=0; Init_UART3(); Init_UART1(); _asm("rim"); while(1) { UART3_sendchar(tmp); delay_ms(10); tmp++; delay_ms(1000); }}
|