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

📄 keypaddrive.ls1

📁 这是用proteus做的基于51核的一个菜单仿真的程序开发环境keil 没有使用os在裸机上跑
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     191                             ; SOURCE LINE # 50
0017 E6              192             MOV     A,@R0
0018 540F            193             ANL     A,#0FH
001A FF              194             MOV     R7,A
001B F6              195             MOV     @R0,A
                     196     ;                                BufFlag=NOTEMPTY;
                     197                             ; SOURCE LINE # 51
001C 900000   F      198             MOV     DPTR,#BufFlag
001F 7402            199             MOV     A,#02H
0021 F0              200             MOVX    @DPTR,A
                     201     ;                                if (Real==Front)
                     202                             ; SOURCE LINE # 52
0022 08              203             INC     R0
0023 E6              204             MOV     A,@R0
0024 B50703          205             CJNE    A,AR7,?C0003
                     206     ;                                       BufFlag=FULL;
                     207                             ; SOURCE LINE # 53
0027 7401            208             MOV     A,#01H
0029 F0              209             MOVX    @DPTR,A
                     210     ;                               }
                     211                             ; SOURCE LINE # 54
                     212     ;               }
                     213                             ; SOURCE LINE # 55
002A                 214     ?C0003:
002A 22              215             RET     
                     216     ; END OF _PutInBuf
                     217     
                     218     ; //----------------------------------------
                     219     ; //  get char from the key bufffer
                     220     ; //---------------------------------------
                     221     ;  
                     222     ;  unchar GetKey()
                     223     
----                 224             RSEG  ?PR?GetKey?KEYPADDRIVE
0000                 225     GetKey:
                     226             USING   0
                     227                             ; SOURCE LINE # 60
                     228     ;            { unchar x;
                     229                             ; SOURCE LINE # 61
                     230     ;                 if (BufFlag!=EMPTY)
                     231                             ; SOURCE LINE # 62
0000 900000   F      232             MOV     DPTR,#BufFlag
0003 E0              233             MOVX    A,@DPTR
0004 6022            234             JZ      ?C0004
                     235     ;                         {
                     236                             ; SOURCE LINE # 63
                     237     ;                           x=KeyBuf[Front];
                     238                             ; SOURCE LINE # 64
0006 7800     F      239             MOV     R0,#LOW (Front)
0008 E6              240             MOV     A,@R0
0009 2400     F      241             ADD     A,#LOW (KeyBuf)
000B F582            242             MOV     DPL,A
000D E4              243             CLR     A
000E 3400     F      244             ADDC    A,#HIGH (KeyBuf)
0010 F583            245             MOV     DPH,A
0012 E0              246             MOVX    A,@DPTR
0013 FF              247             MOV     R7,A
                     248     ;---- Variable 'x?141' assigned to Register 'R7' ----
                     249     ;                           Front++;
                     250                             ; SOURCE LINE # 65
0014 06              251             INC     @R0
                     252     ;                               Front&=0x0f;
                     253                             ; SOURCE LINE # 66
0015 E6              254             MOV     A,@R0
0016 540F            255             ANL     A,#0FH
A51 MACRO ASSEMBLER  KEYPADDRIVE                                                          06/29/2005 15:41:36 PAGE     5

0018 FE              256             MOV     R6,A
0019 F6              257             MOV     @R0,A
                     258     ;                               BufFlag=NOTFULL;
                     259                             ; SOURCE LINE # 67
001A 900000   F      260             MOV     DPTR,#BufFlag
001D 7403            261             MOV     A,#03H
001F F0              262             MOVX    @DPTR,A
                     263     ;                               if (Real==Front)
                     264                             ; SOURCE LINE # 68
0020 18              265             DEC     R0
0021 E6              266             MOV     A,@R0
0022 B50602          267             CJNE    A,AR6,?C0005
                     268     ;                                       BufFlag=EMPTY;
                     269                             ; SOURCE LINE # 69
0025 E4              270             CLR     A
0026 F0              271             MOVX    @DPTR,A
0027                 272     ?C0005:
                     273     ;                               return(x);      
                     274                             ; SOURCE LINE # 70
0027 22              275             RET     
                     276     ;                         }
                     277                             ; SOURCE LINE # 71
0028                 278     ?C0004:
                     279     ;                        //else         
                     280     ;               return(0);      
                     281                             ; SOURCE LINE # 73
0028 7F00            282             MOV     R7,#00H
                     283     ;            }
                     284                             ; SOURCE LINE # 74
002A                 285     ?C0006:
002A 22              286             RET     
                     287     ; END OF GetKey
                     288     
                     289     ;   
                     290     ; //--------------------------------------
                     291     ; // key scan  function 
                     292     ; // scan the key and put the key into key  buffer 
                     293     ; //-----------------------------------------------
                     294     ;   KeyScan()
                     295     
