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

📄 key2.lst

📁 82K96E/82M99E开发的USB键盘接收端DEMO程序源码
💻 LST
📖 第 1 页 / 共 3 页
字号:
"File: KEY2.ASM      Holtek Cross-Assembler  Version 2.86      Page 9

 454  0153              ;Input : ACC = Instruction numbers
 455  0153              DelayNInst:
 456  0153  1785                        SDZ     ACC
 457  0154  2800     R                  JMP     DelayNInst
 458  0155  0003                        RET
 459  0156              
 460  0156              ;----BEGIN (Remove one keyboard index from keyboard buffer)
 461  0156              ;Remove one keyboard index ([IndexBuf]) from keyboard buffer
 462  0156              ;Output: Z = 1:Remove/0:None
 463  0156              RemoveKey:
 464  0156  0F00     R                  MOV     A,OFFSET KEY_Code1B
 465  0157  0081                        MOV     MP0,A
 466  0158              RemoveKeyLp:
 467  0158  0700     R                  MOV     A,IndexBuf
 468  0159  0400                        XOR     A,R0
 469  015A  3D0A                        SZ      Z
 470  015B  2800     R                  JMP     ExtRemove
 471  015C  1481                        INC     MP0
 472  015D  0F00     R                  MOV     A,OFFSET KEY_BUF_END       ;until buffer end (6)
 473  015E  0401                        XOR     A,MP0
 474  015F  390A                        SNZ     Z
 475  0160  2800     R                  JMP     RemoveKeyLp
 476  0161  350A                        CLR     Z
 477  0162  0003                        RET
 478  0163              ExtRemove:
 479  0163  1F00                        CLR     R0
 480  0164  0003                        RET
 481  0165              ;----END (Remove one keyboard index from keyboard buffer)
 482  0165              
 483  0165              ;----BEGIN (reorder all 0 value in keybaord buffer to buffer's tail)
 484  0165              ;reorder all 0 value in keybaord buffer to buffer's tail
 485  0165              SortKeyboardBuf:
 486  0165  0F00     R                  MOV     A,OFFSET KEY_CODE1B
 487  0166  0081                        MOV     MP0,A
 488  0167              SortKeyboardBufLp:
 489  0167  0700     R                  MOV     A,BUFF_Index
 490  0168  0401                        XOR     A,MP0
 491  0169  3D0A                        SZ      Z
 492  016A  2800     R                  JMP     ExtSortKey
 493  016B  0700                        MOV     A,R0
 494  016C  1481                        INC     MP0
 495  016D  1085                        SZ      ACC
 496  016E  2800     R                  JMP     SortKeyboardBufLp
 497  016F  0700                        MOV     A,R0
 498  0170  1581                        DEC     MP0
 499  0171  0080                        MOV     R0,A
 500  0172  1481                        INC     MP0
 501  0173  1F00                        CLR     R0
 502  0174  2800     R                  JMP     SortKeyboardBufLp
 503  0175              ExtSortKey:
 504  0175  1580     R                  DEC     BUFF_Index
 505  0176  0003                        RET
 506  0177              ;----END (reorder all 0 value in keybaord buffer to buffer's tail)
 507  0177              
 508  0177              
 509  0177              ;----------------------------------------------------------------------------
 510  0177              ;Input 	
 511  0177              ;ACC		: store the present scan out line
 512  0177              ;Output
 513  0177              ;Change I/O PB,PC,PD state
"File: KEY2.ASM      Holtek Cross-Assembler  Version 2.86      Page 10

 514  0177              ;variable used
 515  0177              ;temp1		: temporary variable
 516  0177               
 517  0177              GetScanPortAndBit:
 518  0177  0080     R  				mov			temp1,a
 519  0178              
 520  0178  1F95        				set			ScanOut1C
 521  0179  1F99        				set			ScanOut3C
 522  017A  0FF0        				mov			a,Scan2_Mask
 523  017B  0597        				orm			a,ScanOut2C
 524  017C              
 525  017C  0F15        				mov			a,scanout1C_adr			;1~8
 526  017D  3C00     R  				sz			temp1.3
 527  017E  0F19        				mov			a,scanout3C_adr			;9~16
 528  017F  3C00     R  				sz			temp1.4
 529  0180  0F17        				mov			a,scanout2C_adr			;17~20
 530  0181  0081        				mov			mp0,a
 531  0182  3400     R  				clr			temp1.4
 532  0183  1480     R  				inc			temp1
 533  0184  0F7F        				mov			a,01111111b
 534  0185              next_bit:
 535  0185  1885        				rl			acc
 536  0186  1780     R  				sdz			temp1
 537  0187  2800     R  				jmp			next_bit
 538  0188  0080     R  				mov			temp1,a
 539  0189  0701        				mov			a,mp0
 540  018A  0C17        				xor			a,scanout2C_adr
 541  018B  0700     R  				mov			a,temp1
 542  018C  390A        				snz			z
 543  018D  2800     R                  JMP     	SetLine
 544  018E              ScanOut2Line:
 545  018E  1180     R  				swap		temp1
 546  018F  0FF0                        MOV     	A,Scan2_Mask    	;Mask for ScanOut2
 547  0190  0680     R                  ANDM    	A,Temp1    			;
 548  0191  0716                        MOV     	A,LED_PORT   		;Get LED_PORT state
 549  0192  0E0F                        AND     	A,LED_Mask      	;
 550  0193  0500     R                  OR      	A,Temp1
 551  0194              SetLine:
 552  0194  0080                        MOV     	R0,A
 553  0195  1581                        dec     	MP0
 554  0196  0080                        MOV     	R0,A
 555  0197  0700     R  				mov			a,kb_led
 556  0198  2800     R  				jmp			setled	
 557  0199              
 558  0199              ;----------------------------------------------------------------------------
 559  0199              SETLED:
 560  0199  3805        				snz		acc.@num_bit
 561  019A  2800     R  				jmp		turn_off_num
 562  019B              turn_on_num:
 563  019B  3497        				clr		led_num_c
 564  019C  3496        				clr		led_num
 565  019D  2800     R  				jmp		examine_cap_state
 566  019E              turn_off_num:
 567  019E  3097        				set		led_num_c
 568  019F  3096        				set		led_num
 569  01A0              		
 570  01A0              
 571  01A0              examine_cap_state:	
 572  01A0  3885        				snz		acc.@cap_bit
 573  01A1  2800     R  				jmp		turn_off_cap
"File: KEY2.ASM      Holtek Cross-Assembler  Version 2.86      Page 11

 574  01A2              turn_on_cap:
 575  01A2  3517        				clr		led_cap_C
 576  01A3  3516        				clr		led_cap
 577  01A4  2800     R  				jmp		examine_scroll_state
 578  01A5              turn_off_cap:
 579  01A5  3117        				set		led_cap_C
 580  01A6  3116        				set		led_cap
 581  01A7              examine_scroll_state:	
 582  01A7  3905        				snz		acc.@scrl_bit
 583  01A8  2800     R  				jmp		turn_off_scroll
 584  01A9              turn_on_scroll:
 585  01A9  3597        				clr		led_scrl_c
 586  01AA  3596        				clr		led_scrl
 587  01AB  2800     R  				jmp		out_of_examine_led
 588  01AC              turn_off_scroll:
 589  01AC  3197        				set		led_scrl_c
 590  01AD  3196        				set		led_scrl
 591  01AE              out_of_examine_led:
 592  01AE  0003        				ret	
 593  01AF              ;------------------------------------------------------------------------------
 594  01AF              MoveKeyboardData:
 595  01AF  3C00     R  				sz		bPhantom
 596  01B0  2800     R  				jmp		out_kb_error_status
 597  01B1  1F04                        CLR     BP                  ;set to BP 0
 598  01B2  0F00     R                  MOV     A,OFFSET KEY_Mdfb    ;report buffer pointer
 599  01B3  0081                        MOV     MP0,A               ;
 600  01B4  0F00     E                  MOV     A,OFFSET FIFO_OUT1  ;FIFO_OUTx pointer
 601  01B5  0083                        MOV     MP1,A               ;
 602  01B6              GetInputSLp:
 603  01B6  0700                        MOV     A,R0                ;move report buffer
 604  01B7  0082                        MOV     R1,A                ; into FIFO_OUT
 605  01B8  1481                        INC     MP0                 ;Update source pointer
 606  01B9  1483                        INC     MP1                 ;Update target pointer
 607  01BA  1480     E                  INC     FIFO_SendLen	    ;Update FIFO data length
 608  01BB  0F00     R                  MOV     A,OFFSET KEY_Mdfb + REPORT_KB_SIZE   ;end buffer address
 609  01BC  0401                        XOR     A,MP0               ;End buffer ?
 610  01BD  390A                        SNZ     Z                   ;
 611  01BE  2800     R                  JMP     GetInputSLp         ;No
 612  01BF              
 613  01BF              				
 614  01BF              
 615  01BF              out_of_MOVEKEYBOARDDATA:
 616  01BF  0F01                        MOV     A,USB_REG_BANK      ;Yes: Reset to USB register bank
 617  01C0  0084                        MOV     BP,A 
 618  01C1  0003        				ret
 619  01C2              
 620  01C2              ;------------------------------------------------------------------------------
 621  01C2              out_kb_error_status:
 622  01C2  0F01        				mov		a,01
 623  01C3  0080     E  				mov		fifo_out1,a
 624  01C4  0080     E  				mov		fifo_out2,a
 625  01C5  0080     E  				mov		fifo_out3,a
 626  01C6  0080     E  				mov		fifo_out4,a
 627  01C7  0080     E  				mov		fifo_out5,a
 628  01C8  0080     E  				mov		fifo_out6,a
 629  01C9  0080     E  				mov		fifo_out7,a
 630  01CA  0080     E  				mov		fifo_out8,a
 631  01CB  2800     R  				jmp		out_of_MOVEKEYBOARDDATA
 632  01CC              ;------------------------------------------------------------------------------
 633  01CC              kb_io_config:
"File: KEY2.ASM      Holtek Cross-Assembler  Version 2.86      Page 12

 634  01CC  1F94        			set			ScanOut1
 635  01CD  1F95        			set			ScanOut1c
 636  01CE  0FF0        			mov			a,Scan2_Mask
 637  01CF  0596        			orm			a,scanout2
 638  01D0  0597        			orm			a,scanout2c
 639  01D1  1F98        			set			scanout3
 640  01D2  1F99        			set			scanout3c
 641  01D3  0FFE        			mov			a,11111110b
 642  01D4  0697        			andm		a,led_port_c
 643  01D5  0696        			andm		a,led_port
 644  01D6  0003        			ret
 645  01D7              ;----------------------------------------------------------------------------
 646  01D7              KB_INITIAL:
 647  01D7  0F00     R  				MOV     A,OFFSET STATE_BUF_BEG
 648  01D8  0081                    	MOV     MP0,A
 649  01D9              InitRAMLp_KB:
 650  01D9  1F80                    	SET     R0
 651  01DA  1481                    	INC     MP0
 652  01DB  0F00     R              	MOV     A,OFFSET STATE_BUF_END 
 653  01DC  0401                    	XOR     A,MP0
 654  01DD  390A                    	SNZ     Z
 655  01DE  2800     R              	JMP     InitRAMLp_KB
 656  01DF  0F00     R            	MOV     A,OFFSET KEY_Code1B ;Reset keyboard buffer pointer to
 657  01E0  0080     R             	MOV     BUFF_Index,A  		;   1st KeyCode
 658  01E1              
 659  01E1              
 660  01E1  1F00     R  			clr			ScanLineNo
 661  01E2  0003                    ret
 662  01E3              ;----------------------------------------------------------------------------
 663  01E3              kb_suspend:
 664  01E3  0F00        				mov		a,00000000b
 665  01E4  0095                        mov     ScanOut1C,a     ;Set all scan row 0 lines to output mode                
 666  01E5  0094        				mov		Scanout1,a
 667  01E6              
 668  01E6  0F0E        				mov		a,00001110b
 669  01E7  0097                        MOV     ScanOut2C,A   ;Set all scan row 2 lines to output mode
 670  01E8  0096                        MOV     ScanOut2,A    ;Set all scan row 2 lines to low
 671  01E9              
 672  01E9  0F00        				mov		a,00000000b
 673  01EA  0099                        mov     ScanOut3C,a     ;Set all scan row 0 lines to output mode                
 674  01EB  0098        				mov		Scanout3,a
 675  01EC  0003        				ret	
 676  01ED              ;----------------------------------------------------------------------------
 677  01ED              
 678  01ED              
 679  01ED              
 680  01ED              
 681  01ED              PUBLIC			examine_kb_state
 682  01ED              public			setled
 683  01ED              public			MoveKeyboardData
 684  01ED              public			get_kb_matrix_end_pcl
 685  01ED              public			get_kb_matrix_start_pcl
 686  01ED              public			kb_suspend
 687  01ED              public			KB_INITIAL
 688  01ED              public			kb_io_config
 689  01ED              
 690  01ED              END


        0 Errors

⌨️ 快捷键说明

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