中断方式的串口收发代码,适用于STC 1T单片机,使用11.0592MHz晶振时串口的波特率为9600bps。UIO_OutBuff[]是发送缓存区,调用UIO_SendBuff()发送整个缓存区的内容。中断方式最大程度地节省CPU的资源。
UIO.h代码
extern unsigned char UIO_OutBuff[]; void UIO_Init(void); void UIO_SendBuff();
UIO.c代码
#include "Hardware.h" unsigned char UIO_OutBuff[] = "HELLO..."; unsigned char UIO_SendPos; void OnUARTReceive(); void UIO_Init(void) { // 9600 bps TMOD = 0xF & TMOD | 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; SM0 = 0; SM1 = 1; REN = 1; ES = 1; } void UIO_Routine(void) interrupt 4 { if (TI) { TI = 0; if (UIO_SendPos < sizeof(UIO_OutBuff) - 1) { SBUF = UIO_OutBuff[UIO_SendPos]; UIO_SendPos ++; } } else { RI = 0; OnUARTReceive(); } } void UIO_SendBuff() { SBUF = UIO_OutBuff[0]; UIO_SendPos = 1; }