完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int uchar Buffer[4]={0};//从串口接收的数据 ***it Left_Positive=P1^0; ***it Left_Negative=P1^1; ***it Right_Positive=P1^2; ***it Right_Negative=P1^3; /*************************************************** *名称:Com_int() *功能:串口中断子函数 *输入:无 *输出:无 ***************************************************/ void Com_int(void) interrupt 4 { RI = 0; //令接收中断标志位为0(软件清零) Buffer[0]= SBUF-48; //将接收到的数据送入变量 UART_data while(TI == 0); //检查发送中断标志位 TI = 0; } /*************************************************** *名称:Com_Init() *功能:串口初始化,晶振11.0592,波特率是9600,使串口中断 *输入:无 *输出:无 ***************************************************/ void Com_Init(void) { TMOD=0x20; PCON=0x00; SCON=0x50; TH1=0xfd; //设置波特率为9600 TL1=0xfd; TR1=1; //启动定时器1 ES=1; //开串口中断 EA=1; //开总中断 } /*************************************************** *名称:Moto_Forward() *功能:电机1,2启动,都是前进,整车表现为前进 *输入:无 *输出:无 ***************************************************/ void Moto_Forward() { Right_Negative=0; Left_Positive=1; Left_Negative=0; Right_Positive=1; } /************************************************** *名称:Moto_Backward() *功能:电机1,2启动,都是后退,整车表现为后退 *输入:无 *输出:无 **************************************************/ void Moto_Backward() { Left_Positive=0; Right_Positive=0; Right_Negative=1; Left_Negative=1; } /************************************************* *名称:Moto_TurnLeft() *功能:电机1后退,电机2前进,整车表现为左转 *输入:无 *输出:无 *************************************************/ void Moto_TurnLeft() { Left_Negative=1; Right_Positive=1; Right_Negative=0; Left_Positive=0; } /************************************************* *名称:Moto_TurnRight() *功能:电机1前进,电机2后退,整车表现为右转 *输入:无 *输出:无 *************************************************/ void Moto_TurnRight() { Right_Negative=1; Left_Negative=0; Left_Positive=1; Right_Positive=0; } /************************************************* *名称:Moto_Stop() *功能:电机1停止,电机2停止,整车表现为停止 *输入:无 *输出:无 *************************************************/ void Moto_Stop() { Right_Negative=0; Left_Negative=0; Left_Positive=0; Right_Positive=0; } void main() { Com_Init(); //串口初始化//P1=0; while(1) { switch(Buffer[0]) { case 0:Moto_Stop();break; case 1:Moto_Forward();break; case 2:Moto_Backward();break; case 3:Moto_TurnLeft();break; case 4:Moto_TurnRight();break; default:break; } } } 以上是程序,上电后,蓝牙传送1 2 3 4,都只有左电机会动,右点机不动,请问指导 |
|
相关推荐
13个回答
|
|
{:1:}{:1:}{:1:}{:1:}{:1:}{:1:}{:1:}
|
|
|
|
{:9:}{:9:}
|
|
|
|
是不是应该把switch语句放到通讯中断里啊
|
|
|
|
那肯定是你MCU控制右电机这部分电路的问题。和程序无关。
|
|
|
|
眼睛都看花了
|
|
|
|
串口中断里面的语句会不会有问题? 每次发送和接收数据都进中断,然后Buffer[0]里的数据都会减去48. 不过实在想不通有发送什么数据吗?
|
|
|
|
问题解决了吗 今天我也遇到了
|
|
|
|
看你,定义io口{:6:}{:6:}{:6:}
|
|
|
|
{:17:}
|
|
|
|
{:20:}{:20:}{:20:}{:20:}{:20:}{:20:}
|
|
|
|
|
|
|
|
|
|
kkkkkkkkkk
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
690 浏览 0 评论
735 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
624 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1099 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1092 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11794 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 05:53 , Processed in 0.778185 second(s), Total 100, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号