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

📄 main.mil

📁 Simple Timer/Counter application for cock fighting
💻 MIL
📖 第 1 页 / 共 2 页
字号:
//main.c,274 :: 		PORTB = 0;
	PORTB <- 0
//main.c,275 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,277 :: 		PORTB = mask (down_time[2]);
	FARG_mask+0 <- _down_time+2
	CALL _mask
	PORTB <- STACK_0
//main.c,278 :: 		PORTA = PORTA | 0x0b; //enable the display of ones millisecond
	PORTA <-  PORTA | 11
	PORTA <- PORTA
//main.c,279 :: 		Short_delay();
	CALL _Short_delay
//main.c,280 :: 		PORTB = 0;
	PORTB <- 0
//main.c,281 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,283 :: 		PORTB = mask(down_time[1]);
	FARG_mask+0 <- _down_time+1
	CALL _mask
	PORTB <- STACK_0
//main.c,284 :: 		PORTA = PORTA | 0x0c; //enable the display of ones millisecond
	PORTA <-  PORTA | 12
	PORTA <- PORTA
//main.c,285 :: 		Short_delay();
	CALL _Short_delay
//main.c,286 :: 		PORTB = 0;
	PORTB <- 0
//main.c,287 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,289 :: 		if (down_time[0]== 0)Short_delay();
	if ( _down_time != 0) then goto L_offset_down_time2_32
	CALL _Short_delay
	goto	L_offset_down_time2_33
L_offset_down_time2_32:
//main.c,292 :: 		PORTA = PORTA | 0x0a; //enable the display of ones millisecond
	PORTA <-  PORTA | 10
	PORTA <- PORTA
//main.c,293 :: 		Short_delay();
	CALL _Short_delay
//main.c,294 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,295 :: 		}
L_offset_down_time2_33:
  end

_Delay_sec:
  begin
//main.c,301 :: 		Delay_ms (350);
	asm: MOVLW	2
	asm: MOVWF	STACK_12
	asm: MOVLW	255
	asm: MOVWF	STACK_11
	asm: MOVLW	255
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_12,F
	asm: GOTO	$+2
	asm: GOTO	$+8
	asm: DECFSZ	STACK_11,F
	asm: GOTO	$+2
	asm: GOTO	$+4
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: GOTO	$-5
	asm: GOTO	$-9
	asm: MOVLW	200
	asm: MOVWF	STACK_11
	asm: MOVLW	255
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_11,F
	asm: GOTO	$+2
	asm: GOTO	$+4
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: GOTO	$-5
	asm: MOVLW	87
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: nop
  end

_load_default_values:
  begin
//main.c,306 :: 		up_time [0] = 0;
	_up_time <- 0
//main.c,307 :: 		up_time [1] = 0;
	_up_time+1 <- 0
//main.c,308 :: 		up_time [2] = 0;
	_up_time+2 <- 0
//main.c,309 :: 		up_time [3] = 0;
	_up_time+3 <- 0
//main.c,310 :: 		up_time [4] = 0;
	_up_time+4 <- 0
//main.c,311 :: 		up_time [5] = 0;
	_up_time+5 <- 0
//main.c,312 :: 		down_time[0] = 1;
	_down_time <- 1
//main.c,313 :: 		down_time[1] = 0;
	_down_time+1 <- 0
//main.c,314 :: 		down_time[2] = 0;
	_down_time+2 <- 0
//main.c,315 :: 		down_time[3] = 0;
	_down_time+3 <- 0
//main.c,316 :: 		down_time[4] = 0;
	_down_time+4 <- 0
//main.c,317 :: 		down_time[5] = 0;
	_down_time+5 <- 0
  end

_alarm:
  begin
//main.c,323 :: 		delay = 2000;
	_delay <- 2000
//main.c,324 :: 		do {
L_alarm_34:
//main.c,325 :: 		if (!flag.f0)
	if (_flag) then goto L_alarm_36
//main.c,327 :: 		offset_up_time2();
	CALL _offset_up_time2
//main.c,328 :: 		}
L_alarm_36:
//main.c,329 :: 		if (flag.f0)
	if (!_flag) then goto L_alarm_37
//main.c,331 :: 		offset_down_time2();
	CALL _offset_down_time2
//main.c,332 :: 		}
L_alarm_37:
//main.c,333 :: 		delay--;
	_delay <-  _delay - 1
	_delay <- _delay
//main.c,334 :: 		} while (delay > 0);
	if ( _delay > 0) then goto L_alarm_34
L_alarm_35:
//main.c,335 :: 		PORTA.F3 = 0;
	PORTA <-  PORTA & -9
  end

_oem_limit:
  begin
//main.c,341 :: 		check_value = EEprom_Read(0x00);
	FARG_EEprom_read+0 <- 0
	CALL _EEprom_read
	_check_value <- STACK_0
