最普通的寻轨小车程序
时间:10-02
整理:3721RD
点击:
诊断:单片机不停的执行检测程序当然会占CPU了, 你可以试着让单片机隔一断时间来检测一下车子的进行情况, 实现的方法可以是让单片机在中断里执行检测程序, 也可以在中断里执行其它程序, 不管单片机忙不忙, 只要能所指定的任务完成了就可以, 是不?

程序短不过能走,但是很占用cpu

- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void delay(uchar ms) //延时函数
- {
- uchar ii,jj;
- for(ii=0;ii<ms;ii++)
- for(jj=0;jj<40;jj++)
- {
- if(P1==0xe1) //检测是否要右转
- {
- P2=0xf1;
- return ;
- }
- if(P1==0xf0) //检测是否要左转
- {
- P2=0xf4;
- return ;
- }
- }
- }
- void leftmove() //左转
- {
- P2=0xf4;
- delay(20);
- P2=0xf5;
- delay(60);
- }
- void rightmove() //右转
- {
- P2=0xf1;
- delay(20);
- P2=0xf5;
- delay(60);
- }
- main()
- {
- P2=0;
- while(1)
- {
- switch(P1) //传感检测
- {
- case 0xe4:P2=0xf5;break;
- case 0xe8:leftmove();break;
- case 0xe2:rightmove();break;
- case 0xe1:P2=0xf1;break; //大右转
- case 0xf0:P2=0xf4;break; //大左转
- }
- }
- }
程序短不过能走,但是很占用cpu
你让单片机不停的执行检测程序当然会占CPU了, 你可以试着让单片机隔一断时间来检测一下车子的进行情况, 实现的方法可以是让单片机在中断里执行检测程序, 也可以在中断里执行其它程序, 不管单片机忙不忙, 只要能所指定的任务完成了就可以, 是不?
楼上威武
厉害!
看不太懂
飘过
好人啊
有点,,看不懂哦
很好 先收藏了
