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

📄 t6620.lst

📁 基于NT69P20的遥控PS2键盘处理程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
0001                ;ProgramTEST for SH66P20 
0002                
0003                ; Date          2003.11.29
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                        
0106  0013  C129            CALL    INITMCU
0107                        ;CALL   INITWDT
0108                        ;LDI    PARM,0AH;上电延时100mS之后启动
0109                        ;CALL   DELAY_N_10mS
0110                
0111  0014          MAIN_SELFTEST:
0112  0014  7D43            LDI     PS2SNDH,0AH
0113  0015  7D44            LDI     PS2SNDL,0AH
0114  0016  C1FC            CALL    PS2OUTB         ;发送自检Pass指令
0115  0017  3847            LDA     PS2RET
0116  0018  8014            BNZ     MAIN_SELFTEST
0117                        
0118  0019          MAIN_LOOP:
0119  0019  C138            CALL    RSTWDT
0120                        
0121                
0122  001A  C270            CALL    PS2INB
0123  001B  3847            LDA     PS2RET
0124  001C  805F            BNZ     MAIN_LOOP_YAOKONG
0125                                
0126  001D  78A4            LDI     PARM,1
0127  001E  C142            CALL    DELAY_N_mS
0128                        
0129  001F  3840            LDA     PS2INH
0130  0020  3C3A            STA     CMP0H
0131  0021  3841            LDA     PS2INL
0132  0022  3C3B            STA     CMP0L   
0133                        
0134  0023  7F3C            LDI     CMP1H,0EH
0135  0024  7F3D            LDI     CMP1L,0EH
0136  0025  C13C            CALL    BYTECMP
0137  0026  802C            BNZ     MAIN_LOOP_CMD_1
0138                ;EE指令 ECHO
0139  0027  7F43            LDI     PS2SNDH,0EH
0140  0028  7F44            LDI     PS2SNDL,0EH
0141  0029  C1FC            CALL    PS2OUTB         ;发送响应指令
0142                
0143  002A  FFFF            NOP
0144                        
0145  002B  E019            JMP     MAIN_LOOP
0146                        
0147  002C          MAIN_LOOP_CMD_1:
0148  002C  7FBC            LDI     CMP1H,0FH
0149  002D  793D            LDI     CMP1L,02H
0150  002E  C13C            CALL    BYTECMP
0151  002F  803F            BNZ     MAIN_LOOP_CMD_2
0152                ;F2指令 ID
0153  0030  7FC3            LDI     PS2SNDH,0FH
0154  0031  7D44            LDI     PS2SNDL,0AH
0155  0032  C1FC            CALL    PS2OUTB         ;发送响应指令
0156                        
0157  0033  78A4            LDI     PARM,1
0158  0034  C142            CALL    DELAY_N_mS
0159                        
0160  0035  7D43            LDI     PS2SNDH,0AH
0161  0036  7DC4            LDI     PS2SNDL,0BH
0162  0037  C1FC            CALL    PS2OUTB         ;ID BYTE1
0163                        
0164  0038  78A4            LDI     PARM,1
0165  0039  C142            CALL    DELAY_N_mS
0166                        
0167  003A  7C43            LDI     PS2SNDH,08H
0168  003B  79C4            LDI     PS2SNDL,03H
0169  003C  C1FC            CALL    PS2OUTB         ;ID BYTE2
0170                
0171  003D  FFFF            NOP
0172                        
0173  003E  E019            JMP     MAIN_LOOP
0174  003F          MAIN_LOOP_CMD_2:
0175  003F  7FBC            LDI     CMP1H,0FH
0176  0040  7FBD            LDI     CMP1L,0FH
0177  0041  C13C            CALL    BYTECMP
0178                        
0179  0042  804F            BNZ     MAIN_LOOP_CMD_3
0180  0043  78A4            LDI     PARM,1
0181  0044  C142            CALL    DELAY_N_mS
0182  0045  7FC3            LDI     PS2SNDH,0FH
0183  0046  7D44            LDI     PS2SNDL,0AH
0184  0047  C1FC            CALL    PS2OUTB         ;发送响应指令
0185                        
0186  0048  78A4            LDI     PARM,1
0187  0049  C142            CALL    DELAY_N_mS
0188                        
0189  004A  7D43            LDI     PS2SNDH,0AH
0190  004B  7D44            LDI     PS2SNDL,0AH
0191  004C  C1FC            CALL    PS2OUTB         
0192                        
0193  004D  FFFF            NOP
0194  004E  E019            JMP     MAIN_LOOP
0195                        
0196  004F          MAIN_LOOP_CMD_3:
0197  004F  7FBC            LDI     CMP1H,0FH
0198  0050  79BD            LDI     CMP1L,03H
0199  0051  C13C            CALL    BYTECMP
0200                        
0201  0052  805A            BNZ     MAIN_LOOP_CMD_ALL
0202  0053  78A4            LDI     PARM,1
0203  0054  C142            CALL    DELAY_N_mS
0204                 
0205  0055  7FC3            LDI     PS2SNDH,0FH
0206  0056  7D44            LDI     PS2SNDL,0AH
0207  0057  C1FC            CALL    PS2OUTB         ;发送响应指令
0208  0058  FFFF            NOP
0209  0059  E019            JMP     MAIN_LOOP        
0210  005A          MAIN_LOOP_CMD_ALL:
0211                ;不解释的指令全部返回FA        
0212  005A  7FC3            LDI     PS2SNDH,0FH
0213  005B  7D44            LDI     PS2SNDL,0AH
0214  005C  C1FC            CALL    PS2OUTB         ;发送响应指令
0215                
0216  005D  FFFF            NOP
0217                        
0218  005E  E019            JMP     MAIN_LOOP
0219                        
0220  005F          MAIN_LOOP_YAOKONG:
0221  005F  C180            CALL    YAOKONG
0222  0060  3828            LDA     IRRES,00H
0223  0061  9019            BAZ     MAIN_LOOP
0224                        
0225  0062  50A8            SBI     IRRES,01H
0226  0063  8019            BNZ     MAIN_LOOP
0227                        
0228  0064  3834            LDA     IRD0H,00H         
0229  0065  3C0E            STA     TBR,00H
0230  0066  3835            LDA     IRD0L,00H
0231  0067  C2FF            CALL    TABCH-1
0232  0068  3C44            STA     PS2SNDL,00H
0233  0069  380E            LDA     TBR,00H
0234  006A  3C43            STA     PS2SNDH,00H     
0235                        
0236  006B          MAIN_LOOP_YK_1:
0237  006B  C1FC            CALL    PS2OUTB
0238  006C  3847            LDA     PS2RET
0239  006D  806B            BNZ     MAIN_LOOP_YK_1     ;发送第一字节
0240                        
0241                
0242  006E  78A4            LDI     PARM,1
0243  006F  C142            CALL    DELAY_N_mS
0244                
0245                
0246                                        
0247  0070  5743            SBI     PS2SNDH,0EH        
0248  0071  887F            BNC     MAIN_LOOP_YK_3
0249                        
0250  0072  3834            LDA     IRD0H,00H
0251  0073  3C0E            STA     TBR,00H
0252  0074  4B8E            ADIM    TBR,FNOFF
0253  0075  3835            LDA     IRD0L,00H
0254  0076  C36F            CALL    TABFN-1
0255  0077  3C44            STA     PS2SNDL,00H
0256  0078  380E            LDA     TBR,00H
0257  0079  3C43            STA     PS2SNDH,00H
0258                
0259  007A          MAIN_LOOP_YK_2:
0260  007A  C1FC            CALL    PS2OUTB
0261  007B  3847            LDA     PS2RET
0262  007C  807A            BNZ     MAIN_LOOP_YK_2
0263                        
0264  007D  78A4            LDI     PARM,1
0265  007E  C142            CALL    DELAY_N_mS
0266                
0267  007F          MAIN_LOOP_YK_3:
0268  007F  7FA4            LDI     PARM,0FH
0269  0080  C142            CALL    DELAY_N_mS
0270  0081  7AA4            LDI     PARM,05H
0271  0082  C142            CALL    DELAY_N_mS
0272  0083  7FA4            LDI     PARM,0FH
0273  0084  C142            CALL    DELAY_N_mS
0274                        
0275  0085  3834            LDA     IRD0H,00H
0276  0086  3C0E            STA     TBR,00H
0277  0087  3835            LDA     IRD0L,00H
0278  0088  C2FF            CALL    TABCH-1
0279  0089  3C44            STA     PS2SNDL,00H
0280  008A  380E            LDA     TBR,00H
0281  008B  3C43            STA     PS2SNDH,00H
0282                
0283  008C  5743            SBI     PS2SNDH,0EH
0284  008D  80AC            BNZ     MAIN_LOOP_YK_7
0285  008E  5044            SBI     PS2SNDL,00H
0286  008F  80AC            BNZ     MAIN_LOOP_YK_7
0287                ;若发送码为E0H,这样发送
0288                        

⌨️ 快捷键说明

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