完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
新人小白,最近使用STC15W40S4串口2向便携打印机发送数据,但是始终无法调通,已经困扰好久,只能求大神帮忙,以下附上程序:
typedef unsigned char BYTE; typedef unsigned int WORD; #define S2RI 0x01 //S2CON.0 #define S2ti 0x02 //S2CON.1 #define S2RB8 0x04 //S2CON.2 #define S2TB8 0x08 //S2CON.3 bit bdata busy; /*---------------------------- UART2 中断服务程序 -----------------------------*/ void Uart2() interrupt 8 { if (S2CON & S2RI) { S2CON &= ~S2RI; //清除S2RI位 } if (S2CON & S2TI) { S2CON &= ~S2TI; //清除S2TI位 busy = 0; //清忙标志 } } /*---------------------------- 发送串口数据 ----------------------------*/ void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; S2BUF = dat; //写数据到UART数据寄存器 } /*---------------------------- 发送字符串 ----------------------------*/ void SendString(unsigned char *s) { while (*s) //检测字符串结束标志 { SendData(*s++); //发送当前字符 } } void UartInit2(void) //115200bps@5.5296MHz { S2CON = 0x50; //8位数据,可变波特率 AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T T2L = 0xFF; //设定定时初值 T2H = 0xFF; //设定定时初值 AUXR |= 0x10; //启动定时器2 IE2 = 0x01; //使能串口2中断 EA = 1; IP2 |= 0x00; //串口2优先级0 } void main() { unsigned char k=0; UartInit(); busy = 0; SendData('A'); SendData(0x0A); while(1){ } } |
|
相关推荐
3个回答
|
|
STC单片机不是有提供例程吗,用例程一般都是可以通的,要是不行建议检查下电路
|
|
|
|
除了程序问题,还有你的上位机的设置是不是正确
|
|
|
|
你的初始化函数名前后不一样啊
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
377 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
536 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
540 浏览 0 评论
950 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1403 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11760 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:57 , Processed in 0.533091 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号