标题:
写了一个关于两个厂房门联动的pic单片机程序,上板后不好使,求指点
[打印本页]
作者:
weewmy
时间:
2018-8-21 10:08
标题:
写了一个关于两个厂房门联动的pic单片机程序,上板后不好使,求指点
//这是一个关于两个厂房门联动的程序。
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
uchar cishu; //设置一个标记变量,通过这个变量来观察是否有车辆正在通过通道,确定内外门是否开启
//来自地感的开门信号,判断次数是否为0,为0说明没有车辆通过,门可以开启;如果为1,说
//明有车两正在通过,不能开门
uchar jin; //为了解决内外两个门同时下咯,软件如何执行的问题,设立3个变量,同过比较进出两个变量
uchar chu; //大小,相等时变量为0,为0时候不动作;变量不为0时候执行命令。进出两个变量由开门信号产生。
uchar bijiao;
void delay(uint x);
void init();
void scan();
void didi1(uchar num);
void didi2(uchar num);
void main()
{
jin=0;
chu=0;
bijiao=0;
cishu=0;
init();
while(1)
{
scan();
}
}
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void init()
{
TRISA=0B00001111;PORTA=0B00000001;
TRISB=0B00000000; PORTB=0B00000000;
TRISC=0B11111111; PORTC=0B11111111;
}
void scan()
{
if(RA1==1) //室内门开门信号
{
delay(10);
if(RA1==1)
{
jin=jin+1;
switch(cishu)
{
case 0:didi1(100);RB5=1;RB7=1;break; //RB6 内门开,外门锁,警灯亮
case 1:cishu=-1;break;
}
}
}
if(RA2==1) //室外门开门信号
{
delay(10);
if(RA2==1)
{
chu=chu+1;
switch(cishu)
{
case 0:didi2(100);RA5=1;RB7=1;break; //RB2外门开,内门锁,警灯亮
case 1:cishu=-1;break;
}
}
}
if(RA0==0) //室内门关闭到位,外门解锁 ,外门开启,次数加1.
{
delay(10);
if(RA0==0)
{
if(jin=chu)bijiao=0;
if(bijiao!=0){
cishu=cishu+1;
RB5=0;
didi2(50); //开外门 RB2
}
if(bijiao==0){;}
}
}
if(RC6==0) //室外门关闭到位,内门解锁 ,内门开启,次数加1.
{
delay(10);
if(RC6==0)
{
if(jin=chu)bijiao=0;
if(bijiao!=0){
cishu=cishu+1;
RA5=0;
didi1(50); //开内门 RB6
}
if(bijiao==0){;}
}
}
}
void didi1(uchar num)
{
uchar di_num;
for(di_num=num;di_num>0;di_num--)
{
RB6=1; //内门开
delay(50);
RB6=0;
delay(20);
}
}
void didi2(uchar num)
{
uchar di_num;
for(di_num=num;di_num>0;di_num--)
{
RB2=1;
delay(50); //外门开
RB2=0;
delay(20);
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1