📄 main.lst
字号:
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 1
1 0000 INCLUDE REG_DEF.INC
2 0000
3 0000 PUBLIC START
4 0000
5 0000 EXTERN MICROC_INIT :NEAR
6 0000 EXTERN SEN_INIT :NEAR
7 0000 EXTERN SEN_READ_MONTION :NEAR
8 0000 EXTERN SEN_ENTRY_SLEEP_MODE :NEAR
9 0000 EXTERN SEN_RESUME :NEAR
10 0000 EXTERN DELAY_100US :NEAR
11 0000
12 0000 EXTERN INIT_RF :NEAR
13 0000 EXTERN WAIT_FSP :NEAR
14 0000 EXTERN RF_CHANGE_TO_RX :NEAR
15 0000 EXTERN RF_CHANGE_TO_TX :NEAR
16 0000 EXTERN RF_FIFO_WRITE :NEAR
17 0000 EXTERN RF_FIFO_READ :NEAR
18 0000 EXTERN CHECK_FSP :NEAR
19 0000 EXTERN RF_REFILL_DATA :NEAR
20 0000
21 0000 EXTERN DRAW_CIRCLE :NEAR
22 0000
23 0000 EXTERN TEST_RF :NEAR
24 0000
25 0000 EXTERN SCAN_KEY :NEAR
26 0000
27 0000 EXTERN INIT_TIMER :NEAR
28 0000
29 0000 EXTERN COMM_SYNC :NEAR
30 0000 EXTERN GET_NEXT_CHANNEL :NEAR
31 0000
32 0000 EXTERN POWER_CTRL :NEAR
33 0000
34 0000
35 0000 BOOT_CODE .SECTION AT 0000H 'CODE'
36 0000
37 0000 2810 JMP START
38 0001
39 0000 MAIN_CODE .SECTION AT 0010H 'CODE'
40 0000
41 0000 START:
42 0000 2000 E CALL MICROC_INIT ; INITIALIZE THE MCU RAM AND I/O
43 0001 2000 E CALL INIT_TIMER ; INITIALIZE THE TIMER
44 0002 2000 E CALL SEN_INIT ; INITIALIZE THE OPTICAL SENSOR
45 0003 2000 E CALL INIT_RF ; INITIALIZE THE ARF2496K
46 0004
47 0004 ; CHECK IF THE USER WANT TO ENTRY TEST MODE OR NOT
48 0004 ; IF LEFT-BUTTON, RIGHT-BUTTON AND MIDDLE-BUTTON ARE PRESSED, THEN
49 0004 ; ENTRY CIRCLE TEST MODE
50 0004 3062 SET CIRCLE_TEST
51 0005 3D12 SZ R_BUT ;PA.2
52 0006 281D JMP NOT_CIRCLE_TEST
53 0007 3D92 SZ L_BUT ;PA.3
54 0008 281D JMP NOT_CIRCLE_TEST
55 0009 3E12 SZ M_BUT ;PA.4
56 000A 281D JMP NOT_CIRCLE_TEST
57 000B
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 2
58 000B ; ENTRY CIRCLE TEST MODE, SENSOR SHOULD BE OFF
59 000B 2000 E CALL SEN_ENTRY_SLEEP_MODE
60 000C 281E JMP UN_SYNC
61 000D
62 000D NOT_CIRCLE_TEST:
63 000D 3462 CLR CIRCLE_TEST
64 000E
65 000E UN_SYNC:
66 000E ; ENABLE TIMER AND SEEK FOR FSP FOR SYNC WITH DONGLE
67 000E 320E SET TIMER_ENABLE
68 000F 2000 E CALL COMM_SYNC
69 0010 3CE2 SZ RESUME_FROM_HALT
70 0011 2810 JMP START
71 0012 2000 E CALL RF_FIFO_READ
72 0013
73 0013 2825 JMP SYNCED
74 0014 ;====================================================================================
75 0014 MAIN_LOOP:
76 0014 ;Still wait for FSP, even the RF chip is shuted down;
77 0014 ;To maintain the clock ticking for 8ms period
78 0014 2000 E CALL WAIT_FSP
79 0015
80 0015 SYNCED:
81 0015 ; IF RF IS NOT SHUTTED DOWN, THEN CHECK THE FSP PACKET
82 0015 3C73 SZ POWER_MODE.0
83 0016
84 0016 2840 JMP POWER_MODE_0_2
85 0017
86 0017 2000 E CALL CHECK_FSP
87 0018
88 0018 3C66 SZ VALID_FSP
89 0019 283B JMP VALID_FSP_GOT
90 001A
91 001A 3D73 SZ POWER_MODE.2
92 001B 282E JMP AA2
93 001C
94 001C 3966 SNZ DONGLE_LINKED
95 001D 281E JMP UN_SYNC
96 001E
97 001E AA2:
98 001E
99 001E 14EF INC NO_FSP_COUNT
100 001F 0F06 MOV A, 6
101 0020 046F XOR A, NO_FSP_COUNT
102 0021 1085 SZ ACC
103 0022 283C JMP NOT_VALID_FSP_GOT
104 0023
105 0023 1F6F CLR NO_FSP_COUNT
106 0024 3566 CLR DONGLE_LINKED
107 0025 3973 SNZ POWER_MODE.2
108 0026 281E JMP UN_SYNC
109 0027
110 0027 3D73 SZ POWER_MODE.2
111 0028 15EF DEC NO_FSP_COUNT
112 0029
113 0029 3D73 SZ POWER_MODE.2
114 002A 2840 JMP POWER_MODE_0_2
115 002B
116 002B VALID_FSP_GOT:
117 002B
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 3
118 002B ; IF VALID FSP IS RECEIVED, RESET NO_FSP_COUNT
119 002B 1F6F CLR NO_FSP_COUNT
120 002C
121 002C NOT_VALID_FSP_GOT:
122 002C
123 002C 3D73 SZ POWER_MODE.2
124 002D 2840 JMP AA3
125 002E
126 002E 3873 SNZ POWER_MODE.0
127 002F ; NO_FSP_COUNT < 6, THEN STILL SYNC WITH DONGLE, STILL SEND OUT THE DATA
128 002F ; PACKET.
129 002F 2000 E CALL RF_CHANGE_TO_TX
130 0030
131 0030 AA3:
132 0030
133 0030 POWER_MODE_0_2:
134 0030 3862 SNZ CIRCLE_TEST
135 0031 2000 E CALL SEN_READ_MONTION
136 0032 3C62 SZ CIRCLE_TEST
137 0033 2000 E CALL DRAW_CIRCLE
138 0034
139 0034 2000 E CALL SCAN_KEY
140 0035
141 0035 3D73 SZ POWER_MODE.2
142 0036 2849 JMP AA1
143 0037
144 0037 3873 SNZ POWER_MODE.0
145 0038 2000 E CALL RF_REFILL_DATA
146 0039
147 0039 AA1:
148 0039
149 0039 ;TIME GATE, HOLD TO TRANSMIT MOUSE DATA TO THE DONGLE,
150 0039 ;TO MEET THE TIME SLOT REQUIREMENT
151 0039 WAIT_TG_0:
152 0039 0F1E MOV A, 30
153 003A 440D XOR A, TIMER_COUNT
154 003B 1085 SZ ACC
155 003C 2849 JMP WAIT_TG_0
156 003D
157 003D ; IF OVER 100 COMMUNICATION HAS NO EVENT FROM BUTTONS, WHEEL AND SENSOR,
158 003D ; STOP TO SEND DATA TO THE DONGLE
159 003D 3C64 SZ XYZ_ZERO_FLAG
160 003E 2851 JMP NOT_CHECK_FSP
161 003F
162 003F ; IF RF IS SHUTTED DOWN, NOT TO WRITE DATA TO THE RF
163 003F 3873 SNZ POWER_MODE.0
164 0040 2000 E CALL RF_FIFO_WRITE
165 0041
166 0041 NOT_CHECK_FSP:
167 0041 ; IF IT IS CIRCLE TEST MODE, THEN DO NOT HANDLE POWER SAVING CONTROL
168 0041 3862 SNZ CIRCLE_TEST
169 0042 2000 E CALL POWER_CTRL
170 0043 3CE2 SZ RESUME_FROM_HALT
171 0044 2810 JMP START
172 0045
173 0045 3D73 SZ POWER_MODE.2
174 0046 285B JMP AA4
175 0047 ; IF RF IS SHUTTED DOWN, NOT TO CHANGE CHANNEL
176 0047 3873 SNZ POWER_MODE.0
177 0048 2000 E CALL GET_NEXT_CHANNEL
"File: MAIN.ASM Holtek Cross-Assembler Version 2.86 Page 4
178 0049
179 0049 ; IF RF IS SHUTTED DOWN, NOT TO SWITCH RF TO RX MODE
180 0049 3873 SNZ POWER_MODE.0
181 004A 2000 E CALL RF_CHANGE_TO_RX
182 004B
183 004B AA4:
184 004B
185 004B
186 004B
187 004B ;TIME GATE, HOLD TO TURN ON RF-FRONT CIRCUIT,
188 004B ;TO MEET THE TIME SLOT REQUIREMENT FOR POWER CONSUMPTION REDUCTION
189 004B WAIT_TG_1:
190 004B 0F49 MOV A, 73
191 004C 440D XOR A, TIMER_COUNT
192 004D 1085 SZ ACC
193 004E 285B JMP WAIT_TG_1
194 004F
195 004F 2824 JMP MAIN_LOOP
196 0050
197 0050 0003 RET
0 Errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -