完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目标:通过串口助手发送数据后,单片机回传+1。
现象:没有进入中断服务函数 void Uart_Init(void) { P_SW1 &= ~(S1_S0 | S1_S1); //S1_S0=0 S1_S1=0 (P3.0/RxD2, P3.1/TxD2) P_SW2 &= ~S2_S0; //S2_S0=0 (P1.0/RxD2, P1.1/TxD2) //串口1配置 PCON &= 0x3f; //串口1波特率不倍频 SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x01; //选择定时器2为串口1的波特率发生器 //串口2配置 S2CON = 0x50; //8位数据,可变波特率,串口2只能选择定时器2作为波特率发生器 AUXR |= 0x04; //T2为1T模式 T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值 T2H = (65536 - (FOSC/4/BAUD))>>8; AUXR |= 0x10; //启动定时器2 ES = 1; //允许串口1中断 IE2 |= 0x01; //允许串口2中断 } void Uart2() interrupt 8 using 1 { if (S2CON & S2RI) //接收标志 { S2CON &= ~S2RI; //清除S2RI位 recvdata = S2BUF; if(recvdata == 0x0A) { Uart2_SendData(0x0A+1); } if(recvdata == 0x0C) { Uart2_SendData(0x0C+1); } } if (S2CON & S2ti) //发送标志 { S2CON &= ~S2TI; //清除S2TI位 B_TX2_Busy = 0; } } void Uart2_SendData(u8 dat){ S2BUF = dat; //写数据到数据寄存器 while(!(S2CON&S2TI)); //停止位没有发送时,S2TI为0,一直等待 S2CON &= ~S2TI; //清除S2TI } |
|
相关推荐
3个回答
|
|
AUXR寄存器中设置定时器1是否分频,会影响到串口2,有遇到这个问题的吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:54 , Processed in 0.570625 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号