//main.c,342 :: 		Delay_ms (50);
	asm: MOVLW	65
	asm: MOVWF	STACK_11
	asm: MOVLW	255
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_11,F
	asm: GOTO	$+2
	asm: GOTO	$+4
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: GOTO	$-5
	asm: MOVLW	195
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: nop
//main.c,343 :: 		if (check_value == 0)
	if ( _check_value != 0) then goto L_oem_limit_38
//main.c,345 :: 		do {
L_oem_limit_39:
//main.c,346 :: 		PORTB = 0;
	PORTB <- 0
//main.c,347 :: 		PORTA = 0;
	PORTA <- 0
//main.c,348 :: 		} while(1);
	goto	L_oem_limit_39
//main.c,349 :: 		}
L_oem_limit_38:
//main.c,352 :: 		check_value--;
	_check_value <-  _check_value - 1
	_check_value <- _check_value
//main.c,353 :: 		EEprom_Write (0x00,check_value);
	FARG_EEprom_write+0 <- 0
	FARG_EEprom_write+1 <- _check_value
	CALL _EEprom_write
//main.c,354 :: 		Delay_ms (50);
	asm: MOVLW	65
	asm: MOVWF	STACK_11
	asm: MOVLW	255
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_11,F
	asm: GOTO	$+2
	asm: GOTO	$+4
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: GOTO	$-5
	asm: MOVLW	195
	asm: MOVWF	STACK_10
	asm: DECFSZ	STACK_10,F
	asm: GOTO	$-1
	asm: nop
//main.c,355 :: 		}
L_oem_limit_41:
  end

_main:
  begin
//main.c,360 :: 		PORTA = 0;    // clear porta
	PORTA <- 0
//main.c,361 :: 		PORTB = 0;    // clear portb
	PORTB <- 0
//main.c,362 :: 		TRISA = 0x30; // PORTA <4:5> as inputs the rest as outputs
	TRISA <- 48
//main.c,363 :: 		TRISB = 0;    // make PORTB as outputs
	TRISB <- 0
//main.c,364 :: 		PORTA = 0x07; // initialize the multiplexer
	PORTA <- 7
//main.c,365 :: 		PORTB = 0;    // clear  portb
	PORTB <- 0
//main.c,366 :: 		OPTION_REG = 0x08; // used WDT for the prescale at 1:1
	OPTION_REG <- 8
//main.c,367 :: 		INTCON.GIE = 1; // enable global interrupts
	INTCON <-  INTCON | 128
//main.c,368 :: 		load_default_values(); // intialize registers
	CALL _load_default_values
//main.c,369 :: 		flag.f0 = 0; // set default mode as up counter
	_flag <-  _flag & -2
//main.c,370 :: 		flag.f1 = 0; // clear lapsed flag
	_flag <-  _flag & -3
//main.c,371 :: 		oem_limit(); // for safety purposes value must be set manually
	CALL _oem_limit
//main.c,374 :: 		delay = 3;
	_delay <- 3
//main.c,375 :: 		do {
L_main_42:
//main.c,376 :: 		repitition = 250;
	_repitition <- 250
//main.c,377 :: 		do {
L_main_44:
//main.c,378 :: 		PORTB = mask (11); //load millisecond value to PORTB
	FARG_mask+0 <- 11
	CALL _mask
	PORTB <- STACK_0
//main.c,379 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
	PORTA <-  PORTA | 1
	PORTA <- PORTA
//main.c,380 :: 		Short_delay();
	CALL _Short_delay
//main.c,381 :: 		PORTB = 0;
	PORTB <- 0
//main.c,382 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,383 :: 		PORTB = mask (1); //load millisecond value to PORTB
	FARG_mask+0 <- 1
	CALL _mask
	PORTB <- STACK_0
//main.c,384 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
	PORTA <-  PORTA | 5
	PORTA <- PORTA
//main.c,385 :: 		Short_delay();
	CALL _Short_delay
//main.c,386 :: 		PORTB = 0;
	PORTB <- 0
//main.c,387 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,388 :: 		repitition--;
	_repitition <-  _repitition - 1
	_repitition <- _repitition
//main.c,389 :: 		} while (repitition > 0);
	if ( _repitition > 0) then goto L_main_44
L_main_45:
//main.c,390 :: 		Delay_sec();
	CALL _Delay_sec
//main.c,391 :: 		delay--;
	_delay <-  _delay - 1
	_delay <- _delay
//main.c,392 :: 		} while (delay > 0); //repeat until  delay is zero
	if ( _delay > 0) then goto L_main_42
L_main_43:
//main.c,394 :: 		while (1)
L_main_46:
//main.c,396 :: 		if (!flag.f0) offset_up_time();
	if (_flag) then goto L_main_48
	CALL _offset_up_time