----                 296             RSEG  ?PR?KeyScan?KEYPADDRIVE
0000                 297     KeyScan:
                     298             USING   0
                     299                             ; SOURCE LINE # 80
                     300     ;       {unchar x0,x1,x2,x3;
                     301                             ; SOURCE LINE # 81
                     302     ;        
                     303     ;        switch(KeyPadStatus)
                     304                             ; SOURCE LINE # 83
0000 7800     F      305             MOV     R0,#LOW (KeyPadStatus)
0002 E6              306             MOV     A,@R0
0003 14              307             DEC     A
0004 7003            308             JNZ     $ + 5H
0006 020000   F      309             LJMP    ?C0029
0009 14              310             DEC     A
000A 7003            311             JNZ     $ + 5H
000C 020000   F      312             LJMP    ?C0031
000F 14              313             DEC     A
0010 7003            314             JNZ     $ + 5H
0012 020000   F      315             LJMP    ?C0053
0015 14              316             DEC     A
0016 7003            317             JNZ     $ + 5H
0018 020000   F      318             LJMP    ?C0055
001B 2404            319             ADD     A,#04H
001D 6003            320             JZ      $ + 5H
001F 020000   F      321             LJMP    ?C0065
A51 MACRO ASSEMBLER  KEYPADDRIVE                                                          06/29/2005 15:41:36 PAGE     6

                     322     ;         {
                     323                             ; SOURCE LINE # 84
                     324     ;        case 0  : 
                     325                             ; SOURCE LINE # 85
0022                 326     ?C0008:
                     327     ; //--------------------------------------------------------------------------
                     328     ; // scan the first row
                     329     ; //--------------------------------------------------------------------------
                     330     ;                       KEY_ROW = Row[0];
                     331                             ; SOURCE LINE # 89
0022 900000   F      332             MOV     DPTR,#Row
0025 E4              333             CLR     A
0026 93              334             MOVC    A,@A+DPTR
0027 902000          335             MOV     DPTR,#02000H
002A F0              336             MOVX    @DPTR,A
                     337     ;                                        
                     338     ;                       Key=KEY_VERTICAL;
                     339                             ; SOURCE LINE # 91
002B 90A000          340             MOV     DPTR,#0A000H
002E E0              341             MOVX    A,@DPTR
002F F500     F      342             MOV     Key,A
                     343     ;                                       //      while(1);
                     344     ;                                         
                     345     ;                                        if (Key )
                     346                             ; SOURCE LINE # 94
0031 6024            347             JZ      ?C0009
                     348     ;                                               {
                     349                             ; SOURCE LINE # 95
                     350     ;                                         if (Vertical0)
                     351                             ; SOURCE LINE # 96
0033 300006   F      352             JNB     Vertical0,?C0010
                     353     ;                                                 {
                     354                             ; SOURCE LINE # 97
                     355     ;                           Temp=KeyElement0[0];
                     356                             ; SOURCE LINE # 98
0036 900000   F      357             MOV     DPTR,#KeyElement0
                     358     ;                                                  KeyPadStatus=1;
                     359                             ; SOURCE LINE # 99
                     360     ;                           break;
                     361                             ; SOURCE LINE # 100
0039 020000   F      362             LJMP    ?C0080
                     363     ;                                             }
                     364                             ; SOURCE LINE # 101
003C                 365     ?C0010:
                     366     ;                                                   
                     367     ;                                         if  (Vertical1)
                     368                             ; SOURCE LINE # 103
003C 300006   F      369             JNB     Vertical1,?C0011
                     370     ;                           {
                     371                             ; SOURCE LINE # 104
                     372     ;                           Temp=KeyElement0[1];
                     373                             ; SOURCE LINE # 105
003F 900000   F      374             MOV     DPTR,#KeyElement0+01H
0042                 375     ?C0066:
                     376     ; 
                     377     ;                           KeyPadStatus=1;
                     378                             ; SOURCE LINE # 107
                     379     ;                           break;
                     380                             ; SOURCE LINE # 108
0042 020000   F      381             LJMP    ?C0080
                     382     ;                                             }
                     383                             ; SOURCE LINE # 109
0045                 384     ?C0011:
                     385     ;                       if  (Vertical2)
                     386                             ; SOURCE LINE # 110
0045 300006   F      387             JNB     Vertical2,?C0012
A51 MACRO ASSEMBLER  KEYPADDRIVE                                                          06/29/2005 15:41:36 PAGE     7

                     388     ;                           {
                     389                             ; SOURCE LINE # 111
                     390     ;                           Temp=KeyElement0[2];

⌨️ 快捷键说明

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