| P30和IO口复用了 |
lkc8210 发表于 2021-8-6 13:58 懂了,谢谢! |
sunmebaby 发表于 2021-8-6 12:30 你的减档键接了RXD脚 单片机以为有串口信号就入了中断 如果不是没脚用,尽量不要用RXD(P30)/TXD(P31)脚 以免影响串口通讯 |
本帖最后由 sunmebaby 于 2021-8-6 12:55 编辑 lkc8210 发表于 2021-8-5 23:41 谢谢大佬,发现自己接线时候有错误,把RXD和TXD接反了,然后按照大佬的写法改了之后可以了...还有个问题...我在串口中断函数里加了句LED =~LED想观察现象,发现按减档键LED会亮灭,但是我用这是按键触发中断了吗...? |
| 起码保证串口连接没问题,再确定波特率等参数配置无误,然后调试能否进入中断, |
本帖最后由 lkc8210 于 2021-8-5 23:55 编辑 sunmebaby 发表于 2021-8-5 12:58 12T 8051的指令执行速度比较慢(一句1us) 你代码中的定时器中断时间只有1us 而中断的指令有那么多句 于是单片机进入中断时被中断中断了去进入中断。。。 尝试把TL0=0xF7;改为TL0=0xC7; 而且你的串口初始化和定时器0初始化的写法会互相覆盖TMOD的设定 void UsarInit() //串口初始化 { TMOD = 0x20; //设置计数器工作方式2 改为TMOD |= 0x20; void timer0_init() //定时器0初始化 { TMOD = 0x01; 改为TMOD |= 0x01; |
| 看看是否进入了中断,还有按键和指令码的作用结合写,或者干脆暂时屏蔽按键 |
zqy181818 发表于 2021-8-5 20:50 void main() //主函数 { timer0_init(); UsarInit(); while(1) { display(); Motor_up(); Motor_down(); switch(Data) {case 'a':count = 0; break; case 'b':count = 25;break; case 'c':count = 50;break; case 'd':count = 75;break; } } 是改成这样吗。。。之前这样试过,也还是没有反应。。。 |
sunmebaby 发表于 2021-8-5 12:58 不是去了,而是结合到一块,放到主函数里。 |
18701931930 发表于 2021-8-5 12:56 while(1)去掉也还是不行。。。 |
| 串口中断函数里有个while(1)死循环 |
jizi 发表于 2021-8-5 10:23 晶振是11.0592MHz,之前用AT指令调试过了,是可以正常工作的 |
|
老哥 你上面的图片是蓝牙 加ttl 之后和电脑相连的 数据吗 如果是 那就检查一下你的晶振频率 看看是不是那种通信晶振 简单的方法 单片机 和 电脑通信 在串口助手那里 直接下发 蓝牙指令看看有否工作 或者直接 你发什么数据 就让单片机返回什么数据上电脑 这样调试一目了然 |