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

📄 main.lst

📁 HT82J97滑鼠DEMO程序
💻 LST
字号:
"File: MAIN.ASM      Holtek Cross-Assembler  Version 2.86      Page 1


   1  0000              include		body.inc




   2  0000              include		usbrf1.inc


   3  0000              include		usbFIFO.inc


   4  0000              
   5  0000              extern		ext_start		:near		;usb_int.asm
   6  0000              extern		Ram_init		:near		;usb_proc.asm
   7  0000              extern		Timer1_ISR		:near		;readwrite.asm
   8  0000              extern		VAR_init		:near
   9  0000              extern		User_Action		:near
  10  0000              
  11  0000              extern		ISR_USB_ACC		:byte		;usb_int.asm
  12  0000              extern		baddr_state		:bit		;variable.asm
  13  0000              extern		bCfgValue		:bit
  14  0000              extern		bwdt_timeout	:bit
  15  0000              extern		bwait_setup		:bit
  16  0000              extern		bRmtWakeup		:bit
  17  0000              extern		STALL			:byte
  18  0000              extern		temp1			:byte
  19  0000              extern		temp2			:byte
  20  0000              PIPE_CTRL	EQU		[041H]
  21  0000              main		.section at 0 	'code'
  22  0000              			org             0
  23  0000              			;check to flag, if z=0, wdt overflow
  24  0000  070A        			mov				a,status
  25  0001  0E30        			and				a,00110000b
  26  0002  0C30        			xor             a,00110000b
  27  0003  280E        			jmp             main_start
  28  0004              
  29  0004              ;---------------------------------------------------------------------------------------------
  30  0004              			org				04h						;usb interrut subroutine
  31  0004  0001        			clr				wdt	
  32  0005  0080     E  			MOV     		ISR_USB_ACC,A          	;Save ACC
  33  0006  070A        			MOV     		A,STATUS               	;Save STATUS
  34  0007  2800     E  			jmp				EXT_start				;usb_int.asm
  35  0008              
  36  0008              ;----------------------------------------------------------------------------------------------
  37  0008                          org             8h						;steal the int1 subroutine space for another procedure
  38  0008              ;wait_27intr
  39  0008              wait_28us:
  40  0008  0F08        			mov				a,8	
  41  0009              wait_28us_cont:
  42  0009  1785        			sdz				acc
  43  000A  2809        			jmp				wait_28us_cont
  44  000B              ;wait_4instr
  45  000B              wait_4us:
  46  000B  0003        			ret
  47  000C              
  48  000C              ;----------------------------------------------------------------------------------------------
  49  000C              			org				0ch						;timer1 interrupt subroutine for UART polling
  50  000C              			;*******************************
  51  000C              			; timer 1 interrupt vector
"File: MAIN.ASM      Holtek Cross-Assembler  Version 2.86      Page 2

  52  000C              			;*******************************
  53  000C  2800     E  			jmp             Timer1_ISR
  54  000D  0004        			reti
  55  000E              
  56  000E              
  57  000E              ;-----------------------------------------------------------------------------------
  58  000E              ;-----------------------------------------------------------------------------------
  59  000E              ;           main program here
  60  000E              ;-----------------------------------------------------------------------------------
  61  000E              ;-----------------------------------------------------------------------------------
  62  000E              main_start:
  63  000E  390A                    snz             z
  64  000F  2816        			jmp             main_start_cont
  65  0010              ;----------------------------------------------------------------------------------------------
  66  0010              watchdog_timout:
  67  0010  0001        			clr				wdt
  68  0011  361B        			clr				sel_ps2_line			; usr.4, not working under ps2 mode
  69  0012  369B        			clr     		sel_usb_line			; usr.5, not working under usb mode
  70  0013  351A        			clr				chk_usb_reset_event		; usc.2, USB bus reset event flag
  71  0014  3000     E  			set				bwdt_timeout
  72  0015  204C        			call			wait_about_1s
  73  0016              
  74  0016              ;----------------------------------------------------------------------------------------------
  75  0016              main_start_cont:
  76  0016  0001        			clr				wdt
  77  0017  0F87        			mov				a,10000111b
  78  0018  0089        			mov				WDTS,a
  79  0019              
  80  0019  2000     E  			call			Ram_init				; rf_proc.asm
  81  001A              			
  82  001A              			;********************************
  83  001A              			; initial your own variables here
  84  001A              			;********************************
  85  001A  2000     E   			call			VAR_init
  86  001B              ;-------------------------------------------------------------------------------------------
  87  001B              			;********************************
  88  001B              			;Timer1 overflow per 4ms 
  89  001B              			;********************************
  90  001B  0F80                    mov             a,10000000b
  91  001C  0091                    mov             tmr1c,a
  92  001D              
  93  001D  0F90        			mov				a,090h
  94  001E  0090        			mov				tmr1L,a
  95  001F              
  96  001F  0FE8        			mov				a,0E8h
  97  0020  008F        			mov				tmr1H,a					;about 4ms for 6MHz
  98  0021              						
  99  0021              			;********************************
 100  0021              			; set for 6m, clr for 12mz
 101  0021              			;********************************
 102  0021  331C        			set				SCC.6					; for 6MHz
 103  0022              ;---------------------------------------------------------------------------------
 104  0022  3000     E  			set				baddr_state				; USB in address state
 105  0023  3000     E  			set				bwait_setup
 106  0024  1F80     E  			set				STALL
 107  0025              
 108  0025  0F01        			mov				a,1
 109  0026  0084        			mov				bp,a
 110  0027  0F41        			mov				a, 41H
 111  0028  0083        			mov				mp1,a
