#include
#define FOSC 12000000L //系统频率 #define BAUD 9600 //串口波特率
#define S1_S0 0x40 //P_SW1.6 #define S1_S1 0x80 //P_SW1.7 unsigned char a,i=0;
unsigned char String[32];
bit busy;
/*************系统初始化****************/ void sys_init(void) { P20=1; P32=1; P33=1; //P_SW1=0x40; //P3.6/P3.7串口1 RXD/TXD //P_SW1=0x80; //P1.6/P1.7串口1 RXD/TXD }
/*************UART_1 初始化****************/
void UartInit(void) {
SCON = 0x50; //8位数据,可变波特率 T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值 T2H = (65536 - (FOSC/4/BAUD))>>8;
AUXR = 0x14; //T2为1T模式, 并启动定时器2
AUXR |= 0x01; //选择定时器2为串口1的波特率发生器 ES = 1; //使能串口1中断 EA = 1; }
/*************发送字符****************/ void SendData(unsigned char dat) {
while (busy); //等待前面的数据发送完成 busy = 1;
SBUF = dat; //写数据到UART数据寄存器 }
/*************发送字符串****************/
void SendString(char *s) {
while (*s) //检测字符串结束标志 {
SendData(*s++); //发送当前字符 } }
/*************主函数****************/ void main() { sys_init(); UartInit(); while(1) { if(P33==0) { // P20=0; SendString(\ } if(P32==0) { // P20=1; //SendData(a); SendString(String); } } }
/*************UART_1 中断服务程序****************/ void Uart1() interrupt 4 using 1 {
if (RI) {
RI = 0; //清除RI位
String[i++]= SBUF; //P0显示串口数据 if(i>8) i=0;
} if (TI) {
TI = 0; //清除TI位 busy = 0; //清忙标志 } }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库STC15F2K60S2系列串口1通信程序在线全文阅读。
相关推荐: