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

📄 main.asm

📁 Simple Timer/Counter application for cock fighting
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;main.c,399 :: 		if ((PORTA & 0x30) == 0x30)// change mode button has been triggered
$0321	$3030			MOVLW	48
$0322	$1303			BCF	STATUS, RP1
$0323	$1283			BCF	STATUS, RP0
$0324	$0505			ANDWF	PORTA, 0
$0325	$00F1			MOVWF	STACK_1
$0326	$0871			MOVF	STACK_1, 0
$0327	$3A30			XORLW	48
$0328	$1D03			BTFSS	STATUS, Z
$0329	$2BB3			GOTO	L_main_50
;main.c,401 :: 		if (!INTCON.T0IE) // if the timer is off
$032A	$1A8B			BTFSC	INTCON, 5
$032B	$2BB3			GOTO	L_main_51
;main.c,403 :: 		delay = 3;
$032C	$3003			MOVLW	3
$032D	$00B1			MOVWF	_delay
$032E	$3000			MOVLW	0
$032F	$00B2			MOVWF	_delay+1
;main.c,404 :: 		if (!flag.f0)
$0330	$182F			BTFSC	_flag, 0
$0331	$2B6F			GOTO	L_main_52
;main.c,406 :: 		flag.f0 = 1; //change mode as down counter
$0332	$142F			BSF	_flag, 0
;main.c,407 :: 		do {
$0333	$	L_main_53:
;main.c,408 :: 		repitition = 250;
$0333	$30FA			MOVLW	250
$0334	$1303			BCF	STATUS, RP1
$0335	$1283			BCF	STATUS, RP0
$0336	$00B3			MOVWF	_repitition
$0337	$01B4			CLRF	_repitition+1
;main.c,409 :: 		do {
$0338	$	L_main_55:
;main.c,410 :: 		PORTB = mask (11); //load millisecond value to PORTB
$0338	$300B			MOVLW	11
$0339	$1303			BCF	STATUS, RP1
$033A	$1283			BCF	STATUS, RP0
$033B	$00BA			MOVWF	FARG_mask+0
$033C	$207C			CALL	_mask
$033D	$1303			BCF	STATUS, RP1
$033E	$1283			BCF	STATUS, RP0
$033F	$0870			MOVF	STACK_0, 0
$0340	$0086			MOVWF	PORTB
;main.c,411 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
$0341	$1405			BSF	PORTA, 0
;main.c,412 :: 		Short_delay();
$0342	$20CF			CALL	_Short_delay
;main.c,413 :: 		PORTB = 0;
$0343	$0186			CLRF	PORTB, 1
;main.c,414 :: 		PORTA = PORTA & 0xff; //disable the display
$0344	$30FF			MOVLW	255
$0345	$0585			ANDWF	PORTA, 1
;main.c,415 :: 		PORTB = mask (2); //load millisecond value to PORTB
$0346	$3002			MOVLW	2
$0347	$00BA			MOVWF	FARG_mask+0
$0348	$207C			CALL	_mask
$0349	$1303			BCF	STATUS, RP1
$034A	$1283			BCF	STATUS, RP0
$034B	$0870			MOVF	STACK_0, 0
$034C	$0086			MOVWF	PORTB
;main.c,416 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
$034D	$3005			MOVLW	5
$034E	$0485			IORWF	PORTA, 1
;main.c,417 :: 		Short_delay();
$034F	$20CF			CALL	_Short_delay
;main.c,418 :: 		PORTB = 0;
$0350	$0186			CLRF	PORTB, 1
;main.c,419 :: 		PORTA = PORTA & 0xff; //disable the display
$0351	$30FF			MOVLW	255
$0352	$0585			ANDWF	PORTA, 1
;main.c,420 :: 		repitition--;
$0353	$3001			MOVLW	1
$0354	$02B3			SUBWF	_repitition, 1
$0355	$1C03			BTFSS	STATUS, C
$0356	$03B4			DECF	_repitition+1, 1
;main.c,421 :: 		} while (repitition > 0);
$0357	$0834			MOVF	_repitition+1, 0
$0358	$3C00			SUBLW	0
$0359	$1D03			BTFSS	STATUS, Z
$035A	$2B5D			GOTO	L_main_83
$035B	$0833			MOVF	_repitition, 0
$035C	$3C00			SUBLW	0
$035D	$	L_main_83:
$035D	$1C03			BTFSS	STATUS, C
$035E	$2B38			GOTO	L_main_55
$035F	$	L_main_56:
;main.c,422 :: 		Delay_sec();
$035F	$21E3			CALL	_Delay_sec
;main.c,423 :: 		delay--;
$0360	$3001			MOVLW	1
$0361	$1303			BCF	STATUS, RP1
$0362	$1283			BCF	STATUS, RP0
$0363	$02B1			SUBWF	_delay, 1
$0364	$1C03			BTFSS	STATUS, C
$0365	$03B2			DECF	_delay+1, 1
;main.c,424 :: 		} while (delay > 0);
$0366	$0832			MOVF	_delay+1, 0
$0367	$3C00			SUBLW	0
$0368	$1D03			BTFSS	STATUS, Z
$0369	$2B6C			GOTO	L_main_84
$036A	$0831			MOVF	_delay, 0
$036B	$3C00			SUBLW	0
$036C	$	L_main_84:
$036C	$1C03			BTFSS	STATUS, C
$036D	$2B33			GOTO	L_main_53
$036E	$	L_main_54:
;main.c,425 :: 		goto exit1
$036E	$2BAF			GOTO	___main_exit1
;main.c,426 :: 		}
$036F	$	L_main_52:
;main.c,427 :: 		if (flag.f0)
$036F	$1303			BCF	STATUS, RP1
$0370	$1283			BCF	STATUS, RP0
$0371	$1C2F			BTFSS	_flag, 0
$0372	$2BAF			GOTO	L_main_57
;main.c,429 :: 		flag.f0 = 0; //change mode as up counter
$0373	$102F			BCF	_flag, 0
;main.c,430 :: 		do {
$0374	$	L_main_58:
;main.c,431 :: 		repitition = 250;
$0374	$30FA			MOVLW	250
$0375	$1303			BCF	STATUS, RP1
$0376	$1283			BCF	STATUS, RP0
$0377	$00B3			MOVWF	_repitition
$0378	$01B4			CLRF	_repitition+1
;main.c,432 :: 		do {
$0379	$	L_main_60:
;main.c,433 :: 		PORTB = mask (11); //load millisecond value to PORTB
$0379	$300B			MOVLW	11
$037A	$1303			BCF	STATUS, RP1
$037B	$1283			BCF	STATUS, RP0
$037C	$00BA			MOVWF	FARG_mask+0
$037D	$207C			CALL	_mask
$037E	$1303			BCF	STATUS, RP1
$037F	$1283			BCF	STATUS, RP0
$0380	$0870			MOVF	STACK_0, 0
$0381	$0086			MOVWF	PORTB
;main.c,434 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
$0382	$1405			BSF	PORTA, 0
;main.c,435 :: 		Short_delay();
$0383	$20CF			CALL	_Short_delay
;main.c,436 :: 		PORTB = 0;
$0384	$0186			CLRF	PORTB, 1
;main.c,437 :: 		PORTA = PORTA & 0xff; //disable the display
$0385	$30FF			MOVLW	255
$0386	$0585			ANDWF	PORTA, 1
;main.c,438 :: 		PORTB = mask (1); //load millisecond value to PORTB
$0387	$3001			MOVLW	1
$0388	$00BA			MOVWF	FARG_mask+0
$0389	$207C			CALL	_mask
$038A	$1303			BCF	STATUS, RP1
$038B	$1283			BCF	STATUS, RP0
$038C	$0870			MOVF	STACK_0, 0
$038D	$0086			MOVWF	PORTB
;main.c,439 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
$038E	$3005			MOVLW	5
$038F	$0485			IORWF	PORTA, 1
;main.c,440 :: 		Short_delay();
$0390	$20CF			CALL	_Short_delay
;main.c,441 :: 		PORTB = 0;
$0391	$0186			CLRF	PORTB, 1
;main.c,442 :: 		PORTA = PORTA & 0xff; //disable the display
$0392	$30FF			MOVLW	255
$0393	$0585			ANDWF	PORTA, 1
;main.c,443 :: 		repitition--;
$0394	$3001			MOVLW	1
$0395	$02B3			SUBWF	_repitition, 1
$0396	$1C03			BTFSS	STATUS, C
$0397	$03B4			DECF	_repitition+1, 1
;main.c,444 :: 		} while (repitition > 0);
$0398	$0834			MOVF	_repitition+1, 0
$0399	$3C00			SUBLW	0
$039A	$1D03			BTFSS	STATUS, Z
$039B	$2B9E			GOTO	L_main_85
$039C	$0833			MOVF	_repitition, 0
$039D	$3C00			SUBLW	0
$039E	$	L_main_85:
$039E	$1C03			BTFSS	STATUS, C
$039F	$2B79			GOTO	L_main_60
$03A0	$	L_main_61:
;main.c,445 :: 		Delay_sec();
$03A0	$21E3			CALL	_Delay_sec
;main.c,446 :: 		delay--;
$03A1	$3001			MOVLW	1
$03A2	$1303			BCF	STATUS, RP1
$03A3	$1283			BCF	STATUS, RP0
$03A4	$02B1			SUBWF	_delay, 1
$03A5	$1C03			BTFSS	STATUS, C
$03A6	$03B2			DECF	_delay+1, 1
;main.c,447 :: 		} while (delay > 0);
$03A7	$0832			MOVF	_delay+1, 0
$03A8	$3C00			SUBLW	0
$03A9	$1D03			BTFSS	STATUS, Z
$03AA	$2BAD			GOTO	L_main_86
$03AB	$0831			MOVF	_delay, 0
$03AC	$3C00			SUBLW	0
$03AD	$	L_main_86:
$03AD	$1C03			BTFSS	STATUS, C
$03AE	$2B74			GOTO	L_main_58
$03AF	$	L_main_59:
;main.c,448 :: 		}
$03AF	$	L_main_57:
;main.c,449 :: 		exit1: load_default_values();
$03AF	$	___main_exit1:
$03AF	$219D			CALL	_load_default_values
;main.c,450 :: 		flag.f2 = 1;//set reset flag
$03B0	$1303			BCF	STATUS, RP1
$03B1	$1283			BCF	STATUS, RP0
$03B2	$152F			BSF	_flag, 2
;main.c,451 :: 		}
$03B3	$	L_main_51:
;main.c,452 :: 		}
$03B3	$	L_main_50:
;main.c,456 :: 		if ((PORTA & 0x30)== 0x20) // stop/show button has been triggered
$03B3	$3030			MOVLW	48
$03B4	$1303			BCF	STATUS, RP1
$03B5	$1283			BCF	STATUS, RP0
$03B6	$0505			ANDWF	PORTA, 0
$03B7	$00F1			MOVWF	STACK_1
$03B8	$0871			MOVF	STACK_1, 0
$03B9	$3A20			XORLW	32
$03BA	$1D03			BTFSS	STATUS, Z
$03BB	$2BF2			GOTO	L_main_62
;main.c,458 :: 		if (INTCON.T0IE)
$03BC	$1E8B			BTFSS	INTCON, 5
$03BD	$2BC2			GOTO	L_main_63
;main.c,460 :: 		INTCON.T0IE = 0;
$03BE	$128B			BCF	INTCON, 5
;main.c,461 :: 		flag.f1 = 0; // flag.f1 is used as the the lapsed flag
$03BF	$10AF			BCF	_flag, 1
;main.c,462 :: 		alarm();
$03C0	$22A1			CALL	_alarm
;main.c,463 :: 		goto exit2
$03C1	$2BEF			GOTO	___main_exit2
;main.c,464 :: 		}
$03C2	$	L_main_63:
;main.c,465 :: 		if (!INTCON.T0IE)
$03C2	$1A8B			BTFSC	INTCON, 5
$03C3	$2BEF			GOTO	L_main_64
;main.c,467 :: 		delay = 500;
$03C4	$30F4			MOVLW	244
$03C5	$1303			BCF	STATUS, RP1
$03C6	$1283			BCF	STATUS, RP0
$03C7	$00B1			MOVWF	_delay
$03C8	$3001			MOVLW	1
$03C9	$00B2			MOVWF	_delay+1
;main.c,468 :: 		do {
$03CA	$	L_main_65:
;main.c,469 :: 		if (flag.f0) offset_up_time();
$03CA	$1303			BCF	STATUS, RP1
$03CB	$1283			BCF	STATUS, RP0
$03CC	$1C2F			BTFSS	_flag, 0
$03CD	$2BCF			GOTO	L_main_67
$03CE	$2205			CALL	_offset_up_time
$03CF	$	L_main_67:
;main.c,470 :: 		if (!flag.f0) offset_down_time();
$03CF	$1303			BCF	STATUS, RP1
$03D0	$1283			BCF	STATUS, RP0
$03D1	$182F			BTFSC	_flag, 0
$03D2	$2BD4			GOTO	L_main_68
$03D3	$2253			CALL	_offset_down_time
$03D4	$	L_main_68:
;main.c,471 :: 		delay--;
$03D4	$3001			MOVLW	1
$03D5	$1303			BCF	STATUS, RP1
$03D6	$1283			BCF	STATUS, RP0
$03D7	$02B1			SUBWF	_delay, 1
$03D8	$1C03			BTFSS	STATUS, C
$03D9	$03B2			DECF	_delay+1, 1
;main.c,472 :: 		if ((PORTA & 0x20) == 0x20) delay = 500;
$03DA	$3020			MOVLW	32
$03DB	$0505			ANDWF	PORTA, 0
$03DC	$00F1			MOVWF	STACK_1
$03DD	$0871			MOVF	STACK_1, 0
$03DE	$3A20			XORLW	32
$03DF	$1D03			BTFSS	STATUS, Z
$03E0	$2BE5			GOTO	L_main_69
$03E1	$30F4			MOVLW	244
$03E2	$00B1			MOVWF	_delay
$03E3	$3001			MOVLW	1
$03E4	$00B2			MOVWF	_delay+1
$03E5	$	L_main_69:
;main.c,473 :: 		} while (delay >0);
$03E5	$1303			BCF	STATUS, RP1
$03E6	$1283			BCF	STATUS, RP0
$03E7	$0832			MOVF	_delay+1, 0
$03E8	$3C00			SUBLW	0
$03E9	$1D03			BTFSS	STATUS, Z
$03EA	$2BED			GOTO	L_main_87
$03EB	$0831			MOVF	_delay, 0
$03EC	$3C00			SUBLW	0
$03ED	$	L_main_87:
$03ED	$1C03			BTFSS	STATUS, C
$03EE	$2BCA			GOTO	L_main_65
$03EF	$	L_main_66:
;main.c,474 :: 		}
$03EF	$	L_main_64:
;main.c,475 :: 		exit2: PORTA.F3 = 0;
$03EF	$	___main_exit2:
$03EF	$1303			BCF	STATUS, RP1
$03F0	$1283			BCF	STATUS, RP0
$03F1	$1185			BCF	PORTA, 3
;main.c,476 :: 		}
$03F2	$	L_main_62:
;main.c,480 :: 		if ((PORTA & 0x30) == 0x10) // start button bas been triggered
$03F2	$3030			MOVLW	48
$03F3	$1303			BCF	STATUS, RP1
$03F4	$1283			BCF	STATUS, RP0
$03F5	$0505			ANDWF	PORTA, 0
$03F6	$00F1			MOVWF	STACK_1
$03F7	$0871			MOVF	STACK_1, 0
$03F8	$3A10			XORLW	16
$03F9	$1D03			BTFSS	STATUS, Z
$03FA	$2C0C			GOTO	L_main_70
;main.c,482 :: 		if (!INTCON.T0IE && flag.f2 )
$03FB	$1A8B			BTFSC	INTCON, 5
$03FC	$2C0C			GOTO	L_main_73
$03FD	$3000			MOVLW	0
$03FE	$192F			BTFSC	_flag, 2
$03FF	$3001			MOVLW	1
$0400	$00F1			MOVWF	STACK_1
$0401	$0871			MOVF	STACK_1, 0
$0402	$1903			BTFSC	STATUS, Z
$0403	$2C0C			GOTO	L_main_73
$0404	$	L659_ex_L_main_73:
;main.c,484 :: 		lapsed_count = 0;
$0404	$1303			BCF	STATUS, RP1
$0405	$1283			BCF	STATUS, RP0
$0406	$01AD			CLRF	_lapsed_count
$0407	$01AE			CLRF	_lapsed_count+1
;main.c,485 :: 		INTCON.T0IE = 1;
$0408	$168B			BSF	INTCON, 5
;main.c,486 :: 		TMR0 = 0;
$0409	$0181			CLRF	TMR0, 1
;main.c,487 :: 		flag.f1 = 0;
$040A	$10AF			BCF	_flag, 1
;main.c,488 :: 		flag.f2 = 0;
$040B	$112F			BCF	_flag, 2
;main.c,489 :: 		}
$040C	$	L_main_73:
;main.c,490 :: 		}
$040C	$	L_main_70:
;main.c,494 :: 		if (PORTB.F0) // reset button has been triggerred
$040C	$1303			BCF	STATUS, RP1
$040D	$1283			BCF	STATUS, RP0
$040E	$1C06			BTFSS	PORTB, 0
$040F	$2C14			GOTO	L_main_74
;main.c,496 :: 		if (!INTCON.T0IE)
$0410	$1A8B			BTFSC	INTCON, 5
$0411	$2C14			GOTO	L_main_75
;main.c,498 :: 		load_default_values();
$0412	$219D			CALL	_load_default_values
;main.c,499 :: 		flag.f2 = 1;//set the reset flag
$0413	$152F			BSF	_flag, 2
;main.c,500 :: 		}
$0414	$	L_main_75:
;main.c,501 :: 		}
$0414	$	L_main_74:
;main.c,504 :: 		if (flag.f1 && !INTCON.T0IE)// lapsed time indication
$0414	$3000			MOVLW	0
$0415	$1303			BCF	STATUS, RP1
$0416	$1283			BCF	STATUS, RP0
$0417	$18AF			BTFSC	_flag, 1
$0418	$3001			MOVLW	1
$0419	$00F1			MOVWF	STACK_1
$041A	$0871			MOVF	STACK_1, 0
$041B	$1903			BTFSC	STATUS, Z
$041C	$2C25			GOTO	L_main_78
$041D	$1A8B			BTFSC	INTCON, 5
$041E	$2C25			GOTO	L_main_78
$041F	$	L687_ex_L_main_78:
;main.c,506 :: 		INTCON.T0IE = 0;
$041F	$128B			BCF	INTCON, 5
;main.c,507 :: 		flag.f1 = 0; // flag.f1 is used as the the lapsed flag
$0420	$1303			BCF	STATUS, RP1
$0421	$1283			BCF	STATUS, RP0
$0422	$10AF			BCF	_flag, 1
;main.c,508 :: 		alarm();
$0423	$22A1			CALL	_alarm
;main.c,509 :: 		PORTA.F3 = 0;
$0424	$1185			BCF	PORTA, 3
;main.c,510 :: 		}
$0425	$	L_main_78:
;main.c,512 :: 		}
$0425	$2B17			GOTO	L_main_46
;main.c,513 :: 		}
$0426	$2C26			GOTO	$

⌨️ 快捷键说明

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