#include <STC15F2K60S2.H> #include "intrins.h" #define uint_16 unsigned int #define uchar_8 unsigned char typedef unsigned char BYTE; typedef unsigned int WORD; #define FOSC 11059200L //系统频率 #define BAUD 57600 //串口波特率 #define NONE_PARITY 0 //无校验 #define ODD_PARITY 1 //奇校验 #define EVEN_PARITY 2 //偶校验 #define MARK_PARITY 3 //标记校验 #define SPACE_PARITY 4 //空白校验 #define PARITYBIT NONE_PARITY //定义校验位 #define BN 6 uchar_8 code tbuf[6]={"AT+VCC"}; uchar_8 rbuf; bit busy; uchar_8 i,y,h=65; void UART_INIT(); void SendData(BYTE dat); void SendString(char *s); void SendData2(); void main() //主程序 { UART_INIT(); _nop_(); _nop_(); SendData2(); while(1) { } } /*---------------------------- 串口初始化 ----------------------------*/ void UART_INIT() //串口初始化 { SCON= 0x50; //9位可变波特率,校验位初始为0 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 Uart() interrupt 4 { if (RI) { ES=0; RI = 0; //清除RI位 ACC= SBUF; //P0显示串口数据 ES=1; } if (TI) { TI = 0; //清除TI位 busy = 0; //清忙标志 } } /*---------------------------- 发送串口数据 ----------------------------*/ void SendData(BYTE dat) { while (busy); //等待前面的数据发送完成 ACC = dat; //获取校验位P (PSW.0) busy = 1; SBUF = ACC; //写数据到UART数据寄存器 } void SendData2() { //while(busy); SBUF=ACC; } /*---------------------------- 发送字符串 ----------------------------*/ void SendString(char *s) { while (*s) //检测字符串结束标志 { SendData(*s++); //发送当前字符 } } 不知道是哪里有问题?
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
时间类勋章
人才类勋章
17
56
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号