P3=~DIGIT&OPTO; //依次显示各位数 P1=~BUFFER; //显示数据送P1口 DELAY(20); //延时处理
P1=0XFF; //P1口置高电平(关闭) IF((P3&0X10)==0) //判断3位是否显示完 KEY=0;
DIGIT>>=1; //循环右移1位 } }
VOID TIMETOBUFFER() //转换段码功能模块 {
XM0=S/100; XM1=(S-100*XM0)/10; XM2=S-100*XM0-10*XM1;
BUFFER[2]=CONVERT[XM2]; BUFFER[1]=CONVERT[XM1]; BUFFER[0]=CONVERT[XM0]; }
VOID DELAY(I) {
WHILE(--I); }
VOID TIMER1INT (VOID) INTERRUPT 3 USING 2 {
TH1=0X9E; TL1=0X57; CSBDS++;
28
IF(CSBDS>=40) {
CSBDS=0; CL=1; } }
VOID CSBCJ() {
IF(CL==1) {
TR1=0; TH0=0X00; TL0=0X00; I=10; WHILE(I--) {
CSBOUT=!CSBOUT; }
TR0=1;
I=MQS; // WHILE(I--) { } I=0;
WHILE(CSBINT) { I++;
IF(I>=2450) // 盲区上限值
29
CSBINT=0; } TR0=0; TH1=0X9E; TL1=0X57; T=TH0; T=T*256+TL0; S=T*CSBC/2; TR1=1; CL=0; } }
VOID KEYSCAN() //{
XX=0;
IF(K1!=1) // {
DELAY(400); // IF(K1!=1) // 下
{ WHILE(!K1) {
DELAY(30); XX++; }
IF(XX>2000) {
健盘处理函数 判断开关是否按下 延时去抖动 判断开关是否按30
JPJS++; IF(JPJS>4) JPJS=0; } XX=0; SWITCH(JPJS) {
CASE 1: K1CL();BREAK; CASE 2: K2CL();BREAK; CASE 3: K3CL();BREAK; CASE 4: K4CL();BREAK; } } } }
VOID K1CL() {
SJ1=SJ1+5; IF(SJ1>100) SJ1=30; S=SJ1; }
VOID K2CL() {
SJ2=SJ2+5; IF(SJ2>500)
31
SJ2=40; S=SJ2; }
VOID K3CL() {
SJ3=SJ3+10; IF(SJ3>500) SJ3=100; S=SJ3; }
VOID K4CL() {
SX1=SJ1-1; SX1=SX1/CSBC; MQS=SX1/4.5; }
VOID OFFMSD() {
IF (BUFFER[0] == 0X3F) BUFFER[0] = 0X00; }
32