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

📄 t6620.lst

📁 基于NT69P20的遥控PS2键盘处理程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
0001                ;ProgramTEST for SH66P20
0002                
0003                ; Date          2003.09.25
0004                
0005                ; AuthorWilliam Guo
0006                
0007                        LIST    P=69P20
0008                
0009                        TITLE   T6620
0010                
0011                ; Define Symbols
0012                
0013                ; 00h->1fhSystem RAM for Register   32*4bit
0014  0000          IE      EQU     0
0015  0001          IRQ     EQU     1
0016  0002          TM0MOD  EQU     2
0017  0004          T0L     EQU     4
0018  0005          T0H     EQU     5
0019                
0020  0008          PORTA   EQU     8
0021  0009          PORTB   EQU     PORTA+1
0022  000A          PORTC   EQU     PORTA+2
0023                
0024  000E          TBR     EQU     PORTA+6
0025  000F          INX     EQU     PORTA+7
0026                
0027  0010          DPTRL   EQU     10H
0028  0011          DPTRM   EQU     DPTRL+1
0029  0012          DPTRH   EQU     DPTRL+2
0030                
0031                
0032  0016          PAOUT   EQU     16H
0033  0017          PBOUT   EQU     PAOUT+1
0034  0018          PCOUT   EQU     PAOUT+2
0035  0019          PLCTL   EQU     19H
0036                
0037                
0038  001E          WDT     EQU     1EH
0039                
0040                ;20h->5Fh   USER RAM     64*4 Bit
0041  0020          ACCBUF  EQU     20H      
0042  0021          CT0     EQU     21H 
0043  0022          CT1     EQU     22H 
0044  0023          CT2     EQU     23H
0045  0024          PARM    EQU     24H 
0046                
0047  0025          IRCNTH  EQU     25H
0048  0026          IRCNTL  EQU     26H
0049  0027          IRTEMP  EQU     27H
0050  0028          IRRES   EQU     28H
0051                
0052  0030          IRC0    EQU     30H
0053  0031          IRC1    EQU     IRC0+1
0054  0032          IRC2    EQU     IRC0+2
0055  0033          IRC3    EQU     IRC0+3          ;4*4=16BIT Custom CODE
0056  0034          IRD0H   EQU     IRC0+4
0057  0035          IRD0L   EQU     IRC0+5          ;2*4=8BITIR Data CODE
0058  0036          IRD1H   EQU     IRC0+6
0059  0037          IRD1L   EQU     IRC0+7          ;2*4=8BITIR Invert Data CODE
0060                
0061                
0062  0040          PS2INH  EQU     40H
0063  0041          PS2INL  EQU     PS2INH+1
0064  0042          PS2CNTL EQU     42H
0065  0043          PS2SNDH EQU     43H
0066  0044          PS2SNDL EQU     44H
0067  0047          PS2RET  EQU     47H
0068  0048          PS2TEMP EQU     48H
0069  0049          PS2BUF  EQU     49H
0070                
0071  003A          CMP0H   EQU     3AH
0072  003B          CMP0L   EQU     3BH
0073  003C          CMP1H   EQU     3CH
0074  003D          CMP1L   EQU     3DH
0075  003E          KEYCNT  EQU     3EH
0076                
0077                ;MARSK
0078  000D          MPS2CLK0EQU     1101B
0079  0002          MPS2CLK1EQU     0010B
0080  000B          MPS2D0          EQU     1011B
0081  0004          MPS2D1          EQU     0100B
0082  0005          KEYTHRS         EQU     05H
0083  0300          TABCH           EQU     0300H
0084  0370          TABFN           EQU     0370H
0085  0007          FNOFF           EQU     07H
0086                ; Port Assign
0087                
0088                ; Program Begins
0089                
0090  0000                  ORG     0
0091                
0092  0000  E010            JMP     INI
0093                
0094  0001  D400            RTNI
0095  0002  D400            RTNI
0096  0003  D400            RTNI
0097  0004  D400            RTNI
0098                        
0099  0010                  ORG     10h
0100                
0101  0010          INI:
0102  0010  FFFF            NOP
0103  0011  FFFF            NOP
0104  0012  FFFF            NOP
0105  0013  C0EC            CALL    INITMCU
0106                        
0107                        ;LDI    PARM,0AH;上电延时100mS之后启动
0108                        ;CALL   DELAY_N_10mS
0109                
0110                ;MAIN_SELFTEST:
0111                ;       LDI     PS2SNDH,0AH
0112                ;       LDI     PS2SNDL,0AH
0113                ;       CALL    PS2OUTB         ;发送自检Pass指令
0114                ;       LDA     PS2RET
0115                ;       BNZ     MAIN_SELFTEST
0116                        
0117  0014          MAIN_LOOP:
0118  0014  E05A            JMP     MAIN_LOOP_YAOKONG
0119  0015  C240            CALL    PS2INB
0120  0016  3847            LDA     PS2RET
0121  0017  805A            BNZ     MAIN_LOOP_YAOKONG
0122                                
0123  0018  78A4            LDI     PARM,1
0124  0019  C102            CALL    DELAY_N_mS
0125                        
0126  001A  3840            LDA     PS2INH
0127  001B  3C3A            STA     CMP0H
0128  001C  3841            LDA     PS2INL
0129  001D  3C3B            STA     CMP0L   
0130                        
0131  001E  7F3C            LDI     CMP1H,0EH
0132  001F  7F3D            LDI     CMP1L,0EH
0133  0020  C0FC            CALL    BYTECMP
0134  0021  8027            BNZ     MAIN_LOOP_CMD_1
0135                ;EE指令 ECHO
0136  0022  7F43            LDI     PS2SNDH,0EH
0137  0023  7F44            LDI     PS2SNDL,0EH
0138  0024  C1B1            CALL    PS2OUTB         ;发送响应指令
0139                
0140  0025  FFFF            NOP
0141                        
0142  0026  E014            JMP     MAIN_LOOP
0143                        
0144  0027          MAIN_LOOP_CMD_1:
0145  0027  7FBC            LDI     CMP1H,0FH
0146  0028  793D            LDI     CMP1L,02H
0147  0029  C0FC            CALL    BYTECMP
0148  002A  803A            BNZ     MAIN_LOOP_CMD_2
0149                ;F2指令 ID
0150  002B  7FC3            LDI     PS2SNDH,0FH
0151  002C  7D44            LDI     PS2SNDL,0AH
0152  002D  C1B1            CALL    PS2OUTB         ;发送响应指令
0153                        
0154  002E  78A4            LDI     PARM,1
0155  002F  C102            CALL    DELAY_N_mS
0156                        
0157  0030  7D43            LDI     PS2SNDH,0AH
0158  0031  7DC4            LDI     PS2SNDL,0BH
0159  0032  C1B1            CALL    PS2OUTB         ;ID BYTE1
0160                        
0161  0033  78A4            LDI     PARM,1
0162  0034  C102            CALL    DELAY_N_mS
0163                        
0164  0035  7C43            LDI     PS2SNDH,08H
0165  0036  79C4            LDI     PS2SNDL,03H
0166  0037  C1B1            CALL    PS2OUTB         ;ID BYTE2
0167                
0168  0038  FFFF            NOP
0169                        
0170  0039  E014            JMP     MAIN_LOOP
0171  003A          MAIN_LOOP_CMD_2:
0172  003A  7FBC            LDI     CMP1H,0FH
0173  003B  7FBD            LDI     CMP1L,0FH
0174  003C  C0FC            CALL    BYTECMP
0175                        
0176  003D  804A            BNZ     MAIN_LOOP_CMD_3
0177  003E  78A4                    LDI     PARM,1
0178  003F  C102            CALL    DELAY_N_mS
0179  0040  7FC3            LDI     PS2SNDH,0FH
0180  0041  7D44            LDI     PS2SNDL,0AH
0181  0042  C1B1            CALL    PS2OUTB         ;发送响应指令
0182                        
0183  0043  78A4            LDI     PARM,1
0184  0044  C102            CALL    DELAY_N_mS
0185                        
0186  0045  7D43            LDI     PS2SNDH,0AH
0187  0046  7D44            LDI     PS2SNDL,0AH
0188  0047  C1B1            CALL    PS2OUTB         
0189                        
0190  0048  FFFF            NOP
0191  0049  E014            JMP     MAIN_LOOP
0192                        
0193  004A          MAIN_LOOP_CMD_3:
0194  004A  7FBC            LDI     CMP1H,0FH
0195  004B  79BD            LDI     CMP1L,03H
0196  004C  C0FC            CALL    BYTECMP
0197                        
0198  004D  8055            BNZ     MAIN_LOOP_CMD_ALL
0199  004E  78A4            LDI     PARM,1
0200  004F  C102            CALL    DELAY_N_mS
0201                
0202  0050  7FC3            LDI     PS2SNDH,0FH
0203  0051  7D44            LDI     PS2SNDL,0AH
0204  0052  C1B1            CALL    PS2OUTB         ;发送响应指令
0205  0053  FFFF            NOP
0206  0054  E014            JMP     MAIN_LOOP        
0207  0055          MAIN_LOOP_CMD_ALL:
0208                ;不解释的指令全部返回FA        
0209  0055  7FC3            LDI     PS2SNDH,0FH
0210  0056  7D44            LDI     PS2SNDL,0AH
0211  0057  C1B1            CALL    PS2OUTB         ;发送响应指令
0212                
0213  0058  FFFF            NOP
0214                        
0215  0059  E014            JMP     MAIN_LOOP
0216                        
0217  005A          MAIN_LOOP_YAOKONG:
0218  005A  C140            CALL    YAOKONG
0219  005B  3828            LDA     IRRES,00H
0220  005C  9014            BAZ     MAIN_LOOP
0221                        
0222  005D  50A8            SBI     IRRES,01H
0223  005E  80A3            BNZ     MAIN_LOOP_KEYPLAY
0224                        
0225  005F  3834            LDA     IRD0H,00H
0226  0060  3C0E            STA     TBR,00H
0227  0061  3835            LDA     IRD0L,00H
0228  0062  C2FF            CALL    TABCH-1
0229  0063  3C44            STA     PS2SNDL,00H
0230  0064  380E            LDA     TBR,00H
0231  0065  3C43            STA     PS2SNDH,00H
0232                
0233  0066          MAIN_LOOP_YK_1:
0234  0066  C1B1            CALL    PS2OUTB
0235  0067  3847            LDA     PS2RET
0236  0068  8066            BNZ     MAIN_LOOP_YK_1
0237                        
0238                
0239  0069  78A4            LDI     PARM,1
0240  006A  C102            CALL    DELAY_N_mS
0241                                
0242  006B  5743            SBI     PS2SNDH,0EH
0243  006C  8814            BNC     MAIN_LOOP
0244                        
0245  006D  3834            LDA     IRD0H,00H
0246  006E  3C0E            STA     TBR,00H
0247  006F  4B8E            ADIM    TBR,FNOFF
0248  0070  3835            LDA     IRD0L,00H
0249  0071  C36F            CALL    TABFN-1
0250  0072  3C44            STA     PS2SNDL,00H
0251  0073  380E            LDA     TBR,00H
0252  0074  3C43            STA     PS2SNDH,00H
0253                
0254  0075          MAIN_LOOP_YK_2:
0255  0075  C1B1            CALL    PS2OUTB
0256  0076  3847            LDA     PS2RET
0257  0077  8075            BNZ     MAIN_LOOP_YK_2
0258                        
0259  0078  78A4            LDI     PARM,1
0260  0079  C102            CALL    DELAY_N_mS
0261                
0262  007A          MAIN_LOOP_YK_3:
0263  007A  7D24            LDI     PARM,0AH
0264  007B  C102            CALL    DELAY_N_mS
0265                        
0266  007C  3834            LDA     IRD0H,00H
0267  007D  3C0E            STA     TBR,00H
0268  007E  3835            LDA     IRD0L,00H
0269  007F  C2FF            CALL    TABCH-1
0270  0080  3C44            STA     PS2SNDL,00H
0271  0081  380E            LDA     TBR,00H
0272  0082  3C43            STA     PS2SNDH,00H
0273                
0274  0083  5743            SBI     PS2SNDH,0EH
0275  0084  808E            BNZ     MAIN_LOOP_YK_5
0276  0085  5044            SBI     PS2SNDL,00H
0277  0086  808E            BNZ     MAIN_LOOP_YK_5
0278                ;若发送码为E0H,这样发送
0279                        
0280  0087  7F43            LDI     PS2SNDH,0EH
0281  0088  7844            LDI     PS2SNDL,00H
0282  0089          MAIN_LOOP_YK_4_1:
0283  0089  C1B1            CALL    PS2OUTB
0284  008A  3847            LDA     PS2RET
0285  008B  8089            BNZ     MAIN_LOOP_YK_4_1
0286                        
0287  008C  78A4            LDI     PARM,01H

⌨️ 快捷键说明

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