本帖最后由 yqc6768011 于 2010-12-4 11:36 编辑
PIC16F883
#include<pic.h>
__CONFIG(XT&WDTDIS);
#define uint unsigned int
#define uchar unsigned char
#define ACC RB0
#define IG1 RB1
#define IG2 RB2
#define R RB3
#define ST RB4
uchar a,aa,b,bb,c,cc,d,dd,e,ee,numb1,numb11,numb2,numb22,numb3,numb33,numb4,numb44,numb5,numb55;
void init(void)
{
TRISA=0X00;
PORTA=0XFF;
TRISB=0X1F;
PORTB=0X7f;
ANSELH=0X00;
T0CS=0;
PSA=0;
PS0=1;
PS1=0;
PS2=0;
T0IF=0;
RBIE=0;
INTE=1;
T0IE=1;
PEIE=1;
RBPU=1;
//OPTION=0X81;
//INTCON=0XA0;
GIE=1;
}
void PASS(void)
{
RB7=0; //蜂鸣器
RB6=1; //红色指示灯
RB5=0; //绿色指示灯
}
void error(void)
{
RB7=1;
RB6=0;
RB5=1;
}
void REST(void)
{
RB7=0;
RB6=1;
RB7=1;
}
void key_rise(void)
{
if(aa==1&&numb11==40)
{
if(ACC==1)
{
a=0;aa=0;
numb1=0; numb11=0;
}
else
{
error();
}
}
}
/*===============================================================*/
/*============================================================*/
/*===============================================================*/
void key_scan(void)
{
if(a==1&&numb1==10)
{
if(ACC==0)
{
a=0;aa=0;
numb1=0;numb11=0;
}
else
{
key_rise();
}
}
}
void main()
{
init();
while(1)
{
key_scan();
}
}
void interrupt time0(void)
{
//===============================================//
//===============================================//
if(ACC==0&&a==0&&T0IF==1)
{
a=1;RB0=1;
}
if(ACC==1&&aa==0&&T0IF==1&&a==1)
{
aa=1;
}
if(a==1)
{
numb1++;
}
if(aa==1)
{
numb11++;
}
T0IF=0;
} |