完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
#include "STC15F2Kxx.h" #include "uart.h" #include "intrins.h" #define FOSC 11059200L //系统频率(这里使用内部时钟晶振) #define BAUD 115200 //串口波特率 bit busy=0; //忙标志位 /******************************************************************************* * 函数名 : UART1_Init_Config * 描述 : UART1初始化配置 * 输入 : 无 * 输出 : 无 * 返回值 : 无 * 说明 : 无 *******************************************************************************/ void UART1_Init_Config(void) { P_SW1 &= 0x3f; //设置串口1在(P3.0/RxD, P3.1/TxD) SCON = 0x50; //8位UART,可变波特率,允许串行接收 AUXR &= 0xfe; //定时器1为1T模式 AUXR |= 0x40; //定时器1为1T模式 TMOD &= 0xF0; //定时器1为模式0(16位自动重载) TL1 = (65536 - (FOSC/4/BAUD)); //设置波特率重装值的低8位 TH1 = (65536 - (FOSC/4/BAUD))>>8;//设置波特率重装值的高8位 TR1 = 1; //启动定时器1计数 ES = 1; //使能串口中断 EA = 1; //使能总中断 } /******************************************************************************* * 函数名 : UART1_ISR * 描述 : UART1中断服务函数 * 输入 : 无 * 输出 : 无 * 返回值 : 无 * 说明 : 无 *******************************************************************************/ void UART1_ISR(void) interrupt 4 using 1 { if (RI) //接收数据 { RI = 0; //清除RI位 } if (ti) //发送数据 { TI = 0; //清除TI位 busy = 0; //清忙标志 } } /******************************************************************************* * 函数名 : SendData * 描述 : UART1发送一个字节 * 输入 : dat:待发送数据 * 输出 : 无 * 返回值 : 无 * 说明 : 无 *******************************************************************************/ void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } /******************************************************************************* * 函数名 : SendString * 描述 : UART1发送一个字符串 * 输入 : *s:待发送字符串首地址 * 输出 : 无 * 返回值 : 无 * 说明 : 无 *******************************************************************************/ void SendString(char *s) { while(1) { if(*s == ' |
