完善资料让更多小伙伴认识你,还能领取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,有遇到这个问题的吗
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-移植前准备之git管理内核源码
978 浏览 0 评论
【瑞萨RA2L1入门学习】+ MacOS安装e2studio
403 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-本地仓库管理之分支间的操作
685 浏览 0 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】3D 图形显示
560 浏览 0 评论
676 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12215 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-26 06:54 , Processed in 0.669425 second(s), Total 99, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号