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

📄 kb.lst

📁 ps/2键盘程序 采用第2套编码方式
💻 LST
📖 第 1 页 / 共 2 页
字号:
014F D2B3            179             setb    KEY_CLOCK       ;释放时钟
0151 7914            180             mov     r1,#DLY20       ;延时20us
0153 D9FE            181             djnz    r1,$            ;       20us*11.0592/12-1
                     182             ;测试主机是否放弃这次传送
                     183             ;JNB    KEY_CLOCK,SEND_BYTE
0155 EE              184             mov     a,r6
0156 25E0            185             add     a,acc
0158 FE              186             mov     r6,a
0159 0D              187             inc     r5              ;发送位数加1
015A BD08DC          188             cjne    r5,#08,nextb1   ;连续发送8位
                     189             ;发送效验位
015D EB              190             mov     a,r3    
A51 MACRO ASSEMBLER  KB                                                                   12/03/2005 20:16:44 PAGE     4

015E 5401            191             anl     a,#01
0160 6004            192             jz      nextb3
0162 C2B4            193             clr     KEY_DATA
0164 8002            194             sjmp    nextb4
0166                 195     nextb3:
0166 D2B4            196             setb    KEY_DATA
0168                 197     nextb4:
0168 7914            198             mov     r1,#DLY20       ;延时20us
016A D9FE            199             djnz    r1,$            ;       20us*11.0592/12-1
016C C2B3            200             clr     KEY_CLOCK       
016E 7928            201             mov     r1,#DLY40       ;延时40us
0170 D9FE            202             djnz    r1,$            ;       40us*11.0592/12-1
0172 D2B3            203             setb    KEY_CLOCK
0174 7914            204             mov     r1,#DLY20       ;延时20us
0176 D9FE            205             djnz    r1,$            ;       20us*11.0592/12-1
                     206             ;测试主机是否放弃这次传送
                     207             ;JNB    KEY_CLOCK,SEND_BYTE
                     208             ;发送停止位
0178 D2B4            209             setb    KEY_DATA
017A 7914            210             mov     r1,#DLY20       ;延时20us
017C D9FE            211             djnz    r1,$            ;       20us*11.0592/12-1
017E C2B3            212             clr     KEY_CLOCK
0180 7928            213             mov     r1,#DLY40       ;延时40us
0182 D9FE            214             djnz    r1,$            ;       40us*11.0592/12-1
0184 D2B3            215             setb    KEY_CLOCK
0186 791E            216             mov     r1,#DLY30       ;延时30us
0188 D9FE            217             djnz    r1,$            ;       30us*11.0592/12-1
                     218     ;=
018A                 219     loopc1:
018A 30B3FD          220             jnb     KEY_CLOCK,$     ;1. 等待时钟转为高电平
018D 7932            221             mov     r1,#DLY50       ;2. 延时 50us
018F D9FE            222             djnz    r1,$            ;        50us*11.0592/12-1
0191 30B3F6          223             jnb     KEY_CLOCK,loopc1;3. 不是高电平的话,回到第一步
0194 30B4F3          224             jnb     KEY_DATA,loopc1 ;4. 不是高电平的话,放弃发送,转为接收
0197 7914            225             mov     r1,#DLY20       ;5. 延时20us
0199 D9FE            226             djnz    r1,$            ;       20us*11.0592/12-1
                     227             ;6. 发送起始位 0
019B C2B4            228             clr     KEY_DATA        
019D 7914            229             mov     r1,#DLY20       ;6.1 延时20us
019F D9FE            230             djnz    r1,$            ;       20us*11.0592/12-1
01A1 C2B3            231             clr     KEY_CLOCK       ;6.2 拉低时钟
01A3 7928            232             mov     r1,#DLY40       ;6.3 延时40us
01A5 D9FE            233             djnz    r1,$            ;       40us*11.0592/12-1
01A7 D2B3            234             setb    KEY_CLOCK       ;6.4 释放时钟
01A9 7914            235             mov     r1,#DLY20       ;6.5 延时20us
01AB D9FE            236             djnz    r1,$            ;       20us*11.0592/12-1
                     237             ;测试主机是否放弃这次传送
                     238     
                     239             ;7. 发送8位数据
01AD E4              240             clr     a
01AE FD              241             mov     r5,a            ;r5为发送计数
01AF 7B00            242             mov     r3,#0           ;效验位计数复位
01B1 7E01            243             mov     r6,#01
01B3                 244     nextc1:
01B3 EE              245             mov     a,r6
01B4 5C              246             anl     a,r4            ;要发送的字符放在KEY_BUFF中
01B5 7004            247             jnz     bitc1
01B7 C2B4            248             clr     KEY_DATA
01B9 8003            249             sjmp    nextc2
01BB                 250     bitc1:  
01BB D2B4            251             setb    KEY_DATA
01BD 0B              252             inc     r3              ;为1的个数加1
01BE                 253     nextc2: 
01BE 7914            254             mov     r1,#DLY20       ;延时20us
01C0 D9FE            255             djnz    r1,$            ;       20us*11.0592/12-1
01C2 C2B3            256             clr     KEY_CLOCK       ;拉低时钟
A51 MACRO ASSEMBLER  KB                                                                   12/03/2005 20:16:44 PAGE     5

