欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機窗簾 請問定時怎么加進去?
[打印本頁]
作者:
xiaoxiaov5
時間:
2018-6-14 11:30
標題:
單片機窗簾 請問定時怎么加進去?
請問定時怎么加進去? 按下一直轉怎么回事
#include<reg51.h> //頭文件
#define uchar unsigned char
#define uint unsigned int //定義變量
sbit D0 = P2^0;//B鍵
sbit D1 = P2^1;//D鍵
sbit D2 = P2^2;//A鍵
sbit K1=P3^4; //限位開關1
sbit K2=P3^5; //限位開關2
sbit IN1=P1^0;
sbit IN2=P1^1; //電機輸入口
void delay(unsigned int z)//延時函數
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Timer0Init()
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XDC; //給定時器賦初值,定時1ms
TL0=0X00;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=0;
}
void run(void) //正轉
{
IN1=0;
IN2=1;
}
void stop(void) //停轉
{
IN1=0;
IN2=0;
}
void back(void) //反轉
{
IN1=1;
IN2=0;
}
void main(void)//主函數
{
uchar flag=0; //標志位1
uchar bad=0; //標志位 2
P2=0x08; //P2口清零
while(1)
{
if(D1==1) //D鍵按下
{
delay(10);
if(D1==1)
{
bad++;
if(bad==3)
{
bad=0;
}
while(D1);
}
switch(bad)
{
case 1: // 按下一次 1/2
back();
TR0=1;
D1=0;
break;
case 2: //按下兩次 繼續轉
back();
D1=0;
break;
}
}
if(D2==1) //A鍵按下
{
delay(10);
if(D2==1)
{
flag++;
if(flag==3)
{
flag=0;
}
while(D2);
}
switch(flag)
{
case 1: //按下一次 1/2
run();
TR0=1;
D2=0;
break;
case 2: //按下兩次 繼續轉
run();
D2=0;
break;
}
}
if(K1==0||K2==0) //碰到限位開關
{
while(K1==0||K2==0)
stop();
}
if(D0==1) //B鍵按下
{
while(D0==1)
{
stop() ;
}
}
}
}
void Timer0() interrupt 1
{
static int i=0;
TH0=0XDC; //給定時器賦初值,定時10ms
TL0=0X00;
i++;
if(i==1000)
{
i=0;
IN1=0;
IN2=0;
TR0=0;//關閉定時器
}
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1