⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfd.lst

📁 upd16312 vfd panel c 原程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V5.02,  VFD                                                                               11/07/00  14:15:37  PAGE 1   


DOS C51 COMPILER V5.02, COMPILATION OF MODULE VFD
OBJECT MODULE PLACED IN VFD.OBJ
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE VFD.C CD SB DB OE OR PL(69) PW(132) ROM(LARGE) SMALL OT(6,SPEED) 

stmt level    source

   1          #include<reg52.h>
   2          #include<panel.h>
   3          #include<use.h>
   4          
   5          void WR_PANEL(BYTE);
   6          void LIGHT_ALL(void);
   7          BYTE RD_PANEL(void);
   8          BYTE GET_KEY_VAL(void);
   9          BIT  LEAP_YEAR(void);         // if this year /4 =0
  10          BIT  LEAP_MONTH(void);        // if this month only 30 days
  11          void DAY_INC(void);        // month and year inc process 
  12          BYTE HEXTOBCD(BYTE);          //translate hex to bcd 
  13          void COMPARE_TIME(BYTE *); //compare now_time and (alarm_begin&alarm_end)
  14          void FILL_ALL_PIX(void);
  15          void FILL_BCD_DISP(BYTE *,BYTE *,BYTE *);
  16          void KEY_PROCESS(void);
  17          void DELAY_TIME(BYTE);
  18          void DELAY_100uS(void);
  19          BYTE GET_IR_KEY(void);	
  20          void ALARM_MAKE(void);
  21          void timer0(void) interrupt 1 using 1 
  22          {     TR0=0;
  23   1            TH0=0XD8;
  24   1            TL0=0XF0;
  25   1            TR0=1;
  26   1            mSECOND++;
  27   1            if(mSECOND==50)  COUNT2=0;
  28   1            if((mSECOND<40)||(mSECOND>60))// SOUND OF ALARM 0mS ON;40mS OFF;60mS ON
  29   1                  COUNT1=1;
  30   1            if((mSECOND>40)&&(mSECOND<60))
  31   1                  COUNT1=0;
  32   1            if(mSECOND>=100)
  33   1            {     SECOND_INC=1;
  34   2                  COUNT2=1;
  35   2                  COUNT3++;
  36   2                  mSECOND=0;
  37   2            };
  38   1      }
  39          void IR0(void) interrupt 0 using 2
  40          {
  41   1            EX0=0;//do not allow extern interrupt0
  42   1            bKEY=GET_IR_KEY();
  43   1            EX0=1;
  44   1      }
  45          main()
  46          {
  47   1            BYTE TEMP,TEMPA;
  48   1            SP=0x70;
  49   1            IR = 1;
  50   1            ALARM_OUT1=0;
  51   1            ALARM_OUT2=0;
  52   1            TR0=0;
  53   1            TMOD=0X01;
  54   1            TH0=0XD8;
  55   1            TL0=0XF0;
  56   1            TR0=1;
  57   1            PT0=1;//Priority Interrupt timer0 
  58   1            ET0=1;
  59   1            EX0=1;
  60   1            IT0=1;		
C51 COMPILER V5.02,  VFD                                                                               11/07/00  14:15:37  PAGE 2   

  61   1            EA=1;//ENABLE TIMER0
  62   1      	TEMP=12;
  63   1            while(TEMP--)
  64   1                  DISP_ARRAY[TEMP-1]=0; 
  65   1      	TEMP=15;
  66   1            while(TEMP--)
  67   1            {     TEMPA=3;
  68   2                  while(TEMPA--)
  69   2                        ALARM_ARRAY[TEMP-1][TEMPA-1]=0;
  70   2      	};
  71   1      	KEY_ARRAY[0]=0;
  72   1      	KEY_ARRAY[1]=0;
  73   1      	KEY_ARRAY[2]=0;
  74   1      //INITIAL VFD_PANEL AND LET IT ALL DARKEN
  75   1      	VFD_STB=1;
  76   1      	VFD_STB=0;
  77   1              WR_PANEL(VFD_DISP_MODE);
  78   1      	VFD_STB=1;
  79   1      	VFD_STB=0;
  80   1              WR_PANEL(VFD_CTRL_MODE);
  81   1      	VFD_STB=1;
  82   1              LIGHT_ALL();   
  83   1      // WHILE LOOP
  84   1      while(1)
  85   1      {
  86   2            if(SECOND_INC)
  87   2            {     SECOND_INC=0;
  88   3                  SECOND++;
  89   3                  if(SECOND>=60)
  90   3                  {
  91   4                        SECOND=0;
  92   4                        MINUTE++;
  93   4                        if(MINUTE>=60)
  94   4                        {
  95   5                              MINUTE=0;
  96   5                              HOUR++;
  97   5                              if(HOUR>=24)
  98   5                              {
  99   6                                    HOUR=0;
 100   6                                    DAY++;
 101   6                                    switch(DAY)
 102   6                                    {
 103   7                                    case 29:
 104   7                                       if(MONTH==2)
 105   7                                          if(!LEAP_YEAR())
 106   7                                          {     DAY=0;
 107   8                                                DAY_INC();
 108   8                                          };
 109   7                                        break;
 110   7                                     case 30:
 111   7                                        if(MONTH==2)  DAY_INC();
 112   7                                         break;
 113   7                                     case 31:
 114   7                                        if(LEAP_MONTH()) DAY_INC();
 115   7                                         break;
 116   7                                      case 32:
 117   7                                         DAY_INC();
 118   7                                         break;
 119   7                                    };// END OF SWITCH
 120   6                              };// hour>=24
 121   5                        };// minute>=60
 122   4                  };// second>=60
 123   3            };//(second_inc)    END OF TIME PROCESS
 124   2            SECOND1=HEXTOBCD(SECOND);
 125   2            MINUTE1=HEXTOBCD(MINUTE);
 126   2            HOUR1=HEXTOBCD(HOUR);
 127   2            DAY1=HEXTOBCD(DAY);
C51 COMPILER V5.02,  VFD                                                                               11/07/00  14:15:37  PAGE 3   

 128   2            MONTH1=HEXTOBCD(MONTH);
 129   2            YEAR1=HEXTOBCD(YEAR);
 130   2      //BEGIN ALARM TIME PROCESS
 131   2            if(ALARM_ENABLE)
 132   2            {     TEMP=8;
 133   3                  do
 134   3                  {     ALARM_ON_OFF=ALARM_ON_OFF_1;
 135   4                        TEMP=0;
 136   4                        ALARM_ON_OFF>>=TEMP;
 137   4                        if(ALARM_ON_OFF^0)
 138   4                              COMPARE_TIME(&ALARM_ARRAY[TEMP][0]);
 139   4      
 140   4                  }while(TEMPA--);
 141   3                  TEMP=8;
 142   3                  do
 143   3                  {     ALARM_ON_OFF=ALARM_ON_OFF_2;
 144   4                        TEMP=0;
 145   4                        ALARM_ON_OFF>>=TEMP;
 146   4                        if(ALARM_ON_OFF^0)
 147   4                              COMPARE_TIME(&ALARM_ARRAY[TEMP+8][0]);
 148   4      
 149   4                  }while(TEMPA--);
 150   3                  ALARM_MAKE();
 151   3            };//END OF PROCESS ALARM
 152   2            KEY_PROCESS();
 153   2            FILL_ALL_PIX();
 154   2            LIGHT_ALL();
 155   2      };//END OF WHILE(1)
 156   1      }//END OF MAIN
 157          
 158          
 159          
 160          void WR_PANEL(BYTE TEMP1)
 161          {     BYTE TEMP4;
 162   1      	VFD_CLK=1;
 163   1            for(TEMP4=0;TEMP4<8;TEMP4++)
 164   1              {       VFD_CLK=0;
 165   2      		if(TEMP1&0X01)
 166   2      			VFD_DATA=1;
 167   2      		else
 168   2      			VFD_DATA=0;
 169   2      		TEMP1>>=1;
 170   2      		VFD_CLK=1;
 171   2      	 };
 172   1      }
 173          BYTE RD_PANEL(void)
 174          {
 175   1            BIT I;
 176   1            BYTE TEMP5;
 177   1            BYTE TEMP4,TEMP6;
 178   1      	VFD_CLK=1;
 179   1            VFD_DATA=1;
 180   1            TEMP5=0;
 181   1            for(TEMP4=0;TEMP4<8;TEMP4++)
 182   1            {     VFD_CLK=0;
 183   2                  for(TEMP6=0;TEMP6<6;TEMP6++)
 184   2                        I=VFD_DATA;
 185   2                  if(I)
 186   2                  {     TEMP6=0X80;
 187   3                        TEMP6>>=(7-TEMP4);
 188   3                        TEMP5|=TEMP6;
 189   3                  };
 190   2                  VFD_CLK=1;
 191   2            };
 192   1      return(TEMP5);
 193   1      }
 194          void LIGHT_ALL(void)
