完善资料让更多小伙伴认识你,还能领取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,有遇到这个问题的吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
765 浏览 0 评论
2235 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2094 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1682 浏览 0 评论
2646 浏览 3 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5478 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 00:32 , Processed in 0.706514 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号