L_main_48:
//main.c,397 :: 		if (flag.f0) offset_down_time();
	if (!_flag) then goto L_main_49
	CALL _offset_down_time
L_main_49:
//main.c,399 :: 		if ((PORTA & 0x30) == 0x30)// change mode button has been triggered
	STACK_1 <-  PORTA & 48
	if ( STACK_1 != 48) then goto L_main_50
//main.c,401 :: 		if (!INTCON.T0IE) // if the timer is off
	if (INTCON) then goto L_main_51
//main.c,403 :: 		delay = 3;
	_delay <- 3
//main.c,404 :: 		if (!flag.f0)
	if (_flag) then goto L_main_52
//main.c,406 :: 		flag.f0 = 1; //change mode as down counter
	_flag <-  _flag | 1
//main.c,407 :: 		do {
L_main_53:
//main.c,408 :: 		repitition = 250;
	_repitition <- 250
//main.c,409 :: 		do {
L_main_55:
//main.c,410 :: 		PORTB = mask (11); //load millisecond value to PORTB
	FARG_mask+0 <- 11
	CALL _mask
	PORTB <- STACK_0
//main.c,411 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
	PORTA <-  PORTA | 1
	PORTA <- PORTA
//main.c,412 :: 		Short_delay();
	CALL _Short_delay
//main.c,413 :: 		PORTB = 0;
	PORTB <- 0
//main.c,414 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,415 :: 		PORTB = mask (2); //load millisecond value to PORTB
	FARG_mask+0 <- 2
	CALL _mask
	PORTB <- STACK_0
//main.c,416 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
	PORTA <-  PORTA | 5
	PORTA <- PORTA
//main.c,417 :: 		Short_delay();
	CALL _Short_delay
//main.c,418 :: 		PORTB = 0;
	PORTB <- 0
//main.c,419 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,420 :: 		repitition--;
	_repitition <-  _repitition - 1
	_repitition <- _repitition
//main.c,421 :: 		} while (repitition > 0);
	if ( _repitition > 0) then goto L_main_55
L_main_56:
//main.c,422 :: 		Delay_sec();
	CALL _Delay_sec
//main.c,423 :: 		delay--;
	_delay <-  _delay - 1
	_delay <- _delay
//main.c,424 :: 		} while (delay > 0);
	if ( _delay > 0) then goto L_main_53
L_main_54:
//main.c,425 :: 		goto exit1
	goto	___main_exit1
//main.c,426 :: 		}
L_main_52:
//main.c,427 :: 		if (flag.f0)
	if (!_flag) then goto L_main_57
//main.c,429 :: 		flag.f0 = 0; //change mode as up counter
	_flag <-  _flag & -2
//main.c,430 :: 		do {
L_main_58:
//main.c,431 :: 		repitition = 250;
	_repitition <- 250
//main.c,432 :: 		do {
L_main_60:
//main.c,433 :: 		PORTB = mask (11); //load millisecond value to PORTB
	FARG_mask+0 <- 11
	CALL _mask
	PORTB <- STACK_0
//main.c,434 :: 		PORTA = PORTA | 0x01; //enable the display of ones millisecond
	PORTA <-  PORTA | 1
	PORTA <- PORTA
//main.c,435 :: 		Short_delay();
	CALL _Short_delay
//main.c,436 :: 		PORTB = 0;
	PORTB <- 0
//main.c,437 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,438 :: 		PORTB = mask (1); //load millisecond value to PORTB
	FARG_mask+0 <- 1
	CALL _mask
	PORTB <- STACK_0
//main.c,439 :: 		PORTA = PORTA | 0x05; //enable the display of ones millisecond
	PORTA <-  PORTA | 5
	PORTA <- PORTA
//main.c,440 :: 		Short_delay();
	CALL _Short_delay
//main.c,441 :: 		PORTB = 0;
	PORTB <- 0
//main.c,442 :: 		PORTA = PORTA & 0xff; //disable the display
	PORTA <-  PORTA & 255
	PORTA <- PORTA
//main.c,443 :: 		repitition--;
	_repitition <-  _repitition - 1
	_repitition <- _repitition
//main.c,444 :: 		} while (repitition > 0);
	if ( _repitition > 0) then goto L_main_60
L_main_61:
//main.c,445 :: 		Delay_sec();
	CALL _Delay_sec
//main.c,446 :: 		delay--;
	_delay <-  _delay - 1
	_delay <- _delay
//main.c,447 :: 		} while (delay > 0);
	if ( _delay > 0) then goto L_main_58
L_main_59:
//main.c,448 :: 		}
L_main_57:
//main.c,449 :: 		exit1: load_default_values();
___main_exit1:
	CALL _load_default_values
