#include”pic.h” #include”pic1687x.h” #include”math.h”
Unsigned char s0,s1,s2,s3; Unsigned char s[4]; Unsigned char data; Unsigned char sreg; //定义一个变量 sreg ,中断次数变量。
Void FZinitial() { S0=s1=s2=s3=0; S[0]=s0; S[1]=s1; S[2]=s2; S[3]=s3;
Sreg=0; }
Void T0initial() { INTCON=0XFF; T0CS=1; T0SE=1; T0IF=0; T0IE=1; //没有发生中断标志,初始化时候允许发生定时器0的中断操作。 PSA=1; }
Void SPIinitial() { PIR=0; //必须将涉及到的相关寄存器都初始化一便。 外围中断标志 寄存器。 SSPCON=0X30; SSPCON=0XC0;
TRISA5=0; TRISC3=0; TRISC5=0; }
Void interrupt DEAL(void) { TMR0=0X13; T0IF=0; CLRWDT(); Sreg=sreg+1; //定时器T0中断次数递增,到40次才发生一次数据处理过程。
If(sreg==40) { Sreg=0; S0=s0+1; If(s0==10) { S1=s1+1; S0=0; If(s1==10) { S2=s2+1; S1=0; If(s2==10) { S3=s3+1; S2=0; If(s3==10) S3=0; } } }
}// If(sreg==40) s[0]=s0; s[1]=s1; s[2]=s2; s[3]=s3;
} Void interrupt DEAL(void)
void KEYSCAN() { while(1){ while(1) { dispaly(); if ((RB5==0)||(RB4==0)) break; } DELAY(); if ((RB5==0)||(RB4==0)) break;//若还有键按下,则终止循环扫描,返回 } } void keyrelax() { while(1){ dispaly(); if ((RB5==1)&&(RB4==1)) break; } //为防止按键过于灵敏,每次等键松开才返回 }
Void main() { SYSinitial(); T0initial(); SPIinitial(); GIE=1; PEIE=1; While(1) { FZinitial(); KEYSCAN(); keyrelax(); GIE=1; //开始键1
KEYSCAN(); keyrelax(); GIE=0; //停止键0
KEYSCAN(); keyrelax(); }
}
|