觸發一次,跳轉好幾個數。從網上下的計數程序。 求大俠賜教!涕零感激!
#include "reg52.h" #define u8 unsigned char #define u16 unsigned int sbit sw1=P3^4; sbit sw2=P3^5; sbit sw3=P3^6; sbit e0=P2^0; sbit e1=P2^1; sbit e2=P2^2; sbit e3=P2^3; u8 ds[4]={0,0,0,0}; u16 num=0; u8 code table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0x00}; u8 ajsm() { static u16 ms; if(sw3==0) { if(++ms==2) { return 1; } } else { ms=0; } return 0; } void xs() { static u8 a; a++; if(a>3)a=0; e0=1; e1=1; e2=1; e3=1; P0=table[ds[a]]; switch(a) { case 0: { e0=0; e1=1; e2=1; e3=1; }break; case 1: { e0=1; e1=0; e2=1; e3=1; }break; case 2: { e0=1; e1=1; e2=0; e3=1; }break; case 3: { e0=1; e1=1; e2=1; e3=0; }break; } } void main() { TMOD=0x66; TH0=0xff; TL0=0xff; TH1=0xff; TL1=0xff; TR1=1; TR0=1; ET0=1; ET1=1; EA=1; while(1) { ds[0]=num/1000%10; ds[1]=num/100%10; ds[2]=num/10%10; ds[3]=num%10; xs(); if(ajsm()) { num=0; } } } void time0()interrupt 1 { if(num<9999)num++; } void time1()interrupt 3 { if(num>0)num--; }
|