C51 COMPILER V5.02,  VFD                                                                               11/07/00  14:15:37  PAGE 4   

 195          {     BYTE I;
 196   1      	VFD_STB=1;
 197   1      	VFD_STB=0;
 198   1      	WR_PANEL(0X40);
 199   1      	VFD_STB=1;
 200   1      	VFD_STB=0;
 201   1      	WR_PANEL(0XC0);
 202   1            for(I=0;I<12;I++) WR_PANEL(DISP_ARRAY[I]);
 203   1      	VFD_STB=1;
 204   1      }
 205          BIT LEAP_YEAR(void)
 206          {     BIT T;
 207   1            switch(YEAR)
 208   1            {     case  0:
 209   2                  case  4:
 210   2                  case  8:
 211   2                        T=1;
 212   2                        break;
 213   2                  default:
 214   2                        T=0;
 215   2                        break;
 216   2            };
 217   1            return(T);
 218   1      }
 219          BIT LEAP_MONTH(void)    //if this month has 30 day
 220          {     BIT T;
 221   1            switch(MONTH)
 222   1            {     case 4:
 223   2                  case 6:
 224   2                  case 9:
 225   2                  case 11:
 226   2                        T=1;
 227   2                        break;
 228   2                  default:
 229   2                        T=0;
 230   2                        break;
 231   2            };
 232   1            return(T);
 233   1      }
 234          void DAY_INC(void)
 235          {     DAY=0;
 236   1            MONTH++;
 237   1            if(MONTH==0x12)
 238   1            {     MONTH=0;
 239   2                  YEAR++;
 240   2                  if(YEAR==10)
 241   2                  YEAR=0;
 242   2            } ;
 243   1      }
 244          BYTE HEXTOBCD(BYTE TEMP7)
 245          {     BYTE E,F;
 246   1            E=TEMP7;
 247   1            F=E/10;
 248   1            E%=10;
 249   1            F<<=4;
 250   1            F|=E;
 251   1            TEMP7=F;
 252   1            return(TEMP7);
 253   1      }
 254          void COMPARE_TIME(BYTE *CP1)
 255          {     if(HOUR1==*CP1)
 256   1                  if(MINUTE1==*(CP1++))
 257   1                        ALARM_ON=1;
 258   1            if(HOUR1==*(CP1++))
 259   1                  if(MINUTE1==*(CP1++))
 260   1                        ALARM_ON=0;
 261   1       }
C51 COMPILER V5.02,  VFD                                                                               11/07/00  14:15:37  PAGE 5   

 262          void FILL_BCD_DISP(BYTE *I,BYTE *J,BYTE *K)
 263          {     BYTE TEMP;
 264   1                        TEMP=*I;
 265   1                        TEMP&=0X0F;
 266   1                        DISP_ARRAY[VFD_N1_ADDR]=DISP_CHARACTER[TEMP];
 267   1                        TEMP=*I;
 268   1                        TEMP>>=4;
 269   1                        TEMP&=0X0F;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -