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

📄 hour.lst

📁 8051编程实例完全手册中的全部程序。相信能给大家带来很多方便
💻 LST
📖 第 1 页 / 共 2 页
字号:
 225   1      XC0025:
 226   1              CLR     C
 227   1              MOV     A,R5
 228   1              SUBB    A,R7
 229   1              MOV     A,R6
 230   1              XRL     A,#080H
 231   1              MOV     R0,A
 232   1              MOV     A,R4
 233   1              XRL     A,#080H
 234   1              SUBB    A,R0
 235   1              JNC     XC0028
 236   1              INC     R5
 237   1              CJNE    R5,#00H,XC0069
 238   1              INC     R4
 239   1      XC0069:
 240   1              SJMP    XC0025
 241   1      XC0028:
C51 COMPILER V6.23a  HOUR                                                                  09/08/2003 17:01:40 PAGE 5   

 242   1      #pragma endasm
 243   1      }
 244          
 245          void display(unsigned char i,unsigned char num)
 246          {
 247   1              if(num >= 0 && num <=9)
 248   1              {switch(i)
 249   2              { case 0:P2= LedSelect0 | num;  
 250   3              //LedSelect0的高四位为选择第0个数码管的逻辑,低四位则为数码管显示的数字。
 251   3              break;
 252   3                case 1:P2= LedSelect1 | num;
 253   3                        //LedSelect1的高四位为选择第1个数码管的逻辑,低四位则为数码管显示的数字。
 254   3                        break;
 255   3                case 2:P2= LedSelect2 | num;
 256   3                        //LedSelect2的高四位为选择第2个数码管的逻辑,低四位则为数码管显示的数字。
 257   3                        break;
 258   3                case 3:P2= LedSelect3 | num;
 259   3                        //LedSelect3的高四位为选择第3个数码管的逻辑,低四位则为数码管显示的数字。
 260   3                        break;
 261   3                case 4:P2= LedSelect4 | num;
 262   3                        //LedSelect4的高四位为选择第4个数码管的逻辑,低四位则为数码管显示的数字。
 263   3                        break;
 264   3                case 5:P2= LedSelect5 | num;
 265   3                        //LedSelect5的高四位为选择第5个数码管的逻辑,低四位则为数码管显示的数字。
 266   3                        break;
 267   3                default:break;
 268   3              }
 269   2              }
 270   1      }
 271          
 272          unsigned char keyscan()
 273          {
 274   1              PinDrvKey1=TRUE;
 275   1              if(PinScanKey1==TRUE)
 276   1                      PinLamp=FALSE;
 277   1              PinSpeaker=FALSE;
 278   1              delay(DELAY_VALUE);
 279   1              PinLamp=TRUE;
 280   1              PinSpeaker=TRUE;
 281   1              return 1;
 282   1              if(PinScanKey2==TRUE)
 283   1                      PinLamp=FALSE;
 284   1              PinSpeaker=FALSE;
 285   1              delay(DELAY_VALUE);
 286   1              PinLamp=TRUE;
 287   1              PinSpeaker=TRUE;
 288   1              return 5;
 289   1              if(PinScanKey1==TRUE)
 290   1                      PinLamp=FALSE;
 291   1              PinSpeaker=FALSE;
 292   1              delay(DELAY_VALUE);
 293   1              PinLamp=TRUE;
 294   1              PinSpeaker=TRUE;
 295   1              return 9;
 296   1              if(PinScanKey1==TRUE)
 297   1                      PinLamp=FALSE;
 298   1              PinSpeaker=FALSE;
 299   1              delay(DELAY_VALUE);
 300   1              PinLamp=TRUE;
 301   1              PinSpeaker=TRUE;
 302   1              return 12;
 303   1              PinDrvKey1=FALSE;       //扫描第一列
C51 COMPILER V6.23a  HOUR                                                                  09/08/2003 17:01:40 PAGE 6   

 304   1              PinDrvKey2=TRUE;
 305   1              if(PinScanKey1==TRUE)
 306   1                      PinLamp=FALSE;
 307   1              PinSpeaker=FALSE;
 308   1              delay(DELAY_VALUE);
 309   1              PinLamp=TRUE;
 310   1              PinSpeaker=TRUE;
 311   1              return 2;
 312   1              if(PinScanKey2==TRUE)
 313   1                      PinLamp=FALSE;
 314   1              PinSpeaker=FALSE;
 315   1              delay(DELAY_VALUE);
 316   1              PinLamp=TRUE;
 317   1              PinSpeaker=TRUE;
 318   1              return 6;
 319   1              if(PinScanKey1==TRUE)
 320   1                      PinLamp=FALSE;
 321   1              PinSpeaker=FALSE;
 322   1              delay(DELAY_VALUE);
 323   1              PinLamp=TRUE;
 324   1              PinSpeaker=TRUE;
 325   1              return 0;
 326   1              if(PinScanKey1==TRUE)
 327   1                      PinLamp=FALSE;
 328   1              PinSpeaker=FALSE;
 329   1              delay(DELAY_VALUE);
 330   1              PinLamp=TRUE;
 331   1              PinSpeaker=TRUE;
 332   1              return 13;
 333   1              PinDrvKey2=FALSE;       //扫描第二列
 334   1              PinDrvKey3=TRUE;
 335   1              if(PinScanKey1==TRUE)
 336   1                      PinLamp=FALSE;
 337   1              PinSpeaker=FALSE;
 338   1              delay(DELAY_VALUE);
 339   1              PinLamp=TRUE;
 340   1              PinSpeaker=TRUE;
 341   1              return 3;
 342   1              if(PinScanKey2==TRUE)
 343   1                      PinLamp=FALSE;
 344   1              PinSpeaker=FALSE;
 345   1              delay(DELAY_VALUE);
 346   1              PinLamp=TRUE;
 347   1              PinSpeaker=TRUE;
 348   1              return 7;
 349   1              if(PinScanKey1==TRUE)
 350   1                      PinLamp=FALSE;
 351   1              PinSpeaker=FALSE;
 352   1              delay(DELAY_VALUE);
 353   1              PinLamp=TRUE;
 354   1              PinSpeaker=TRUE;
 355   1              return 10;
 356   1              if(PinScanKey1==TRUE)
 357   1                      PinLamp=FALSE;
 358   1              PinSpeaker=FALSE;
 359   1              delay(DELAY_VALUE);
 360   1              PinLamp=TRUE;
 361   1              PinSpeaker=TRUE;
 362   1              return 14;
 363   1              PinDrvKey3=FALSE;       //扫描第三列
 364   1              PinDrvKey4=TRUE;
 365   1              if(PinScanKey1==TRUE)
C51 COMPILER V6.23a  HOUR                                                                  09/08/2003 17:01:40 PAGE 7   

 366   1                      PinLamp=FALSE;
 367   1              PinSpeaker=FALSE;
 368   1              delay(DELAY_VALUE);
 369   1              PinLamp=TRUE;
 370   1              PinSpeaker=TRUE;
 371   1              return 4;
 372   1              if(PinScanKey2==TRUE)
 373   1                      PinLamp=FALSE;
 374   1              PinSpeaker=FALSE;
 375   1              delay(DELAY_VALUE);
 376   1              PinLamp=TRUE;
 377   1              PinSpeaker=TRUE;
 378   1              return 8;
 379   1              if(PinScanKey1==TRUE)
 380   1                      PinLamp=FALSE;
 381   1              PinSpeaker=FALSE;
 382   1              delay(DELAY_VALUE);
 383   1              PinLamp=TRUE;
 384   1              PinSpeaker=TRUE;
 385   1              return 11;
 386   1              if(PinScanKey1==TRUE)
 387   1                      PinLamp=FALSE;
 388   1              PinSpeaker=FALSE;
 389   1              delay(DELAY_VALUE);
 390   1              PinLamp=TRUE;
 391   1              PinSpeaker=TRUE;
 392   1              return 15;
 393   1              PinDrvKey3=FALSE;       //扫描第四列
 394   1              return 16;
 395   1      }
 396          
 397          void updatee()
 398          {
 399   1              if(s0==9)       //如果10ms位需要进位,则进入语句
 400   1              {
 401   2                      s0=0;
 402   2                      if(s1==5)       //如果100ms位需要进位,则进入语句
 403   2                      {
 404   3                              s1=0;
 405   3                              if(m0==9)       //如果1sec位需要进位,则进入语句
 406   3                              {
 407   4                                      m0=0;
 408   4                                      if(m1==5)       //如果10sec位需要进位,则进入语句
 409   4                                      {
 410   5                                              m1=0;
 411   5                                              if(h0==9&&h1<=1)
 412   5                                              {h0=0;
 413   6                                              h1+=1;}
 414   5                                              else if(h0==3&&h1==2)
 415   5                                              {h0=0;
 416   6                                              h1=0;}
 417   5                                              else h0+=1;
 418   5                                      }
 419   4                                      else m1+=1;
 420   4                              }
 421   3                              else m0+=1;
 422   3                      }
 423   2                      else s1+=1;
 424   2              }
 425   1              else s0+=1;
 426   1              display(0,s0);
 427   1              delay(DELAY_VALUE);
C51 COMPILER V6.23a  HOUR                                                                  09/08/2003 17:01:40 PAGE 8   

 428   1              display(1,s1);
 429   1              delay(DELAY_VALUE);
 430   1              display(2,m0);
 431   1              delay(DELAY_VALUE);
 432   1              display(3,m1);
 433   1              delay(DELAY_VALUE);
 434   1              display(4,h0);
 435   1              delay(DELAY_VALUE);
 436   1              display(5,h1);
 437   1              delay(DELAY_VALUE); //以上语句则在数码管上显示各个数字
 438   1              
 439   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    915    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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