📄 main.mil
字号:
//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 + -