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

📄 main.lst

📁 减少单片机IO资源占用,采用AD口加电阻网点方式扩展按键.含汇编代码.
💻 LST
📖 第 1 页 / 共 5 页
字号:
   602 0000F03D A9 01       <       		lda		#1
   603 0000F03F 85 62       <       		sta		IB_KeyupFlag			;Key not up 
   604 0000F041 4C 56 F0    <       		jmp		?L_CmpClr
   605                      <       		
   606 0000F044             <       ?L_JudgeUp:
   607 0000F044 A5 2B       <       		lda		P_AD_DataHi			
   608 0000F046 C9 04       <       		cmp		#$4						;Key up?
   609 0000F048 B0 0C       <       		bcs		?L_CmpClr				;No
   610 0000F04A E6 64       <       		inc		IB_CmpTimers			;\
   611 0000F04C A5 64       <       		lda		IB_CmpTimers			;+ = Compare 4 times untile all Keys up
   612 0000F04E C9 04       <       		cmp		#CB_CmpTimers			;+ 
   613 0000F050 90 08       <       		bcc		?L_ADKeyx16Exit			;/
   614 0000F052 A9 00       <       		lda		#0							
   615 0000F054 85 62       <       		sta		IB_KeyupFlag			;Keys up
   616 0000F056             <       ?L_CmpClr:
   617 0000F056 A9 00       <       		lda		#0
   618 0000F058 85 64       <       		sta		IB_CmpTimers		
   619 0000F05A             <       ?L_ADKeyx16Exit:		
   620 0000F05A 60          <       		rts     
   621                      <       		       
   622                      <       ;==================================================================================
   623                      <       ;	Function:		F_Light
   624                      <       ;	Description:	light LEDs to reflect the Keys value
   625                      <       ;	Input:			GB_KeyValue------Keys value
   626                      <       ;	Output:			none
   627                      <       ;	Destroy:		A
   628                      <       ;	Stacks:			1
   629                      <       ;==================================================================================
   630                      <       .PUBLIC			F_Light
   631 0000F05B             <       F_Light:
   632 0000F05B A5 60       <       		lda		GB_KeyValue
   633 0000F05D 85 02       <       		sta		P_IOC_Data		
   634 0000F05F 60          <       		rts            
   635                      <       ;==================================================================================
   636                      <       ;	Function:		F_AD_KeyInit
   637                      <       ;	Description:	initialize PC as output "0", set ADC
   638                      <       ;	Input:			none
   639                      <       ;	Output:			none
   640                      <       ;	Destroy:		A
   641                      <       ;	Stacks:			1
   642                      <       ;==================================================================================
   643 0000F060             <       F_AD_KeyInit:
   644 0000F060 A9 00       <       		lda		#0
   645 0000F062 85 0A       <       		sta		P_IOC_Attrib
   646 0000F064 85 02       <       		sta		P_IOC_Data
   647 0000F066 A9 FF       <       		lda		#$FF
   648 0000F068 85 06       <       		sta		P_IOC_Dir
   649                      <       
   650 0000F06A A9 80       <       		lda     #(C_AD_CE+C_AD_Ch0)    	;Select channel 0 (AN0) 
   651 0000F06C 85 2A       <               sta     P_AD_Ctrl2				
   652                      <       
   653 0000F06E A9 88       <               lda     #(C_AD_EN+C_AD_CS_32)   ;Fcpu/32
   654 0000F070 09 01       <               ora		#00000001B			
   655 0000F072 85 28       <               sta     P_AD_Ctrl0				
   656                      <               
   657 0000F074 A9 01       <               lda     #C_AD_Pin0 				;Analog input : channel 0 
   658 0000F076 85 29       <               sta     P_AD_Ctrl1			
   659                      <       
   660 0000F078 60          <               rts            
   661                      <       
   662                      <       ;==================================================================================
   663                      <       ;	Function:		F_Variable_Init
   664                      <       ;	Description:	Initialize variables
   665                      <       ;	Input:			none
   666                      <       ;	Output:			none
   667                      <       ;	Destroy:		A
   668                      <       ;	Stacks:			1
   669                      <       ;==================================================================================
   670 0000F079             <       F_Variable_Init:
   671 0000F079 A9 00       <               lda		#0
   672 0000F07B 85 61       <               sta		GB_KeyDownFlag				;Keys are not down in initial state 
   673 0000F07D 85 64       <               sta		IB_CmpTimers				;The times of compare is 0 in initial state
   674 0000F07F 85 62       <               sta		IB_KeyupFlag				;Keys are all up in initial state
   675 0000F081 85 60       <       		sta		GB_KeyValue					;Key value
   676 0000F083 60          <       		rts 
   677                      <       
   678                      <       
   679                              ;**********************************************************************************
   680                              ;*																				  *
   681                              ;*		Power on Reset Process													  *
   682                              ;*																				  *
   683                              ;**********************************************************************************
   684 0000F084                     V_Reset:
   685 0000F084 78                  		sei								;Disable interrupt
   686 0000F085 A2 FF               		ldx		#C_STACK_BOTTOM			;Initial stack pointer at $00FF
   687 0000F087 9A                  		txs								;Transfer to stack point
   688                              
   689 0000F088 20 79 F0                    jsr		F_Variable_Init			;Initialize variables
   690 0000F08B 20 60 F0                    jsr		F_AD_KeyInit     		;Initialize ADC function
   691                              
   692                              ;------------------------------------------------------
   693                              ;1.024ms loop
   694                              ;------------------------------------------------------
   695 0000F08E A9 70               		lda		#C_TBASE_Div_8k			;1.024ms
   696 0000F090 85 2D               		sta     P_BUZ_Ctrl
   697                              
   698 0000F092                     ?L_Main_Loop:					
   699 0000F092 A2 00               		ldx		#0
   700 0000F094                     ?L_Loop:		
   701 0000F094 A5 26               		lda 	P_INT_Flag2
   702 0000F096 29 20               		and 	#C_INT_ITVALIF			;Check Timer base INT?
   703 0000F098 F0 FA               		beq 	?L_Loop 				;No
   704 0000F09A A9 20               		lda 	#C_INT_ITVALIF
   705 0000F09C 85 26               		sta 	P_INT_Flag2 			;Clear INT request flag
   706 0000F09E E8                  		inx
   707 0000F09F E0 08               		cpx		#8						;8 ms coming?
   708 0000F0A1 90 F1               		bcc		?L_Loop					;no
   709                              
   710 0000F0A3 20 00 F0               		jsr		F_ADKeyx16				;Scanning 16 keys
   711                              		
   712 0000F0A6 A5 61               		lda		GB_KeyDownFlag			;Key down?
   713 0000F0A8 F0 07               		beq		?L_LoopExit				;No
   714 0000F0AA A9 00               		lda		#0
   715 0000F0AC 85 61               		sta		GB_KeyDownFlag			;Clear key down flag
   716                              		
   717 0000F0AE 20 5B F0            		jsr		F_Light					;Show the key value
   718                              		
   719 0000F0B1                     ?L_LoopExit:	
   720 0000F0B1 4C 92 F0            		jmp		?L_Main_Loop
   721                              		
   722                              ;**********************************************************************************
   723                              ;*																				  *
   724                              ;*      Interrupt service process                         	                      *
   725                              ;*																				  *
   726                              ;**********************************************************************************
   727 0000F0B4                     V_IRQ:      
   728 0000F0B4 40                  		rti           
   729                              		
   730 0000F0B5                     V_NMI:
   731 0000F0B5 40                  		rti
   732                              		
   733 0000FFFA                     VECTOR:			.SECTION 		
   734                              ;**********************************************************************************
   735                              ;*																				  *
   736                              ;*      Interrupt Vector Table													  *
   737                              ;*																				  *
   738                              ;**********************************************************************************
   739 0000FFFA B5 F0               		DW		V_NMI					;Non-mask interrupt vector(no use)
   740 0000FFFC 84 F0               		DW		V_Reset					;Reset vector
   741 0000FFFE B4 F0               		DW		V_IRQ					;IRQ interrupt vector
   742                              ;**********************************************************************************
   743                              ;*																				  *
   744                              ;*      End of Interrupt Vector Table											  *
   745                              ;*												  								  *
   746                              ;**********************************************************************************
   747                              .END
0 error(s), 0 warning(s).

⌨️ 快捷键说明

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