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

📄 ps2kb_uart.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0164 5BDF              xcall _uart_transmit
 0166                   .dbline 140
 0166           ;                                                       } 
 0166 3BC0              xjmp L24
 0168           L31:
 0168                   .dbline 142
 0168           ;                                               else  //按下SHIFT
 0168           ;                                                       {
 0168                   .dbline 143
 0168 6627              clr R22
 016A 01C0              xjmp L44
 016C           L41:
 016C                   .dbline 143
 016C           L42:
 016C                   .dbline 143
 016C 6395              inc R22
 016E           L44:
 016E                   .dbline 143
 016E           ;                                                               for(TempCyc = 0; (Shifted[TempCyc][0]!=ScanCode)&&(TempCyc<59); TempCyc++); //查表显示
 016E 82E0              ldi R24,2
 0170 869F              mul R24,R22
 0172 F001              movw R30,R0
 0174 80E0              ldi R24,<_Shifted
 0176 90E0              ldi R25,>_Shifted
 0178 E80F              add R30,R24
 017A F91F              adc R31,R25
 017C E491              lpm R30,Z
 017E E417              cp R30,R20
 0180 11F0              breq L45
 0182 6B33              cpi R22,59
 0184 98F3              brlo L41
 0186           L45:
 0186                   .dbline 144
 0186           ;                                                               if (Shifted[TempCyc][0] == ScanCode)
 0186 82E0              ldi R24,2
 0188 869F              mul R24,R22
 018A F001              movw R30,R0
 018C 80E0              ldi R24,<_Shifted
 018E 90E0              ldi R25,>_Shifted
 0190 E80F              add R30,R24
 0192 F91F              adc R31,R25
 0194 E491              lpm R30,Z
 0196 E417              cp R30,R20
 0198 11F5              brne L24
 019A                   .dbline 145
 019A           ;                                                                  uart_transmit(Shifted[TempCyc][1]);
 019A 82E0              ldi R24,2
 019C 869F              mul R24,R22
 019E F001              movw R30,R0
 01A0 80E0              ldi R24,<_Shifted+1
 01A2 90E0              ldi R25,>_Shifted+1
 01A4 E80F              add R30,R24
 01A6 F91F              adc R31,R25
 01A8 0491              lpm R16,Z
 01AA 38DF              xcall _uart_transmit
 01AC                   .dbline 146
 01AC           ;                                                       }
 01AC                   .dbline 148
 01AC           ; 
 01AC           ;                                       break;
 01AC                   .dbline 150
 01AC           ;                               }
 01AC           ;               }
 01AC 18C0              xjmp L24
 01AE           L23:
 01AE                   .dbline 152
 01AE           ;       else
 01AE           ;               {       
 01AE                   .dbline 153
 01AE           ;                       Key_UP = 0;
 01AE 2224              clr R2
 01B0 20920300          sts _Key_UP,R2
 01B4                   .dbline 154
 01B4           ;                       switch (ScanCode) //当键松开时不处理判码,如G 34H F0H 34H 那么第二个34H不会被处理
 01B4 5527              clr R21
 01B6 4231              cpi R20,18
 01B8 E0E0              ldi R30,0
 01BA 5E07              cpc R21,R30
 01BC 49F0              breq L54
 01BE 4231              cpi R20,18
 01C0 E0E0              ldi R30,0
 01C2 5E07              cpc R21,R30
 01C4 64F0              brlt L51
 01C6           L56:
 01C6 4935              cpi R20,89
 01C8 E0E0              ldi R30,0
 01CA 5E07              cpc R21,R30
 01CC 29F0              breq L55
 01CE 07C0              xjmp L51
 01D0           X1:
 01D0                   .dbline 155
 01D0           ;                               {
 01D0           L54:
 01D0                   .dbline 157
 01D0           ;                                       case 0x12 :     // 左 SHIFT
 01D0           ;                                               Shift = 0;
 01D0 2224              clr R2
 01D2 20920400          sts _Shift,R2
 01D6                   .dbline 158
 01D6           ;                                       break;
 01D6 03C0              xjmp L52
 01D8           L55:
 01D8                   .dbline 161
 01D8           ; 
 01D8           ;                                       case 0x59 :     // 右 SHIFT
 01D8           ;                                               Shift = 0;
 01D8 2224              clr R2
 01DA 20920400          sts _Shift,R2
 01DE                   .dbline 162
 01DE           ;                                       break;
 01DE           L51:
 01DE           L52:
 01DE                   .dbline 164
 01DE           ;                               }
 01DE           ;               }
 01DE           L24:
 01DE                   .dbline 165
 01DE           ;       BF = 0; //标识字符处理完了
 01DE 2224              clr R2
 01E0 20920500          sts _BF,R2
 01E4                   .dbline -2
 01E4           L22:
 01E4 0E940000          xcall pop_gset2
 01E8                   .dbline 0 ; func end
 01E8 0895              ret
 01EA                   .dbsym r TempCyc 22 c
 01EA                   .dbsym r ScanCode 20 c
 01EA                   .dbend
 01EA                   .dbfunc e main _main fV
 01EA           ;              i -> R20,R21
                        .even
 01EA           _main::
 01EA                   .dbline -1
 01EA                   .dbline 170
 01EA           ; } 
 01EA           ; 
 01EA           ; 
 01EA           ; void main(void)
 01EA           ; {
 01EA                   .dbline 172
 01EA           ;     unsigned int i;
 01EA           ;       CLI(); //disable all interrupts
 01EA F894              cli
 01EC                   .dbline 173
 01EC           ;       port_init();
 01EC 09DF              xcall _port_init
 01EE                   .dbline 174
 01EE           ;       UART_init();
 01EE 0DDF              xcall _UART_init
 01F0                   .dbline 175
 01F0           ;       MCUCR = 0x08;
 01F0 88E0              ldi R24,8
 01F2 85BF              out 0x35,R24
 01F4                   .dbline 176
 01F4           ;       GICR  = 0x80;
 01F4 80E8              ldi R24,128
 01F6 8BBF              out 0x3b,R24
 01F8                   .dbline 177
 01F8           ;       SEI();
 01F8 7894              sei
 01FA                   .dbline 178
 01FA           ;       for(i=0;i<60000;i++)//延时
 01FA 4427              clr R20
 01FC 5527              clr R21
 01FE 02C0              xjmp L61
 0200           L58:
 0200                   .dbline 179
 0200           L59:
 0200                   .dbline 178
 0200 4F5F              subi R20,255  ; offset = 1
 0202 5F4F              sbci R21,255
 0204           L61:
 0204                   .dbline 178
 0204 4036              cpi R20,96
 0206 EAEE              ldi R30,234
 0208 5E07              cpc R21,R30
 020A D0F3              brlo L58
 020C                   .dbline 180
 020C           ;       ;
 020C           ;       uart_transmit('\n');            
 020C 0AE0              ldi R16,10
 020E 06DF              xcall _uart_transmit
 0210                   .dbline 181
 0210           ;       uart_trans_str("     Welcome You!");
 0210 00E0              ldi R16,<L62
 0212 10E0              ldi R17,>L62
 0214 07DF              xcall _uart_trans_str
 0216                   .dbline 182
 0216           ;       uart_transmit('\n');            
 0216 0AE0              ldi R16,10
 0218 01DF              xcall _uart_transmit
 021A                   .dbline 183
 021A           ;       uart_trans_str("    You are the best!");        
 021A 00E0              ldi R16,<L63
 021C 10E0              ldi R17,>L63
 021E 02DF              xcall _uart_trans_str
 0220                   .dbline 184
 0220           ;       uart_transmit('\n');
 0220 0AE0              ldi R16,10
 0222 FCDE              xcall _uart_transmit
 0224                   .dbline 185
 0224           ;       uart_trans_str("   EndyLu AVR 2.0");
 0224 00E0              ldi R16,<L64
 0226 10E0              ldi R17,>L64
 0228 FDDE              xcall _uart_trans_str
 022A                   .dbline 186
 022A           ;       uart_transmit('\n');
 022A 0AE0              ldi R16,10
 022C F7DE              xcall _uart_transmit
 022E                   .dbline 187
 022E           ;       uart_trans_str(" PS2 Keyboard test program 1.0");       
 022E 00E0              ldi R16,<L65
 0230 10E0              ldi R17,>L65
 0232 F8DE              xcall _uart_trans_str
 0234                   .dbline 188
 0234           ;       uart_transmit('\n');
 0234 0AE0              ldi R16,10
 0236 F2DE              xcall _uart_transmit
 0238                   .dbline 189
 0238           ;       uart_trans_str("Please input with keyboard:");
 0238 00E0              ldi R16,<L66
 023A 10E0              ldi R17,>L66
 023C F3DE              xcall _uart_trans_str
 023E 0CC0              xjmp L68
 0240           L67:
 0240                   .dbline 191
 0240           ;       while(1)
 0240           ;       {
 0240                   .dbline 193
 0240           ;       
 0240           ;               if(flag ==1)
 0240 80910200          lds R24,_flag
 0244 8130              cpi R24,1
 0246 41F4              brne L70
 0248                   .dbline 194
 0248           ;               { 
 0248                   .dbline 196
 0248           ;                       //uart_transmit(keycode); //发送未解码信息,了解原理时可用
 0248           ;                   Decode(keycode);   //键盘解码
 0248 00910000          lds R16,_keycode
 024C 3CDF              xcall _Decode
 024E                   .dbline 198
 024E           ;                        
 024E           ;                       keycode = 0;
 024E 2224              clr R2
 0250 20920000          sts _keycode,R2
 0254                   .dbline 200
 0254           ;                       
 0254           ;                       flag = 0;
 0254 20920200          sts _flag,R2
 0258                   .dbline 201
 0258           ;           }
 0258           L70:
 0258                   .dbline 202
 0258           L68:
 0258                   .dbline 190
 0258 F3CF              xjmp L67
 025A           X4:
 025A                   .dbline -2
 025A           L57:
 025A                   .dbline 0 ; func end
 025A 0895              ret
 025C                   .dbsym r i 20 i
 025C                   .dbend
                        .area data(ram, con, rel)
 0006                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
 0006           L66:
 0006                   .blkb 28
                        .area idata
 0006 506C6561736520696E70757420776974  .byte 'P,'l,'e,'a,'s,'e,32,'i,'n,'p,'u,'t,32,'w,'i,'t
 0016 68206B6579626F6172643A00  .byte 'h,32,'k,'e,'y,'b,'o,'a,'r,'d,58,0
                        .area data(ram, con, rel)
 0022                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
 0022           L65:
 0022                   .blkb 31
                        .area idata
 0022 20505332204B6579626F617264207465  .byte 32,'P,'S,50,32,'K,'e,'y,'b,'o,'a,'r,'d,32,'t,'e
 0032 73742070726F6772616D20312E3000    .byte 's,'t,32,'p,'r,'o,'g,'r,'a,'m,32,49,46,48,0
                        .area data(ram, con, rel)
 0041                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
 0041           L64:
 0041                   .blkb 18
                        .area idata
 0041 202020456E64794C752041565220322E  .byte 32,32,32,'E,'n,'d,'y,'L,'u,32,'A,'V,'R,32,50,46
 0051 3000              .byte 48,0
                        .area data(ram, con, rel)
 0053                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
 0053           L63:
 0053                   .blkb 22
                        .area idata
 0053 20202020596F75206172652074686520  .byte 32,32,32,32,'Y,'o,'u,32,'a,'r,'e,32,'t,'h,'e,32
 0063 626573742100      .byte 'b,'e,'s,'t,33,0
                        .area data(ram, con, rel)
 0069                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c
 0069           L62:
 0069                   .blkb 18
                        .area idata
 0069 202020202057656C636F6D6520596F75  .byte 32,32,32,32,32,'W,'e,'l,'c,'o,'m,'e,32,'Y,'o,'u
 0079 2100              .byte 33,0
                        .area data(ram, con, rel)
 007B                   .dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\ps2\v1.2\PS2KB_UART\PS2KB_UART.c

⌨️ 快捷键说明

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