//main.c,450 :: 		flag.f2 = 1;//set reset flag
	_flag <-  _flag | 4
//main.c,451 :: 		}
L_main_51:
//main.c,452 :: 		}
L_main_50:
//main.c,456 :: 		if ((PORTA & 0x30)== 0x20) // stop/show button has been triggered
	STACK_1 <-  PORTA & 48
	if ( STACK_1 != 32) then goto L_main_62
//main.c,458 :: 		if (INTCON.T0IE)
	if (!INTCON) then goto L_main_63
//main.c,460 :: 		INTCON.T0IE = 0;
	INTCON <-  INTCON & -33
//main.c,461 :: 		flag.f1 = 0; // flag.f1 is used as the the lapsed flag
	_flag <-  _flag & -3
//main.c,462 :: 		alarm();
	CALL _alarm
//main.c,463 :: 		goto exit2
	goto	___main_exit2
//main.c,464 :: 		}
L_main_63:
//main.c,465 :: 		if (!INTCON.T0IE)
	if (INTCON) then goto L_main_64
//main.c,467 :: 		delay = 500;
	_delay <- 500
//main.c,468 :: 		do {
L_main_65:
//main.c,469 :: 		if (flag.f0) offset_up_time();
	if (!_flag) then goto L_main_67
	CALL _offset_up_time
L_main_67:
//main.c,470 :: 		if (!flag.f0) offset_down_time();
	if (_flag) then goto L_main_68
	CALL _offset_down_time
L_main_68:
//main.c,471 :: 		delay--;
	_delay <-  _delay - 1
	_delay <- _delay
//main.c,472 :: 		if ((PORTA & 0x20) == 0x20) delay = 500;
	STACK_1 <-  PORTA & 32
	if ( STACK_1 != 32) then goto L_main_69
	_delay <- 500
L_main_69:
//main.c,473 :: 		} while (delay >0);
	if ( _delay > 0) then goto L_main_65
L_main_66:
//main.c,474 :: 		}
L_main_64:
//main.c,475 :: 		exit2: PORTA.F3 = 0;
___main_exit2:
	PORTA <-  PORTA & -9
//main.c,476 :: 		}
L_main_62:
//main.c,480 :: 		if ((PORTA & 0x30) == 0x10) // start button bas been triggered
	STACK_1 <-  PORTA & 48
	if ( STACK_1 != 16) then goto L_main_70
//main.c,482 :: 		if (!INTCON.T0IE && flag.f2 )
	if (INTCON) then goto L_main_73
	STACK_1 <-  _flag & 4
	STACK_0 <- 2
	STACK_1 <-  STACK_1 shr STACK_0
	if (!STACK_1) then goto L_main_73
L659_ex_L_main_73:
//main.c,484 :: 		lapsed_count = 0;
	_lapsed_count <- 0
//main.c,485 :: 		INTCON.T0IE = 1;
	INTCON <-  INTCON | 32
//main.c,486 :: 		TMR0 = 0;
	TMR0 <- 0
//main.c,487 :: 		flag.f1 = 0;
	_flag <-  _flag & -3
//main.c,488 :: 		flag.f2 = 0;
	_flag <-  _flag & -5
//main.c,489 :: 		}
L_main_73:
//main.c,490 :: 		}
L_main_70:
//main.c,494 :: 		if (PORTB.F0) // reset button has been triggerred
	if (!PORTB) then goto L_main_74
//main.c,496 :: 		if (!INTCON.T0IE)
	if (INTCON) then goto L_main_75
//main.c,498 :: 		load_default_values();
	CALL _load_default_values
//main.c,499 :: 		flag.f2 = 1;//set the reset flag
	_flag <-  _flag | 4
//main.c,500 :: 		}
L_main_75:
//main.c,501 :: 		}
L_main_74:
//main.c,504 :: 		if (flag.f1 && !INTCON.T0IE)// lapsed time indication
	STACK_1 <-  _flag & 2
	STACK_0 <- 1
	STACK_1 <-  STACK_1 shr STACK_0
	if (!STACK_1) then goto L_main_78
	if (INTCON) then goto L_main_78
L687_ex_L_main_78:
//main.c,506 :: 		INTCON.T0IE = 0;
	INTCON <-  INTCON & -33
//main.c,507 :: 		flag.f1 = 0; // flag.f1 is used as the the lapsed flag
	_flag <-  _flag & -3
//main.c,508 :: 		alarm();
	CALL _alarm
//main.c,509 :: 		PORTA.F3 = 0;
	PORTA <-  PORTA & -9
//main.c,510 :: 		}
L_main_78:
//main.c,512 :: 		}
	goto	L_main_46
  end

⌨️ 快捷键说明

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