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

📄 key05r2.lst

📁 使用68HC705J1A写的一个键盘的代码,包括资料说明,一份难得的资料,本人开发键盘时好不容易才找到的资料
💻 LST
📖 第 1 页 / 共 4 页
字号:
 03F8 A4C0       264          and     #$C0    ;Either Alt Key Pressed?
 03FA 2712       265          beq     extend4
 03FC B6C1       266          lda     status
 03FE A430       267          and     #$30    ;Either Ctrl Key Pressed?
 0400 270C       268          beq     extend4
 0402 1A04       269          bset    nreset,DDRA
 0404 A6FF       270          lda     #$FF
 0406 CD05C4     271          jsr     delay
 0409 1B04       272          bclr    nreset,DDRA
 040B CC0315     273          jmp     reset
                 274  
 040E A15A       275  extend4 cmp     #$5A    ;Enter Key on Num Keypad
 0410 2607       276          bne     extend5
 0412 A60D       277          lda     #$0D
 0414 B7C0       278          sta     byte
 0416 CD0593     279          jsr     RS232T
                 280  
 0419 A14A       281  extend5 cmp     #$4A    ; '/' Key on Num Keypad
 041B 2607       282          bne     extend6
 041D A62F       283          lda     #'/'
 041F B7C0       284          sta     byte
 0421 CD0593     285          jsr     RS232T
                 286  
 0424 CC0320     287  extend6 jmp     main    ;Return to main
                 288  
                 289  *****************************************************
                 290  *                                                   *


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 6



                 291  * release - A Key has been Released                 *
                 292  *                                                   *
                 293  *****************************************************
                 294  
 0427 CD04DE     295  release jsr     Receive ;Release - Next Byte Garbage in many cases
 042A B6C0       296          lda     byte
                 297  
 042C A112       298  releas3 cmp     #$12    ;Left Shift Key Released
 042E 2602       299          bne     releas4
 0430 11C1       300          bclr    lshift,status
                 301  
 0432 A159       302  releas4 cmp     #$59    ;Right Shift Key Released
 0434 2602       303          bne     releas5
 0436 13C1       304          bclr    rshift,status
                 305  
 0438 A114       306  releas5 cmp     #$14    ;Left Ctrl Released
 043A 2605       307          bne     releas6
 043C 1DC1       308          bclr    lctrl,status
 043E CC0574     309          jmp     ctrl_re
                 310  
 0441 A111       311  releas6 cmp     #$11    ;Left Alt Released
 0443 2605       312          bne     releas7
 0445 19C1       313          bclr    lalt,status
 0447 CC0556     314          jmp     alt_rel
                 315  
 044A A158       316  releas7 cmp     #$58     ;Caps Lock Released
 044C 2602       317          bne     releas8
 044E 15C1       318          bclr    caploc,status
                 319  
 0450 A17E       320  releas8 cmp     #$7E     ;Scroll Lock Released
 0452 2602       321          bne     releas9
 0454 19C1       322          bclr    pscrlck,status
                 323  
 0456 A177       324  releas9 cmp     #$77     ;Num Lock Released
 0458 2602       325          bne     relea10
 045A 17C1       326          bclr    pnumlck,status
                 327  
 045C CC0320     328  relea10 jmp     main     ;Return to Main
                 329  
                 330  *****************************************************
                 331  *                                                   *
                 332  * rel_ext - An Extended Key has been Released       *
                 333  *                                                   *
                 334  *****************************************************
                 335  
 045F CD04DE     336  rel_ext jsr     Receive  ;Get Next byte
 0462 B6C0       337          lda     byte
                 338  
 0464 A111       339          cmp     #$11    ;Right Alt Released
 0466 2605       340          bne     rel_ex2
 0468 1BC1       341          bclr    ralt,status
 046A CC0556     342          jmp     alt_rel
                 343  
 046D A114       344  rel_ex2 cmp     #$14    ;Right Ctrl Released
 046F 2605       345          bne     rel_ex3
 0471 1FC1       346          bclr    rctrl,status
 0473 CC0574     347          jmp     ctrl_re
                 348  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 7



 0476 CC0320     349  rel_ex3 jmp     main    ;Return to main
                 350  
                 351  *****************************************************
                 352  *                                                   *
                 353  * LEDshow - Copies the 3 LSB of the LED register to *
                 354  *           keyboard for the keyboards Status LED's *
                 355  *           E.g. Num Lock, Caps Lock, Scroll Lock   *
                 356  *           Also makes their status present on      *
                 357  *           PORTB                                   *
                 358  *                                                   *
                 359  *****************************************************
                 360  
 0479 B6C2       361  LEDshow lda     LED
 047B AA20       362          ora     #$20    ;Set TXD High
 047D A427       363          and     #$27
 047F B701       364          sta     PORTB   ;Made Status Avalible at PORTB
 0481 A6ED       365          lda     #$ED
 0483 B7C0       366          sta     byte
 0485 CD0497     367          jsr     transmit
 0488 CD04DE     368          jsr     Receive
 048B B6C2       369          lda     LED
 048D A407       370          and     #$07
 048F B7C0       371          sta     byte
 0491 CD0497     372          jsr     transmit
 0494 CC0320     373          jmp     main
                 374  
                 375  *****************************************************
                 376  *                                                   *
                 377  * Transmit - Send Data stored at Byte to the        *
                 378  *            Keyboard. Result                       *
                 379  *                                                   *
                 380  *****************************************************
                 381  
                 382  transmit
 0497 AE08       383          ldx     #$08                    ;8 Data Bits
 0499 1C04       384          bset    clk,DDRA                ;Set Clock Low
 049B A613       385          lda     #$13                    ;Delay 64uS
 049D CD05C4     386          jsr     delay
 04A0 4F         387          clra                            ;Clear Parity Register
 04A1 1E04       388          bset    data,DDRA               ;Set Data Low
 04A3 1D04       389          bclr    clk,DDRA                ;Release Clock Line
 04A5 CD051E     390          jsr     highlow
                 391  
 04A8 36C0       392  loop    ror     byte
 04AA 2505       393          bcs     mark
                 394  
 04AC 1E04       395  space   bset    data,DDRA               ;Clear Bit
 04AE CC04B4     396          jmp     next
                 397  
 04B1 1F04       398  mark    bclr    data,DDRA               ;Clear Bit
 04B3 4C         399          inca                            ;Parity Calculation
                 400  
 04B4 CD051E     401  next    jsr     highlow                 ;Wait for high to low transition
                 402  
 04B7 5A         403          decx
 04B8 26EE       404          bne     loop
                 405  
 04BA A401       406          and     #$01


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 8



 04BC 2605       407          bne     clr_par
 04BE 1F04       408  set_par bclr    data,DDRA
 04C0 CC04C5     409          jmp     tr_ackn
 04C3 1E04       410  clr_par bset    data,DDRA
 04C5 CD051E     411  tr_ackn jsr     highlow
                 412  
 04C8 1F04       413          bclr    data,DDRA               ;Release Data Line
 04CA CD051E     414          jsr     highlow
 04CD 0E0006     415          brset   data,PORTA,error        ;Check for Ack
 04D0 0D00FD     416          brclr   clk,PORTA,*             ;Wait for idle line
                 417  
 04D3 1C04       418          bset    clk,DDRA                ;Prevent Keyboard from sending data
                 419                                          ;(Clear to Send)
 04D5 81         420          rts
                 421  
 04D6 A6FF       422  error   lda     #$FF      ;Reset
 04D8 B7C0       423          sta     byte
 04DA CD0497     424          jsr     transmit
 04DD 81         425          rts
                 426  
                 427  *****************************************************
                 428  *                                                   *
                 429  * Receive - Get a Byte from the Keyboard. Result    *
                 430  *           stored in byte.                         *
                 431  *                                                   *
                 432  *****************************************************
                 433  
 04DE AE08       434  Receive ldx     #08                     ;Number of Bits
 04E0 3FC6       435          clr     PAR                     ;Clear Parity Register
 04E2 1D04       436          bclr    clk,DDRA                ;Clear to Send
                 437  
 04E4 0C00FD     438          brset   clk,PORTA,*             ;wait for idle Clock
 04E7 0E00F4     439          brset   data,PORTA,Receive      ;False Start Bit, Restart
                 440  
 04EA 36C0       441  Recdata ror     byte
 04EC CD051E     442          jsr     highlow                 ;Wait for high to low Transision
 04EF 0E0005     443          brset   data,PORTA,Recset
                 444  
 04F2 1FC0       445          bclr    7,byte
 04F4 CC04FB     446          jmp     Recnext
                 447  
 04F7 1EC0       448  Recset  bset    7,byte
 04F9 3CC6       449          inc     PAR
                 450  
 04FB 5A         451  Recnext decx
 04FC 26EC       452          bne     Recdata                 ;Loop until 8 bits been received
                 453  
 04FE CD051E     454          jsr     highlow
                 455  
 0501 B600       456          lda     PORTA                   ;Read Parity Bit
 0503 49         457          rola                            ;Place in LSbit
 0504 49         458          rola
 0505 B8C6       459          eor     PAR                     ;Parity Bit Detection
 0507 A401       460          and     #$01
 0509 2709       461          beq     r_error
                 462  
 050B CD051E     463          jsr     highlow
 050E 0F0003     464          brclr   data,PORTA,r_error      ;Stop Bit Detection


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 9



                 465  
 0511 1C04       466          bset    clk,DDRA                ;Prevent Keyboard from sending data
                 467                                          ;(Clear to Send)
 0513 81         468          rts
                 469  
 0514 A6FE       470  r_error lda     #$FE                    ;Resend
 0516 B7C0       471          sta     byte
 0518 CD0497     472          jsr     Transmit
 051B CC04DE     473          jmp     Receive                 ;Try again
                 474  
                 475  *****************************************************
                 476  *                                                   *
                 477  * highlow - Waits for next High to Low Transistion  *
                 478  *           on the Clock Line                       *
                 479  *                                                   *
                 480  *****************************************************
                 481  
                 482  
 051E 0D00FD     483  highlow brclr   clk,PORTA,*         ;Loop until Clk High
 0521 0C00FD     484          brset   clk,PORTA,*         ;Loop until Clk Low
 0524 81         485          rts
                 486  
                 487  *****************************************************
                 488  *                                                   *
                 489  * ctrlhex & althex - Make sure keys pressed are     *
                 490  * valid. If not, don't store them. Also converts    *
                 491  * ASCII to binary and stores them in the ASCII      *
                 492  * Storage Location                                  *
                 493  *                                                   *
                 494  *****************************************************
                 495  
 0525 A161       496  ctrlhex cmp     #'a'            ;Convert 'a' - 'f' to binary
 0527 2509       497          blo     he1_ran
 0529 A166       498          cmp     #'f'
 052B 2226       499          bhi     outrang
 052D A057       500          sub     #$57
 052F CC0549     501          jmp     store
                 502  
 0532 A141       503  he1_ran cmp     #'A'            ;Convert 'A' - 'F' to binary
 0534 2509       504          blo     altdec
 0536 A146       505          cmp     #'F'
 0538 2219       506          bhi     outrang
 053A A037       507          sub     #$37
 053C CC0549     508          jmp     store
                 509  
 053F A130       510  altdec  cmp     #'0'            ;Convert '0' - '9' to binary
 0541 2510       511          blo     outrang
 0543 A139       512          cmp     #'9'
 0545 220C       513          bhi     outrang
 0547 A030       514          sub     #$30
                 515  
 0549 BEC4       516  store   ldx     asc+1           ;Shift Bytes Left
 054B BFC3       517          stx     asc+0
 054D BEC5       518          ldx     asc+2
 054F BFC4       519          stx     asc+1
 0551 B7C5       520          sta     asc+2           ;Store as Binary
 0553 CC0320     521  outrang jmp     main
                 522  


KEY05R2.ASM            Assembled with CASM   05/06/1998  18:19  PAGE 10



                 523  *****************************************************
                 524  *                                                   *
                 525  * alt_rel Alt Released. (Decimal Enter Routine)     *

⌨️ 快捷键说明

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