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

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

⌨️ 快捷键说明

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