欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
有沒有大神用l9110s控制四個直流電機,遇到過這種問題,如下正文
[打印本頁]
作者:
ahandsomeboy
時間:
2018-8-13 10:30
標題:
有沒有大神用l9110s控制四個直流電機,遇到過這種問題,如下正文
已經寫好的前進后退,在一個函數中調用正常,到了另外一個地方就會反向,本人用一個l9110s模塊控制四個直流電機,左側兩個接到一個馬達端口,右側接一個馬達端口,效果與用兩個驅動模塊相同。雙電源供電,開發板P2口前四位控制馬達,有獨立按鍵和定時器兩部分。代碼如下:問題是,分別將定時器和按鍵掃描注釋,相同的函數出現的現象不同
#include<reg51.h>
#include<reg51.h>
typedef unsigned int u16; //對數據類型進行重新聲明定義
typedef unsigned char u8;
#define motor P2//p2口控制四個馬達,01口控制左側,23口控制右側
sbit k1=P3^0;//通過按鍵控制運動
sbit k2=P3^1;
sbit k3=P3^2;
sbit k4=P3^3;
void delay(u16 j)
{
while(j--);
}
void qj()//前進
{
motor=0xfa; //0000 1010
}
void ht()//后退
{
motor=0xf5;//0000 0101
}
void yz()//右轉彎
{
motor=0x09;//0000 1001
}
void zz()//左轉彎
{
motor=0x06;//0000 0110
}
void Timer0Init()//定時50ms秒,完成后進行中斷
{
TMOD|=0X01;//0000 0001方式一
TH0=0x3C;//50ms
TL0=0xB0;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;
}
void keyscan()
{
if(k1==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k1==0) //再次判斷按鍵是否按下
{
qj();
}
while(!k1); //檢測按鍵是否松開
}
if(k2==0)
{
delay(1000);
if(k2==0)
{
ht();
}
while(!k2);
}
if(k3==0)
{
delay(1000);
if(k3==0)
{
zz();
}
while(!k3);
}
if(k4==0)
{
delay(1000);
if(k4==0)
{
yz();
}
while(!k4);
}
}
void main()
{
Timer0Init();
while(1)
{
keyscan();
}
}
void Timer0() interrupt 1//interrupt后面無括號
{
static u16 i=0;
TH0=0x3C;//50ms
TL0=0xB0;
i++;
if(i==20)
{
qj();
}
if(i==60)
{
i=0;
ht();
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1