"File: MAIN.ASM      Holtek Cross-Assembler  Version 2.86      Page 3

 112  0029  3502        			clr				r1.2
 113  002A  3541        			CLR				PIPE_CTRL.2	
 114  002B  1F04        			clr				bp		
 115  002C              
 116  002C  319C        			set				on_usb_clk				; enable usb clock		
 117  002D  361B        			clr				sel_ps2_line	
 118  002E  329B        			set				sel_usb_line			; set usb mode
 119  002F              
 120  002F  0F0B        			mov				a,00001011b				; enable usb, timer1 interrupt
 121  0030  008B        			mov				intc,a
 122  0031              ;------------------------------------------------------------------------------------------------
 123  0031              mainloop:
 124  0031  0001        			clr				wdt
 125  0032  3C1A        			sz				suspend_line			; USC.0=1, USB enter suspend mode
 126  0033  2837        			jmp				Tosuspend
 127  0034              
 128  0034              			;********************************
 129  0034              			; Start to do your action when usb is ready
 130  0034              			;********************************
 131  0034  3C00     E  			sz				bcfgvalue				; usb plug in, (set configuration complete)
 132  0035  2000     E  			call			User_Action			
 133  0036              
 134  0036  2831                    JMP     		MainLoop                ; No
 135  0037              
 136  0037              ;-----------------------------------------------------------------------------------
 137  0037              ToSuspend:
 138  0037  3611        			clr				timer1_on
 139  0038  3400     E  			clr				bwdt_timeout
 140  0039  204C        			call			wait_about_1s
 141  003A              				
 142  003A              ;------------------------------------------------------------------------------------------
 143  003A              ToSuspend_again:   
 144  003A  381A        			snz				suspend_line				;about 850
 145  003B  284A        			jmp				exit_of_suspend
 146  003C              
 147  003C  3D9A        			sz				resume_line                ;;; 2008/06/12
 148  003D  284A        			jmp				exit_of_suspend	
 149  003E              
 150  003E              
 151  003E  359C        			clr				on_usb_clk	
 152  003F  0002        			halt
 153  0040              ;------------------------------------------------------------------------------------------
 154  0040              RemoteWakeup:
 155  0040  319C        			set				on_usb_clk	
 156  0041              			;remote wakeup
 157  0041                      	;wakeup by system, suspend_line=0, resume_line=1;
 158  0041                      	;wakeup by device, suspend_line=1(remote wakeup), resume_line=0;
 159  0041              			;out wakeup pulse
 160  0041              			
 161  0041              	        ;if(suspend_line && !resume_line)
 162  0041  381A        			snz				suspend_line
 163  0042  284A        			jmp				exit_of_suspend
 164  0043  3D9A        			sz				resume_line
 165  0044  284A        			jmp				exit_of_suspend	
 166  0045              
 167  0045  3800     E  			snz				bRmtWakeup
 168  0046  283A        			jmp				ToSuspend_again
 169  0047              			
 170  0047              			;wakeup pulse
 171  0047  309A        			set				wakeup_line
"File: MAIN.ASM      Holtek Cross-Assembler  Version 2.86      Page 4

 172  0048  200B        			call			wait_4us
 173  0049  349A        			clr				wakeup_line
 174  004A              			
 175  004A              exit_of_suspend:
 176  004A  3211        			set				timer1_on
 177  004B  2831        			jmp				mainloop
 178  004C              
 179  004C              ;----------------------------------------------------------------------------------------------
 180  004C              ; wait 1 s 
 181  004C              ; 1. delay 1 sec before entering suspend mode.
 182  004C              ; if not do so, system will not function properly
 183  004C              ; 2. when wdt overflow, wait 1 s to simulate a replug action
 184  004C              wait_about_1s:
 185  004C              ;about wait_3s for 6MHz crystal
 186  004C  0F04        			mov				a,4					
 187  004D  0080     E  			mov				temp2,a
 188  004E  1F80     E  			set				temp1
 189  004F  1F85        			set				acc
 190  0050              wait_3s:
 191  0050  0001                    clr				wdt
 192  0051  3C00     E  			sz				bwdt_timeout				;for watchdog time-out
 193  0052  2855        			jmp				$+3
 194  0053  381A        			snz				suspend_line				;about 1ms
 195  0054  0003        			ret	
 196  0055  1785        			sdz				acc
 197  0056  2850        			jmp				wait_3s
 198  0057  1780     E  			sdz				temp1
 199  0058  2850        			jmp				wait_3s						;260ms
 200  0059  1780     E  			sdz				temp2
 201  005A  2850        			jmp				wait_3s
 202  005B  0003        			ret
 203  005C              ;---------------------------------------------------------------------------------------------				
 204  005C              public		wait_28us
 205  005C              public		wait_4us
 206  005C              public		wait_28us_cont
 207  005C              end


        0 Errors

⌨️ 快捷键说明

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