- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit ENA=P1^2;
- sbit IN1=P1^3;
- sbit IN2=P1^4;
- sbit ENB=P1^5;
- sbit IN3=P1^6;
- sbit IN4=P1^7;
- uint MA=0;
- uint speedA=50;
- int flag=0;
- void timeinit()
- {
- TMOD=0x01;
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void Ques1()
- {
- switch(flag/10)
- {
- case 0: TR0=0;
- if(MA<speedA)
- {
- ENA=1;ENB=1;
- IN1=1;IN2=0;
- IN3=0;IN4=1;
- }
- else
- {
- if(speedA<=MA<100)
- {
- ENA=0;
- ENB=0;
- }
- else
- {
- MA=0;
- flag++;
- }
- }
- TR0=1;
- break;
- case 1: TR0=0;
- if(MA<speedA)
- {
- ENA=1;ENB=1;
- IN1=0;IN2=1;
- IN3=1;IN4=0;
- }
- else
- {
- if(speedA<=MA<100)
- {
- ENA=0;
- ENB=0;
- }
- else
- {
- MA=0;
- flag++;
- }
- }
- TR0=1;
- break;
- default : flag=0;
- break;
- }
- }
- void time0() interrupt 1
- {
- TH0=(65536-10000)/256;
- TL0=(65536-10000)%256;
- MA++;
- }
- void main()
- {
- timeinit();
- while(1)
- {
- Ques1();
- }
- }
复制代码
我想问下,为什么这个程序无法同时控制电机正反转,现在问题是单片机按着复位键,IN1和IN2控制的电机才会启动,不按复位键不启动,IN3和IN4控制的电机在5s后也会停止转动,这是为什么?我的目的是IN1和IN2控制的电机1正转,同时IN3和IN4控制的电机2反转,过1s之后电机1正转电机2反转。
此帖出自
小平头技术问答
if(speedA<=MA<100)
等价于
if((0 or 1) <100)
其中 speedA<=MA ? 1: 0
试试
if(speedA<=MA && MA <100)
也就是 if( (speedA<=MA) && (MA <100) )
这个程序就是自己写的,目前不知道哪里出问题
一周热门 更多>