01C4 7928            257             mov     r1,#DLY40       ;延时40us
01C6 D9FE            258             djnz    r1,$            ;       40us*11.0592/12-1
01C8 D2B3            259             setb    KEY_CLOCK       ;释放时钟
01CA 7914            260             mov     r1,#DLY20       ;延时20us
01CC D9FE            261             djnz    r1,$            ;       20us*11.0592/12-1
                     262             ;测试主机是否放弃这次传送
                     263             ;JNB    KEY_CLOCK,SEND_BYTE
01CE EE              264             mov     a,r6
01CF 25E0            265             add     a,acc
01D1 FE              266             mov     r6,a
01D2 0D              267             inc     r5              ;发送位数加1
01D3 BD08DD          268             cjne    r5,#08,nextc1   ;连续发送8位
                     269             ;发送效验位
01D6 EB              270             mov     a,r3    
01D7 5401            271             anl     a,#01
01D9 6004            272             jz      nextc3
01DB C2B4            273             clr     KEY_DATA
01DD 8002            274             sjmp    nextc4
01DF                 275     nextc3:
01DF D2B4            276             setb    KEY_DATA
01E1                 277     nextc4:
01E1 7914            278             mov     r1,#DLY20       ;延时20us
01E3 D9FE            279             djnz    r1,$            ;       20us*11.0592/12-1
01E5 C2B3            280             clr     KEY_CLOCK       
01E7 7928            281             mov     r1,#DLY40       ;延时40us
01E9 D9FE            282             djnz    r1,$            ;       40us*11.0592/12-1
01EB D2B3            283             setb    KEY_CLOCK
01ED 7914            284             mov     r1,#DLY20       ;延时20us
01EF D9FE            285             djnz    r1,$            ;       20us*11.0592/12-1
                     286             ;测试主机是否放弃这次传送
                     287             ;JNB    KEY_CLOCK,SEND_BYTE
                     288             ;发送停止位
01F1 D2B4            289             setb    KEY_DATA
01F3 7914            290             mov     r1,#DLY20       ;延时20us
01F5 D9FE            291             djnz    r1,$            ;       20us*11.0592/12-1
01F7 C2B3            292             clr     KEY_CLOCK
01F9 7928            293             mov     r1,#DLY40       ;延时40us
01FB D9FE            294             djnz    r1,$            ;       40us*11.0592/12-1
01FD D2B3            295             setb    KEY_CLOCK
01FF 791E            296             mov     r1,#DLY30       ;延时30us
0201 D9FE            297             djnz    r1,$            ;       30us*11.0592/12-1
                     298             
0203 79FF            299             mov     r1,#0FFH
0205 7BFF            300     dly2:   mov     r3,#0FFH
0207 DBFE            301             djnz    r3,$
0209 D9FA            302             djnz    r1,dly2
                     303     
020B 020065          304             ljmp    loop
                     305     
                     306     end
A51 MACRO ASSEMBLER  KB                                                                   12/03/2005 20:16:44 PAGE     6

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
BITA1. . . . . . .  C ADDR   00C8H   A   
BITB1. . . . . . .  C ADDR   0142H   A   
BITC1. . . . . . .  C ADDR   01BBH   A   
DLY2 . . . . . . .  C ADDR   0205H   A   
DLY20. . . . . . .  N NUMB   0014H   A   
DLY30. . . . . . .  N NUMB   001EH   A   
DLY40. . . . . . .  N NUMB   0028H   A   
DLY50. . . . . . .  N NUMB   0032H   A   
GREEN_LED. . . . .  B ADDR   0090H.1 A   
KEY. . . . . . . .  C ADDR   0093H   A   
KEY0 . . . . . . .  C ADDR   0069H   A   
KEY1 . . . . . . .  C ADDR   007DH   A   
KEY2 . . . . . . .  C ADDR   0081H   A   
KEY3 . . . . . . .  C ADDR   0085H   A   
KEY4 . . . . . . .  C ADDR   0089H   A   
KEY5 . . . . . . .  C ADDR   008DH   A   
KEY6 . . . . . . .  C ADDR   0091H   A   
KEY_CLOCK. . . . .  B ADDR   00B0H.3 A   
KEY_DATA . . . . .  B ADDR   00B0H.4 A   
L1 . . . . . . . .  C ADDR   005BH   A   
LOOP . . . . . . .  C ADDR   0065H   A   
LOOPA1 . . . . . .  C ADDR   0097H   A   
LOOPB1 . . . . . .  C ADDR   0110H   A   
LOOPC1 . . . . . .  C ADDR   018AH   A   
NEXTA1 . . . . . .  C ADDR   00C0H   A   
NEXTA2 . . . . . .  C ADDR   00CBH   A   
NEXTA3 . . . . . .  C ADDR   00ECH   A   
NEXTA4 . . . . . .  C ADDR   00EEH   A   
NEXTB1 . . . . . .  C ADDR   0139H   A   
NEXTB2 . . . . . .  C ADDR   0145H   A   
NEXTB3 . . . . . .  C ADDR   0166H   A   
NEXTB4 . . . . . .  C ADDR   0168H   A   
NEXTC1 . . . . . .  C ADDR   01B3H   A   
NEXTC2 . . . . . .  C ADDR   01BEH   A   
NEXTC3 . . . . . .  C ADDR   01DFH   A   
NEXTC4 . . . . . .  C ADDR   01E1H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RED_LED. . . . . .  B ADDR   0090H.0 A   
SP . . . . . . . .  D ADDR   0081H   A   
START. . . . . . .  C ADDR   0050H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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