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

📄 mouse_main.asl

📁 一款智能老鼠的玩具源代码
💻 ASL
📖 第 1 页 / 共 2 页
字号:
00B7 00             196 	nop
00B8 00             197 	nop
00B9 02 00 99       198 	br	gameover_stop
+                   199 ;-----------------------------------------------------------------------
+                   200 ;calculator point subroutie program,
+                   201 ;-----------------------------------------------------------------------
00BC                202 cal_point::
00BC F1 00          203 	lda	cnt_point_free 
00BE A7 78          204 	cmpe	#c_point_dec_intvl ;>400ms
00C0 04 00 C4       205 	brc	cal_point_0        ;yes,jump
00C3 24             206 	ret
00C4                207 cal_point_0:
00C4 F3 00          208 	lda	#0
00C6 FD 00          209 	sta	cnt_point_free
00C8 F1 04          210 	lda	cnt_play_v_intvl   ;play voice interval (c_point_dec_intvl*/300)*cnt_play_v_intvl
00CA 1F             211 	inca
00CB FD 04          212 	sta	cnt_play_v_intvl	;the register is also used to fail loop times	
00CD 20 01 78       213 	call	lcd_display
00D0 F1 01          214 	lda	cnt_point
00D2 AB 01          215 	suba	#1
00D4 FD 01          216 	sta	cnt_point
+                   217 
00D6 F1 02          218 	lda	cnt_point+1      
00D8 BB 00          219 	subc	#0
00DA FD 02          220 	sta	cnt_point+1     ;(cnt_point+1)cnt_point decrease 1,if the result>=0,c=1(Note)
00DC 06 00 E5       221 	brz	play_voice_select
00DF 05 01 0B       222 	brnc	mouse_fail      ;cy=0,cnt_point<0
00E2 02 00 F3       223 	br	play_normal_voice  ;>255 ,play normal voice
+                   224 	
00E5                225 play_voice_select:	
00E5 F1 01          226 	lda	cnt_point	;cnt_point+1=0
00E7 DB 00          227 	ora	#0              ;judge z flag bit
00E9 06 01 0B       228 	brz	mouse_fail      ;=0,seek food fail,
00EC F1 01          229 	lda	cnt_point
00EE A7 32          230 	cmpe	#c_fast_voice
00F0 04 00 FB       231 	brc	play_fast_voice ;50< cnt_point<255
+                   232 ;play normal voice
00F3                233 play_normal_voice:
00F3 F1 04          234 	lda	cnt_play_v_intvl
00F5 A7 14          235 	cmpe	#c_play_v_normal_intvl
00F7 04 01 03       236 	brc	play_sound1
00FA 24             237 	ret
00FB                238 play_fast_voice:
00FB F1 04          239 	lda	cnt_play_v_intvl
00FD A7 0A          240 	cmpe	#c_play_v_fast_intvl
00FF 04 01 03       241 	brc    play_sound1
0102 24             242 	ret
0103                243 play_sound1:
0103 20 00 00       244 	call	select_sound_normal
0106 F3 00          245 	lda	#0
0108 FD 04          246 	sta	cnt_play_v_intvl
010A 24             247 	ret
010B                248 mouse_fail::
010B F3 FF          249 	lda	#0ffh
010D FC 32          250 	sta	r_prtd		;stop motors
010F FC 31          251 	sta	r_prtc		;stop transmit ir
0111 F3 00          252 	lda	#0
0113 FD 00          253 	sta	status_ir_transmit ;stop transmit
0115 FD 00          254 	sta	cnt_point_free	   ;timer 255/300 s
0117 20 00 00       255 	call	select_sound_fail
011A F3 06          256 	lda	#c_fail_loop
011C FD 03          257 	sta	cnt_fail_loop
011E                258 Play_fail_delay:
011E 29             259 	clrwdt
011F 20 01 78       260         call	lcd_display
0122 F1 00          261 	lda	cnt_point_free
0124 A7 FF          262 	cmpe	#255              ;delay 255/300s
0126 07 01 1E       263 	brnz	play_fail_delay
0129 FD 00          264 	sta	cnt_point_free
012B                265 play_fail_loop:
012B 29             266 	clrwdt
012C F3 00          267 	lda	#0
012E FC 38          268 	sta	r_lcdc		;disable lcd display
0130 F1 00          269 	lda	cnt_point_free
0132 A7 FF          270 	cmpe	#255
0134 07 01 2B       271 	brnz	play_fail_loop
0137 F3 00          272 	lda	#0
0139 FD 00          273 	sta	cnt_point_free	   ;timer 255/300 s
013B 20 00 00       274 	call	select_sound_fail
013E F1 03          275  	lda	cnt_fail_loop
0140 3F             276  	deca
0141 FD 03          277  	sta	cnt_fail_loop
0143 04 01 1E       278  	brc	play_fail_delay     ;if>0,c=1
0146 02 00 99       279  	br	gameover_stop
+                   280 ;----------------------------------------------------------------;
+                   281 ;Initial Registor Subroutine
+                   282 ;----------------------------------------------------------------;
0149                283 initial_reg::
+                   284 
0149 F3 00          285 	lda	#00h
014B FC 54          286 	sta	r_tpp
014D FC 02          287 	sta	r_tph
014F FC 01          288 	sta	r_tpl
0151 FC 28          289 	sta	r_pp
0153 FC 48          290 	sta	r_voc
0155 FC 34          291 	sta	r_pwmc
0157 F3 00          292 	lda	#00000000b		;set normal mode,close int,t1,t2,tb
0159 FC 22          293 	sta	r_op1
015B FC 24          294 	sta	r_op2
015D F3 00          295 	lda	#00000b			;disable all interrupt
015F FC 04          296 	sta	r_ier
0161 F3 01          297 	lda	#01h
0163 FC 38          298 	sta	r_lcdc			;点亮LCD
0165 28             299 	clrint
0166 24             300         ret
+                   301         
+                   302 ;----------------------------------------------------------------;
+                   303 ;Set Timer1 Frequency Subroutine
+                   304 ;----------------------------------------------------------------;
0167                305 normal_clock::
0167 F3 00          306 	lda	#c_t1h			;set timer1
0169 FC 11          307 	sta	r_t1h
016B F3 03          308 	lda	#c_t1l
016D FC 08          309 	sta	r_t1l
016F F3 22          310 	lda	#c_t2h			;set timer2
0171 FC 14          311 	sta	r_t2h
0173 F3 B8          312 	lda	#c_t2l
0175 FC 12          313 	sta	r_t2l
0177 24             314         ret
0178                315 lcd_display::
+                   316 
0178 24             317 	ret
+
+Symbol Table
+
+    INT2_isr                           **** GX
+    M_stopbit                          **** GX
+  2 Play_fail_delay                    011E R
+    c_fail_loop                     =  0006 
+    c_fast_voice                    =  0032 
+    c_ier                           =  0007 
+    c_ier_en_int2                   =  0001 
+    c_ier_en_t1                     =  0004 
+    c_ier_en_t2                     =  0002 
+    c_init_point_h                  =  0003 
+    c_init_point_l                  =  00E7 
+    c_op1                           =  001C 
+    c_play_v_fast_intvl             =  000A 
+    c_play_v_normal_intvl           =  0014 
+    c_point_dec_intvl               =  0078 
+    c_ram                           =  00FF 
+    c_sp                            =  00EF 
+    c_t1h                           =  0000 
+    c_t1l                           =  0003 
+    c_t2h                           =  0022 
+    c_t2l                           =  00B8 
+  2 cal_point                          00BC GR
+  2 cal_point_0                        00C4 R
+  2 call_random                        0072 R
+  2 clear_memory                       0022 R
+  2 clr_end                            0034 R
+  2 clr_m                              0026 R
+  1 cnt_fail_loop                      0003 GR
+  1 cnt_play_v_intvl                   0004 GR
+  1 cnt_point                          0001 GR
+    cnt_point_free                     **** GX
+  1 flg_new_random                     0000 GR
+    flg_rcv_touched                    **** GX
+  2 gameover                           0083 R
+  2 gameover_song                      0086 R
+  2 gameover_song1                     0091 R
+  2 gameover_stop                      0099 R
+  2 if_gameover                        007B GR
+  2 initial_reg                        0149 GR
+  2 int1_isr                           0015 R
+    ir_judge                           **** GX
+  2 lcd_display                        0178 GR
+  2 main                               0055 R
+  2 mouse_fail                         010B GR
+  2 normal_clock                       0167 GR
+  2 play_fail_loop                     012B R
+  2 play_fast_voice                    00FB R
+  2 play_normal_voice                  00F3 R
+  2 play_sound1                        0103 R
+  2 play_voice_select                  00E5 R
+    read_random                        **** GX
+    run                                **** GX
+    scan_key                           **** GX
+    scan_key_start                     **** GX
+    select_sound_fail                  **** GX
+    select_sound_gameover              **** GX
+    select_sound_normal                **** GX
+    set_rules                          **** GX
+  2 start_initial                      0016 R
+    status_ir_rcv                      **** GX
+    status_ir_transmit                 **** GX
+    t1_isr                             **** GX
+    t2_isr                             **** GX
+  2 tb_isr                             0015 R
+
+
+Area Table
+
+   0 .                                  size    0   flags 0
+   1 main_var                           size    5   flags 2
+   2 main_code                          size  179   flags D

⌨️ 快捷键说明

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