完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
新手学习,想通过STC12C5A60S2的串口2收发数据,写了个测试程序,就是串口助手发什么就接收什么
但是用串口助手测试的时候发不出去数据也接收不到数据,代码如下, 求前辈指点呀~~谢谢大家啦~! #include #define uchar unsigned char #define S2RI 0x01 //S2CON^0 #define S2ti 0x02 //S2CON^1 uchar Data_In,flag; void Usart2_Init() //9600bps,11.0592MHz;串口2初始化函数 { AUXR&=0xf7; //波特率不倍速; BRT=0xfd; //设定独立波特率发生器重装值; S2CON=0x50; //8位数据,可变波特率; AUXR&=0xfb; //独立波特率发生器时钟为Fosc,即1T; AUXR|=0x10; //启动独立波特率发生器; EA=1; //总中断打开; IE2=0x01; //串口2中断打开; } void Send_Usart2() { if(flag==1) { flag=0; IE2=0x00; S2BUF=Data_In; while(!(S2CON&S2TI)); S2CON&=~S2TI;//清标志位 IE2=0x01; } } void main() //主函数; { Usart2_Init(); while(1) { Send_Usart2(); } } void Usart2_Int() interrupt 8 //串口中断函数; { if(S2CON&S2RI) { S2CON&=~S2RI;//清标志位 Data_In=S2BUF; P1=Data_In; flag=1; } } |
|
相关推荐
3个回答
|
|
#include
#define uchar unsigned char #define S2RI 0x01 //S2CON^0 #define S2TI 0x02 //S2CON^1 void Usart2_Init() //9600bps,11.0592MHz; { AUXR&=0xf7; //2¨ìØÂê2»¼ó±¶ BRT=-36; //-fosc/(32*9600) S2CON=0x50; //·½ê½1 AUXR|=0x14; //BRTR=1 ¶àá¢2¨ìØÂê·¢éúÆ÷ BRT12=1 1TÄ£ê½ //EA=0; //2»DèÖD¶Ï //IE2=0x01; } void Send_Usart2(char Sen) { S2BUF = Sen; while(!(S2CON&S2TI)); S2CON&=0xfd; } char Recv_Usart2(void) { char Recv; while(!(S2CON&S2RI)); Recv = S2BUF; S2CON&=0xfe; return Recv; } void main() { char a; Usart2_Init(); while(1) { a=Recv_Usart2(); Send_Usart2(a); } } |
|
|
|
初始化不对,给你重写了一遍
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
3319 浏览 9 评论
2997 浏览 16 评论
3495 浏览 1 评论
9065 浏览 16 评论
4088 浏览 18 评论
1186浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
602浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 05:14 , Processed in 1.183720 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号