当前位置:文档之家› 蓝桥杯驱动程序带注释--UART串口通信

蓝桥杯驱动程序带注释--UART串口通信

UART.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
/******************************************** * 注意从例程上复制的需要修改成 & | 的方式 * 在主函数中打开EA = 1; ES = 1; * if(strcmp(string, "AAASSS") == 0) 注意添加头文件:#include "string.h" {//比较两个字符串,相等返回0,string1<string2小于返回负数,大于返回正数, SendString("STC15F2K60S2\r\nUart Test !\r\n"); string[0] = 0; //改变str:42:56 ********************************************/ #ifndef _UART_H #define _UART_H #include "stc15f2k60s2.h" #include <string.h> #define FOSC 11059200L //系统频率 #define BAUD 9600 //串口波特率 bit busy; //注意定义数组长度,字符串多一个\0 extern unsigned char string[10]; void Init_UART() { SCON = 0x50; //8位可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 TMOD |= 0x20; //设定定时器1为8位自动重装方式 TL1 = (256 - (FOSC/32/BAUD)); //设置波特率重装值 TH1 = (256 - (FOSC/32/BAUD)); TR1 = 1; //定时器1开始工作 ES = 1; //使能串口中断 } //发送串口数据 void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } //发送字符串 void SendString(char *s) { while (*s) //检测字符串结束标志 { SendData(*s++); //发送当前字符 } } //UART 中断服务程序 void Uart() interrupt 4 using 1 { static unsigned char i = 0; if (RI) { RI = 0; //清除RI位 string[i] = SBUF; i++; if(i >= 6) //此处的值和字符串中的个数相对应,不算 \0 { i = 0; } } if (TI) { TI = 0; //清除TI位 busy = 0; //清忙标志 } } #endif
1
相关主题