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

📄 main.asm

📁 Simple Timer/Counter application for cock fighting
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;main.c,142 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
$021B	$1405			BSF	PORTA, 0
;main.c,143 :: 		Short_delay();
$021C	$20CF			CALL	_Short_delay
;main.c,144 :: 		PORTB = 0;
$021D	$0186			CLRF	PORTB, 1
;main.c,145 :: 		PORTA = PORTA & 0xff; //disable the display
$021E	$30FF			MOVLW	255
$021F	$0585			ANDWF	PORTA, 1
;main.c,147 :: 		PORTB = mask (up_time[3]);
$0220	$0823			MOVF	_up_time+3, 0
$0221	$00BA			MOVWF	FARG_mask+0
$0222	$207C			CALL	_mask
$0223	$1303			BCF	STATUS, RP1
$0224	$1283			BCF	STATUS, RP0
$0225	$0870			MOVF	STACK_0, 0
$0226	$0086			MOVWF	PORTB
;main.c,148 :: 		PORTA = PORTA | 0x06; //enable the display of ones millisecond
$0227	$3006			MOVLW	6
$0228	$0485			IORWF	PORTA, 1
;main.c,149 :: 		Short_delay();
$0229	$20CF			CALL	_Short_delay
;main.c,150 :: 		PORTB = 0;
$022A	$0186			CLRF	PORTB, 1
;main.c,151 :: 		PORTA = PORTA & 0xff; //disable the display
$022B	$30FF			MOVLW	255
$022C	$0585			ANDWF	PORTA, 1
;main.c,153 :: 		PORTB = mask (up_time[2]);
$022D	$0822			MOVF	_up_time+2, 0
$022E	$00BA			MOVWF	FARG_mask+0
$022F	$207C			CALL	_mask
$0230	$1303			BCF	STATUS, RP1
$0231	$1283			BCF	STATUS, RP0
$0232	$0870			MOVF	STACK_0, 0
$0233	$0086			MOVWF	PORTB
;main.c,154 :: 		PORTA = PORTA | 0x03; //enable the display of ones millisecond
$0234	$3003			MOVLW	3
$0235	$0485			IORWF	PORTA, 1
;main.c,155 :: 		Short_delay();
$0236	$20CF			CALL	_Short_delay
;main.c,156 :: 		PORTB = 0;
$0237	$0186			CLRF	PORTB, 1
;main.c,157 :: 		PORTA = PORTA & 0xff; //disable the display
$0238	$30FF			MOVLW	255
$0239	$0585			ANDWF	PORTA, 1
;main.c,159 :: 		PORTB = mask(up_time[1]);
$023A	$0821			MOVF	_up_time+1, 0
$023B	$00BA			MOVWF	FARG_mask+0
$023C	$207C			CALL	_mask
$023D	$1303			BCF	STATUS, RP1
$023E	$1283			BCF	STATUS, RP0
$023F	$0870			MOVF	STACK_0, 0
$0240	$0086			MOVWF	PORTB
;main.c,160 :: 		PORTA = PORTA | 0x04; //enable the display of ones millisecond
$0241	$1505			BSF	PORTA, 2
;main.c,161 :: 		Short_delay();
$0242	$20CF			CALL	_Short_delay
;main.c,162 :: 		PORTB = 0;
$0243	$0186			CLRF	PORTB, 1
;main.c,163 :: 		PORTA = PORTA & 0xff; //disable the display
$0244	$30FF			MOVLW	255
$0245	$0585			ANDWF	PORTA, 1
;main.c,165 :: 		if (up_time[0] == 0)Short_delay();
$0246	$0820			MOVF	_up_time, 0
$0247	$3A00			XORLW	0
$0248	$1D03			BTFSS	STATUS, Z
$0249	$2A4C			GOTO	L_offset_up_time_26
$024A	$20CF			CALL	_Short_delay
$024B	$2A52			GOTO	L_offset_up_time_27
$024C	$	L_offset_up_time_26:
;main.c,168 :: 		PORTA = PORTA | 0x02; //enable the display of ones millisecond
$024C	$1303			BCF	STATUS, RP1
$024D	$1283			BCF	STATUS, RP0
$024E	$1485			BSF	PORTA, 1
;main.c,169 :: 		Short_delay();
$024F	$20CF			CALL	_Short_delay
;main.c,170 :: 		PORTA = PORTA & 0xff; //disable the display
$0250	$30FF			MOVLW	255
$0251	$0585			ANDWF	PORTA, 1
;main.c,171 :: 		}
$0252	$	L_offset_up_time_27:
;main.c,172 :: 		}
$0252	$0008			RETURN
$0253	$	_offset_down_time:
;main.c,174 :: 		void offset_down_time() // displays the requested time
;main.c,176 :: 		PORTB = mask (down_time[5]); //load millisecond value to PORTB
$0253	$1303			BCF	STATUS, RP1
$0254	$1283			BCF	STATUS, RP0
$0255	$082B			MOVF	_down_time+5, 0
$0256	$00BA			MOVWF	FARG_mask+0
$0257	$207C			CALL	_mask
$0258	$1303			BCF	STATUS, RP1
$0259	$1283			BCF	STATUS, RP0
$025A	$0870			MOVF	STACK_0, 0
$025B	$0086			MOVWF	PORTB
;main.c,177 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
$025C	$3005			MOVLW	5
$025D	$0485			IORWF	PORTA, 1
;main.c,178 :: 		Short_delay();
$025E	$20CF			CALL	_Short_delay
;main.c,179 :: 		PORTB = 0;
$025F	$0186			CLRF	PORTB, 1
;main.c,180 :: 		PORTA = PORTA & 0xff; //disable the display
$0260	$30FF			MOVLW	255
$0261	$0585			ANDWF	PORTA, 1
;main.c,182 :: 		PORTB = mask (down_time[4]);
$0262	$082A			MOVF	_down_time+4, 0
$0263	$00BA			MOVWF	FARG_mask+0
$0264	$207C			CALL	_mask
$0265	$1303			BCF	STATUS, RP1
$0266	$1283			BCF	STATUS, RP0
$0267	$0870			MOVF	STACK_0, 0
$0268	$0086			MOVWF	PORTB
;main.c,183 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
$0269	$1405			BSF	PORTA, 0
;main.c,184 :: 		Short_delay();
$026A	$20CF			CALL	_Short_delay
;main.c,185 :: 		PORTB = 0;
$026B	$0186			CLRF	PORTB, 1
;main.c,186 :: 		PORTA = PORTA & 0xff; //disable the display
$026C	$30FF			MOVLW	255
$026D	$0585			ANDWF	PORTA, 1
;main.c,188 :: 		PORTB = mask (down_time[3]);
$026E	$0829			MOVF	_down_time+3, 0
$026F	$00BA			MOVWF	FARG_mask+0
$0270	$207C			CALL	_mask
$0271	$1303			BCF	STATUS, RP1
$0272	$1283			BCF	STATUS, RP0
$0273	$0870			MOVF	STACK_0, 0
$0274	$0086			MOVWF	PORTB
;main.c,189 :: 		PORTA = PORTA | 0x06; //enable the display of ones millisecond
$0275	$3006			MOVLW	6
$0276	$0485			IORWF	PORTA, 1
;main.c,190 :: 		Short_delay();
$0277	$20CF			CALL	_Short_delay
;main.c,191 :: 		PORTB = 0;
$0278	$0186			CLRF	PORTB, 1
;main.c,192 :: 		PORTA = PORTA & 0xff; //disable the display
$0279	$30FF			MOVLW	255
$027A	$0585			ANDWF	PORTA, 1
;main.c,194 :: 		PORTB = mask (down_time[2]);
$027B	$0828			MOVF	_down_time+2, 0
$027C	$00BA			MOVWF	FARG_mask+0
$027D	$207C			CALL	_mask
$027E	$1303			BCF	STATUS, RP1
$027F	$1283			BCF	STATUS, RP0
$0280	$0870			MOVF	STACK_0, 0
$0281	$0086			MOVWF	PORTB
;main.c,195 :: 		PORTA = PORTA | 0x03; //enable the display of ones millisecond
$0282	$3003			MOVLW	3
$0283	$0485			IORWF	PORTA, 1
;main.c,196 :: 		Short_delay();
$0284	$20CF			CALL	_Short_delay
;main.c,197 :: 		PORTB = 0;
$0285	$0186			CLRF	PORTB, 1
;main.c,198 :: 		PORTA = PORTA & 0xff; //disable the display
$0286	$30FF			MOVLW	255
$0287	$0585			ANDWF	PORTA, 1
;main.c,200 :: 		PORTB = mask(down_time[1]);
$0288	$0827			MOVF	_down_time+1, 0
$0289	$00BA			MOVWF	FARG_mask+0
$028A	$207C			CALL	_mask
$028B	$1303			BCF	STATUS, RP1
$028C	$1283			BCF	STATUS, RP0
$028D	$0870			MOVF	STACK_0, 0
$028E	$0086			MOVWF	PORTB
;main.c,201 :: 		PORTA = PORTA | 0x04; //enable the display of ones millisecond
$028F	$1505			BSF	PORTA, 2
;main.c,202 :: 		Short_delay();
$0290	$20CF			CALL	_Short_delay
;main.c,203 :: 		PORTB = 0;
$0291	$0186			CLRF	PORTB, 1
;main.c,204 :: 		PORTA = PORTA & 0xff; //disable the display
$0292	$30FF			MOVLW	255
$0293	$0585			ANDWF	PORTA, 1
;main.c,206 :: 		if (down_time[0]== 0)Short_delay();
$0294	$0826			MOVF	_down_time, 0
$0295	$3A00			XORLW	0
$0296	$1D03			BTFSS	STATUS, Z
$0297	$2A9A			GOTO	L_offset_down_time_28
$0298	$20CF			CALL	_Short_delay
$0299	$2AA0			GOTO	L_offset_down_time_29
$029A	$	L_offset_down_time_28:
;main.c,209 :: 		PORTA = PORTA | 0x02; //enable the display of ones millisecond
$029A	$1303			BCF	STATUS, RP1
$029B	$1283			BCF	STATUS, RP0
$029C	$1485			BSF	PORTA, 1
;main.c,210 :: 		Short_delay();
$029D	$20CF			CALL	_Short_delay
;main.c,211 :: 		PORTA = PORTA & 0xff; //disable the display
$029E	$30FF			MOVLW	255
$029F	$0585			ANDWF	PORTA, 1
;main.c,212 :: 		}
$02A0	$	L_offset_down_time_29:
;main.c,213 :: 		}
$02A0	$0008			RETURN
$02A1	$	_alarm:
;main.c,321 :: 		void alarm()
;main.c,323 :: 		delay = 2000;
$02A1	$30D0			MOVLW	208
$02A2	$1303			BCF	STATUS, RP1
$02A3	$1283			BCF	STATUS, RP0
$02A4	$00B1			MOVWF	_delay
$02A5	$3007			MOVLW	7
$02A6	$00B2			MOVWF	_delay+1
;main.c,324 :: 		do {
$02A7	$	L_alarm_34:
;main.c,325 :: 		if (!flag.f0)
$02A7	$1303			BCF	STATUS, RP1
$02A8	$1283			BCF	STATUS, RP0
$02A9	$182F			BTFSC	_flag, 0
$02AA	$2AAC			GOTO	L_alarm_36
;main.c,327 :: 		offset_up_time2();
$02AB	$20FB			CALL	_offset_up_time2
;main.c,328 :: 		}
$02AC	$	L_alarm_36:
;main.c,329 :: 		if (flag.f0)
$02AC	$1303			BCF	STATUS, RP1
$02AD	$1283			BCF	STATUS, RP0
$02AE	$1C2F			BTFSS	_flag, 0
$02AF	$2AB1			GOTO	L_alarm_37
;main.c,331 :: 		offset_down_time2();
$02B0	$214C			CALL	_offset_down_time2
;main.c,332 :: 		}
$02B1	$	L_alarm_37:
;main.c,333 :: 		delay--;
$02B1	$3001			MOVLW	1
$02B2	$1303			BCF	STATUS, RP1
$02B3	$1283			BCF	STATUS, RP0
$02B4	$02B1			SUBWF	_delay, 1
$02B5	$1C03			BTFSS	STATUS, C
$02B6	$03B2			DECF	_delay+1, 1
;main.c,334 :: 		} while (delay > 0);
$02B7	$0832			MOVF	_delay+1, 0
$02B8	$3C00			SUBLW	0
$02B9	$1D03			BTFSS	STATUS, Z
$02BA	$2ABD			GOTO	L_alarm_80
$02BB	$0831			MOVF	_delay, 0
$02BC	$3C00			SUBLW	0
$02BD	$	L_alarm_80:
$02BD	$1C03			BTFSS	STATUS, C
$02BE	$2AA7			GOTO	L_alarm_34
$02BF	$	L_alarm_35:
;main.c,335 :: 		PORTA.F3 = 0;
$02BF	$1303			BCF	STATUS, RP1
$02C0	$1283			BCF	STATUS, RP0
$02C1	$1185			BCF	PORTA, 3
;main.c,336 :: 		}
$02C2	$0008			RETURN
$02C3	$	_main:
;main.c,358 :: 		void main ()
;main.c,360 :: 		PORTA = 0;    // clear porta
$02C3	$1303			BCF	STATUS, RP1
$02C4	$1283			BCF	STATUS, RP0
$02C5	$0185			CLRF	PORTA, 1
;main.c,361 :: 		PORTB = 0;    // clear portb
$02C6	$0186			CLRF	PORTB, 1
;main.c,362 :: 		TRISA = 0x30; // PORTA <4:5> as inputs the rest as outputs
$02C7	$3030			MOVLW	48
$02C8	$1683			BSF	STATUS, RP0
$02C9	$0085			MOVWF	TRISA
;main.c,363 :: 		TRISB = 0;    // make PORTB as outputs
$02CA	$0186			CLRF	TRISB, 1
;main.c,364 :: 		PORTA = 0x07; // initialize the multiplexer
$02CB	$3007			MOVLW	7
$02CC	$1283			BCF	STATUS, RP0
$02CD	$0085			MOVWF	PORTA
;main.c,365 :: 		PORTB = 0;    // clear  portb
$02CE	$0186			CLRF	PORTB, 1
;main.c,366 :: 		OPTION_REG = 0x08; // used WDT for the prescale at 1:1
$02CF	$3008			MOVLW	8
$02D0	$1683			BSF	STATUS, RP0
$02D1	$0081			MOVWF	OPTION_REG
;main.c,367 :: 		INTCON.GIE = 1; // enable global interrupts
$02D2	$178B			BSF	INTCON, 7
;main.c,368 :: 		load_default_values(); // intialize registers
$02D3	$219D			CALL	_load_default_values
;main.c,369 :: 		flag.f0 = 0; // set default mode as up counter
$02D4	$102F			BCF	_flag, 0
;main.c,370 :: 		flag.f1 = 0; // clear lapsed flag
$02D5	$10AF			BCF	_flag, 1
;main.c,371 :: 		oem_limit(); // for safety purposes value must be set manually
$02D6	$21AD			CALL	_oem_limit
;main.c,374 :: 		delay = 3;
$02D7	$3003			MOVLW	3
$02D8	$1283			BCF	STATUS, RP0
$02D9	$00B1			MOVWF	_delay
$02DA	$3000			MOVLW	0
$02DB	$00B2			MOVWF	_delay+1
;main.c,375 :: 		do {
$02DC	$	L_main_42:
;main.c,376 :: 		repitition = 250;
$02DC	$30FA			MOVLW	250
$02DD	$1303			BCF	STATUS, RP1
$02DE	$1283			BCF	STATUS, RP0
$02DF	$00B3			MOVWF	_repitition
$02E0	$01B4			CLRF	_repitition+1
;main.c,377 :: 		do {
$02E1	$	L_main_44:
;main.c,378 :: 		PORTB = mask (11); //load millisecond value to PORTB
$02E1	$300B			MOVLW	11
$02E2	$1303			BCF	STATUS, RP1
$02E3	$1283			BCF	STATUS, RP0
$02E4	$00BA			MOVWF	FARG_mask+0
$02E5	$207C			CALL	_mask
$02E6	$1303			BCF	STATUS, RP1
$02E7	$1283			BCF	STATUS, RP0
$02E8	$0870			MOVF	STACK_0, 0
$02E9	$0086			MOVWF	PORTB
;main.c,379 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
$02EA	$1405			BSF	PORTA, 0
;main.c,380 :: 		Short_delay();
$02EB	$20CF			CALL	_Short_delay
;main.c,381 :: 		PORTB = 0;
$02EC	$0186			CLRF	PORTB, 1
;main.c,382 :: 		PORTA = PORTA & 0xff; //disable the display
$02ED	$30FF			MOVLW	255
$02EE	$0585			ANDWF	PORTA, 1
;main.c,383 :: 		PORTB = mask (1); //load millisecond value to PORTB
$02EF	$3001			MOVLW	1
$02F0	$00BA			MOVWF	FARG_mask+0
$02F1	$207C			CALL	_mask
$02F2	$1303			BCF	STATUS, RP1
$02F3	$1283			BCF	STATUS, RP0
$02F4	$0870			MOVF	STACK_0, 0
$02F5	$0086			MOVWF	PORTB
;main.c,384 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
$02F6	$3005			MOVLW	5
$02F7	$0485			IORWF	PORTA, 1
;main.c,385 :: 		Short_delay();
$02F8	$20CF			CALL	_Short_delay
;main.c,386 :: 		PORTB = 0;
$02F9	$0186			CLRF	PORTB, 1
;main.c,387 :: 		PORTA = PORTA & 0xff; //disable the display
$02FA	$30FF			MOVLW	255
$02FB	$0585			ANDWF	PORTA, 1
;main.c,388 :: 		repitition--;
$02FC	$3001			MOVLW	1
$02FD	$02B3			SUBWF	_repitition, 1
$02FE	$1C03			BTFSS	STATUS, C
$02FF	$03B4			DECF	_repitition+1, 1
;main.c,389 :: 		} while (repitition > 0);
$0300	$0834			MOVF	_repitition+1, 0
$0301	$3C00			SUBLW	0
$0302	$1D03			BTFSS	STATUS, Z
$0303	$2B06			GOTO	L_main_81
$0304	$0833			MOVF	_repitition, 0
$0305	$3C00			SUBLW	0
$0306	$	L_main_81:
$0306	$1C03			BTFSS	STATUS, C
$0307	$2AE1			GOTO	L_main_44
$0308	$	L_main_45:
;main.c,390 :: 		Delay_sec();
$0308	$21E3			CALL	_Delay_sec
;main.c,391 :: 		delay--;
$0309	$3001			MOVLW	1
$030A	$1303			BCF	STATUS, RP1
$030B	$1283			BCF	STATUS, RP0
$030C	$02B1			SUBWF	_delay, 1
$030D	$1C03			BTFSS	STATUS, C
$030E	$03B2			DECF	_delay+1, 1
;main.c,392 :: 		} while (delay > 0); //repeat until  delay is zero
$030F	$0832			MOVF	_delay+1, 0
$0310	$3C00			SUBLW	0
$0311	$1D03			BTFSS	STATUS, Z
$0312	$2B15			GOTO	L_main_82
$0313	$0831			MOVF	_delay, 0
$0314	$3C00			SUBLW	0
$0315	$	L_main_82:
$0315	$1C03			BTFSS	STATUS, C
$0316	$2ADC			GOTO	L_main_42
$0317	$	L_main_43:
;main.c,394 :: 		while (1)
$0317	$	L_main_46:
;main.c,396 :: 		if (!flag.f0) offset_up_time();
$0317	$1303			BCF	STATUS, RP1
$0318	$1283			BCF	STATUS, RP0
$0319	$182F			BTFSC	_flag, 0
$031A	$2B1C			GOTO	L_main_48
$031B	$2205			CALL	_offset_up_time
$031C	$	L_main_48:
;main.c,397 :: 		if (flag.f0) offset_down_time();
$031C	$1303			BCF	STATUS, RP1
$031D	$1283			BCF	STATUS, RP0
$031E	$1C2F			BTFSS	_flag, 0
$031F	$2B21			GOTO	L_main_49
$0320	$2253			CALL	_offset_down_time
$0321	$	L_main_49:

⌨️ 快捷键说明

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