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

📄 set_rules.asl

📁 一款智能老鼠的玩具源代码
💻 ASL
📖 第 1 页 / 共 3 页
字号:
+                   197 ;	brz	next_status_not_stop	;前一运行状态是停止
+                   198 ;	cmpe	#c_flg_left
+                   199 ;	brz	next_status_forward	;前一运行状态是向左,则下一个是向前
+                   200 ;	cmpe	#c_flg_right
+                   201 ;	brz	next_status_forward	;前一运行状态是向右,则下一个是向前
+                   202 ;next_status_random:			;if not, the next status is selected from the whole move status.
+                   203 ;	lda	#0
+                   204 ;	sta	m_offset_ini		;add the high 8bit of the offset register	
+                   205 ;	sta	m_offset_ini_h
+                   206 ;	lda	#c_mtr_tab_row
+                   207 ;	sta	m_rnd_range
+                   208 ;	br	set_rules_end
+                   209 ;next_status_forward:			;revise for adding the high 8bit of the offset register
+                   210 ;	lda	#>c_offset_f_ini
+                   211 ;	sta	m_offset_ini_h
+                   212 ;	lda	#<c_offset_f_ini
+                   213 ;	sta	m_offset_ini
+                   214 ;	lda	#c_rnd_range_f
+                   215 ;	sta	m_rnd_range
+                   216 ;	br	set_rules_end
+                   217 ;next_status_not_stop:			;add the rules for not stop continuously
+                   218 ;	lda	#>c_offset_f_ini
+                   219 ;	sta	m_offset_ini_h
+                   220 ;	lda	#<c_offset_f_ini
+                   221 ;	sta	m_offset_ini
+                   222 ;	lda	#c_rnd_range_not_stop
+                   223 ;	sta	m_rnd_range
+                   224 ;	br	set_rules_end
+                   225 ;;--------------------------------------这是flg_new_random==2时的设置一些规则,即是有障碍物的情况下。
+                   226 ;rules_for_ir:
+                   227 ;	lda	temp_flg_ir_received	;上一次的红外状态
+                   228 ;	cmpe	#c_flg_l_rcved		;前一个是左边有障碍物	
+                   229 ;	brz	$1
+                   230 ;	cmpe	#c_flg_f_l_rcved
+                   231 ;	brz	$1
+                   232 ;	cmpe	#c_flg_r_rcved
+                   233 ;	brz	$2
+                   234 ;	cmpe	#c_flg_f_r_rcved
+                   235 ;	brz	$2
+                   236 ;	br	set_rules_end
+                   237 ;$1:
+                   238 ;	lda	flg_ir_received		;对照今次的红外状态
+                   239 ;	cmpe	#c_flg_r_rcved
+                   240 ;	brz	next_status_forward
+                   241 ;	cmpe	#c_flg_f_r_rcved
+                   242 ;	brz	next_status_forward
+                   243 ;	br	set_rules_end
+                   244 ;$2:
+                   245 ;	lda	flg_ir_received
+                   246 ;	cmpe	#c_flg_l_rcved
+                   247 ;	brz	next_status_forward
+                   248 ;	cmpe	#c_flg_f_l_rcved
+                   249 ;	brz	next_status_forward
+                   250 ;	
+                   251 ;set_rules_end:
+                   252 ;	lda	#0
+                   253 ;	sta	flg_new_random
+                   254 ;	lda	flg_ir_received
+                   255 ;	sta	temp_flg_ir_received
+                   256 ;	ret
+                   257 ;;================================================================;
+                   258 ;;****************************************************************;
+                   259 ;; IR Judge
+                   260 ;
+                   261 ;; Carrier Frequency: 38K
+                   262 ;; IR transmit output pin: PRTC[0]
+                   263 ;; IR receive input pins: PRTD[0](front side)
+                   264 ;;                        PRTD[1](left side)
+                   265 ;;                        PRTD[2](right side)
+                   266 ;;
+                   267 ;; Written by: lixy
+                   268 ;; Date: 2004-04-08
+                   269 ;;****************************************************************;
+                   270 ;
+                   271 ;;================================================================;
+                   272 ;;Constant Area
+                   273 ;;================================================================;
+                   274 ;c_prtc012_1		equ	#00000111b
+                   275 ;c_prtc012_0		equ	#11111000b
+                   276 ;
+                   277 ;c_prtd012_1		equ	#00000111b
+                   278 ;c_prtd0_1		equ	#00000001b
+                   279 ;c_prtd0_0		equ	#11111110b
+                   280 ;c_prtd1_1		equ	#00000010b
+                   281 ;c_prtd1_0		equ	#11111101b
+                   282 ;c_prtd2_1		equ	#00000100b
+                   283 ;c_prtd2_0		equ	#11111011b
+                   284 
+                   285 ;;c_38k_pulse		equ	#22		;the total number of 38k IR pulse transmitted(23*26us=598us)
+                   286 ;;//04-03-17// revise the ir groups total number (primer value is 20)
+                   287 ;;c_ir_group		equ	#12		;the interval between 38k pulse groups in one IR group
+                   288 ;;end revise //04-03-17//
+                   289 ;c_ir_rcv_f		equ	#10
+                   290 ;c_ir_rcv_l		equ	#10
+                   291 ;c_ir_rcv_r		equ	#10
+                   292 ;c_flg_f_rcved		equ	#1		;表示前面有障碍物
+                   293 ;c_flg_l_rcved		equ	#2		;表示左面有障碍物
+                   294 ;c_flg_r_rcved		equ	#3		;表示右边有障碍物
+                   295 ;c_flg_f_l_rcved		equ	#4		;表示前左有障碍物
+                   296 ;c_flg_f_r_rcved		equ	#5		;表示前右有障碍物
+                   297 ;c_flg_l_r_rcved		equ	#6		;表示左右有障碍物
+                   298 ;c_flg_f_l_r_rcved	equ	#7		;表示前左右都有障碍物
+                   299 
+                   300 ;c_offset_f		equ	#0
+                   301 ;;--------------------------------------以下为左转的开始偏移
+                   302 ;c_offset_l_20		equ	#72		;=9(row)*8(column) left 20 degree
+                   303 ;c_offset_l_40		equ	#80		;=10(row)*8(column) left 40 degree
+                   304 ;c_offset_l_60		equ	#88		;=11(row)*8(column) left 60 degree
+                   305 ;c_offset_l_80		equ	#96		;=12(row)*8(column) left 80 degree
+                   306 ;c_offset_l_100		equ	#104		;=13(row)*8(column) left 100 degree
+                   307 ;c_offset_l_120		equ	#112		;=14(row)*8(column) left 120 degree
+                   308 ;;--------------------------------------以下为右转的开始偏移
+                   309 ;c_offset_r_20		equ	#144		;=18(row)*8(column) right 20 degree
+                   310 ;c_offset_r_40		equ	#152		;=19(row)*8(column) right 40 degree
+                   311 ;c_offset_r_60		equ	#160		;=20(row)*8(column) right 60 degree
+                   312 ;c_offset_r_80		equ	#168		;=21(row)*8(column) right 80 degree
+                   313 ;c_offset_r_100		equ	#176		;=22(row)*8(column) right 100 degree
+                   314 ;c_offset_r_120		equ	#184		;=23(row)*8(column) right 120 degree
+                   315 ;;;-------------------------------------以下为红外左右转表的开始偏移
+                   316 ;;//04-03-17// add for swerve when detceting the obstacles
+                   317 ;c_offset_l_20_ir	equ	#240		;=30(row)*8(column) left 20 degree
+                   318 ;c_offset_l_40_ir	equ	#248		;=31(row)*8(column) left 40 degree
+                   319 ;c_offset_l_60_ir	equ	#256		;=32(row)*8(column) left 60 degree
+                   320 ;c_offset_r_20_ir	equ	#312		;=39(row)*8(column) right 20 degree
+                   321 ;c_offset_r_40_ir	equ	#320		;=40(row)*8(column) right 40 degree
+                   322 ;c_offset_r_60_ir	equ	#328		;=41(row)*8(column) right 60 degree
+                   323 ;;end adding //04-03-17//
+                   324 
+                   325 ;c_rnd_range_1		equ	#1		;random number range is 1
+                   326 ;c_rnd_range_2		equ	#2		;random number range is 2
+                   327 ;c_rnd_range_3		equ	#3		;random number range is 3
+                   328 ;c_rnd_range_4		equ	#4		;random number range is 4
+                   329 ;c_rnd_range_5		equ	#5		;random number range is 5
+                   330 ;c_rnd_range_6		equ	#6		;random number range is 6
+                   331 ;c_rnd_range_8		equ	#8		;random number range is 8
+                   332 
+                   333 ;c_delay_short		equ	#120		;delay short constant
+                   334 
+                   335 ;;================================================================;
+                   336 ;IR Data Area
+                   337 ;================================================================;
+                   338 ;       .area       ir_judge_var(data)
+                   339 ;
+                   340 ;flg_ir_received::	.ds	1	;接收后的状态(0-7表示)(哪个地方有障外)the flag of received IR
+                   341 ;flg_l_or_r::		.ds	1	;the flag of turn left or turn right when detect obstacles in front or front-left-right of the mouse 
+                   342 ;;cnt_38k_pulse::	.ds	1	;IR transmitted pulse counter
+                   343 ;;cnt_ir_group::		.ds	1
+                   344 ;cnt_ir_rcv_f::		.ds	1
+                   345 ;cnt_ir_rcv_l::		.ds	1
+                   346 ;cnt_ir_rcv_r::		.ds	1
+                   347 ;;temp_delay_short::	.ds	1	;short delay variable
+                   348 
+                   349 ;================================================================;
+                   350 ;IR Code Area
+                   351 ;================================================================;
+                   352 ;       .area       ir_judge_code(code)
+                   353        
+                   354 ;*********************************************************************
+                   355 ; intput:flg_motor_status,flg_ir_judge(接收是否完成)
+                   356 ;	cnt_ir_rcv_f,cnt_ir_rcv_l,cnt_ir_rcv_r(中,左,右接收的红外个数)
+                   357 ;
+                   358 ; output:
+                   359 ;*********************************************************************
+                   360 ;ir_judge::
+                   361 ;
+                   362 ;if_judge_ir:
+                   363 ;	lda	flg_ir_judge		;if judge IR?(是否接收发射完成了?)
+                   364 ;	cmpe	#1
+                   365 ;	brnz	ir_judge_end
+                   366 ;
+                   367 ;	lda	#0
+                   368 ;	sta	flg_ir_judge
+                   369 ;judge_ir:
+                   370 ;	call	ir_received_judge	;接收判断子程序
+                   371 
+                   372 ;;************/*04-02-26*/***************;
+                   373 ;	lda	flg_ir_received
+                   374 ;	cmpe	#c_flg_f_rcved
+                   375 ;	brz	judge_ir_end
+                   376 ;	cmpe	#c_flg_f_l_r_rcved
+                   377 ;	brz	judge_ir_end
+                   378 ;
+                   379 ;	lda	flg_l_or_r
+                   380 ;	xora	#1
+                   381 ;	sta	flg_l_or_r
+                   382 ;;***************************************;
+                   383 ;judge_ir_end:
+                   384 ;;	lda	#0			;clear the flag and the counters
+                   385 ;;	sta	cnt_ir_group
+                   386 ;;	sta	cnt_ir_rcv_f
+                   387 ;;	sta	cnt_ir_rcv_l
+                   388 ;;	sta	cnt_ir_rcv_r
+                   389 ;ir_judge_end:
+                   390 ;	ret
+                   391 	
+                   392 ;;----------------------------------------------------------------;
+                   393 ;;IR Received Judge Subroutine接收判断子程序
+                   394 ;;----------------------------------------------------------------;

⌨️ 快捷键说明

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