完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
自己写的一个小车程序,编译无报错,但是在proteus内P1口始终为高电位,求高手帮忙查看程序
#include #define uchar unsigned char #define uint unsigned int #define motor P1 //电机动作输出 #define test P0 //红外检测输入 volatile uchar flag; void Mforward() //前进赋值 左ENB IN4 IN3 ENA IN2 IN1右 { motor=0x2d; //101101 } void Mturnright() //右转 { motor=0x28; //101000 } void Mturnleft() //左转 { motor=0x05; //000101 } void Mroll() //左反右正转 { motor=0x35; //110101 } void Mstop() //停止 { motor=0x24; //100100 } void flagtest() //红外检测 1表示无障碍或检测到黑线 { uchar temp; temp=test&0x0f; //取P0低四位 switch(temp) { case 0x08: //未偏 1000 case 0x0a: // 1010 flag=0; break; case 0x0c: //偏左 1100 case 0x0e: // 1110 flag=1; break; case 0x09: //偏右 1001 case 0x0b: // 1011 flag=2; break; case 0x0d: //终点 1101 case 0x0f: // 1111 flag=3; break; case 0x00: //有障碍 P0^3=0 case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07: flag=4; break; default: break; } } void main() //主函数 { flagtest(); switch(flag) { case 0: Mforward(); break; case 1: Mturnleft(); break; case 2: Mturnright(); break; case 3: Mroll(); break; case 4: Mstop(); break; } }
|
|
相关推荐
9个回答
|
|
你的主函数中while(1)循环哪里去了?程序就只判断一次就不知道飞哪里去,然后估计就是你现在的情况了!
最佳答案
|
|
|
|
单片机上电后都是为高电平,说明你的程序没起作用。
|
|
|
|
|
|
|
|
用keil仿真运行啊
|
|
|
|
|
|
|
|
真的没加while |
|
|
|
|
|
|
|
只判断一次难道就没有输出了? |
|
|
|
没明白我的意思?没有while循环的话,程序就只执行一次,就不知道跑哪了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
409 浏览 0 评论
【xG24 Matter开发套件试用体验】10-Bluetooth示例1
469 浏览 0 评论
697 浏览 0 评论
【xG24 Matter开发套件试用体验】power specification电源规格参数配置
512 浏览 0 评论
475 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10813 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-22 15:35 , Processed in 0.609158 second(s), Total 57, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191