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

📄 main.mil

📁 Firmware that controls a sliding door via a GSM modem (Open and Close the door)
💻 MIL
📖 第 1 页 / 共 3 页
字号:
	FARG_Lcd_Cmd+0 <- 12
	CALL _Lcd_Cmd
//main.c,546 :: 		Delay1s();
	CALL _Delay1s
//main.c,547 :: 		Delay1s();
	CALL _Delay1s
//main.c,548 :: 		Delay1s();
	CALL _Delay1s
//main.c,549 :: 		gsm_modem_init();
	CALL _gsm_modem_init
//main.c,550 :: 		offset_message(1,0);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 0
	CALL _offset_message
//main.c,551 :: 		Delay1s();
	CALL _Delay1s
//main.c,552 :: 		Delay1s();
	CALL _Delay1s
//main.c,553 :: 		Delay1s();
	CALL _Delay1s
//main.c,554 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,555 :: 		door_stat = close ;
	_door_stat <- 0
//main.c,556 :: 		while (1)
L_main_96:
//main.c,558 :: 		buffer = read_keypad(); // read the keypad if pressed
	CALL _read_keypad
	_buffer <- STACK_0
//main.c,559 :: 		if (buffer == '*')
	if ( STACK_0 != 42) then goto L_main_98
//main.c,561 :: 		offset_message(1,0x10);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 16
	CALL _offset_message
//main.c,562 :: 		clear_code_locations();
	CALL _clear_code_locations
//main.c,563 :: 		byte_count1 = 0;
	_byte_count1 <- 0
//main.c,564 :: 		LCD_Chr(2,5,' ');
	FARG_Lcd_Chr+0 <- 2
	FARG_Lcd_Chr+1 <- 5
	FARG_Lcd_Chr+2 <- 32
	CALL _Lcd_Chr
//main.c,565 :: 		while (byte_count1 < 6 && buffer != '#')
L_main_99:
	if ( _byte_count1 >= 6) then goto L_main_100
	if ( _buffer = 35) then goto L_main_100
L771_ex_L_main_100:
//main.c,567 :: 		buffer = read_keypad();
	CALL _read_keypad
	_buffer <- STACK_0
//main.c,568 :: 		if (buffer != '*' && buffer != '#' && buffer != 0)
	if ( STACK_0 = 42) then goto L_main_105
	if ( _buffer = 35) then goto L_main_105
	if ( _buffer = 0) then goto L_main_105
L786_ex_L_main_105:
//main.c,570 :: 		temp_password[byte_count1] = buffer;
	STACK_0 <-  0 + _byte_count1
	*STACK_0 <- _buffer
//main.c,571 :: 		LCD_Chr_Cp('*');
	FARG_Lcd_Chr_CP+0 <- 42
	CALL _Lcd_Chr_CP
//main.c,572 :: 		byte_count1++;
	_byte_count1 <-  _byte_count1 + 1
	_byte_count1 <- _byte_count1
//main.c,573 :: 		}
L_main_105:
//main.c,574 :: 		}
	goto	L_main_99
L_main_100:
//main.c,575 :: 		get_imbedded_password();
	CALL _get_imbedded_password
//main.c,576 :: 		buffer = compare_codes();
	CALL _compare_codes
	_buffer <- STACK_0
//main.c,577 :: 		if (buffer)
	if (!STACK_0) then goto L_main_106
//main.c,579 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,580 :: 		if (door_stat == close)
	if ( _door_stat != 0) then goto L_main_107
//main.c,582 :: 		offset_message(1,0x30);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 48
	CALL _offset_message
//main.c,583 :: 		offset_message(2,0x80);
	FARG_offset_message+0 <- 2
	FARG_offset_message+1 <- 128
	CALL _offset_message
//main.c,584 :: 		}
L_main_107:
//main.c,585 :: 		if (door_stat == open)
	if ( _door_stat != 1) then goto L_main_108
//main.c,587 :: 		offset_message(1,0xd0);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 208
	CALL _offset_message
//main.c,588 :: 		offset_message(2,0x80);
	FARG_offset_message+0 <- 2
	FARG_offset_message+1 <- 128
	CALL _offset_message
//main.c,589 :: 		}
L_main_108:
//main.c,590 :: 		while (buffer != '#')
L_main_109:
	if ( _buffer = 35) then goto L_main_110
//main.c,592 :: 		buffer = read_keypad();
	CALL _read_keypad
	_buffer <- STACK_0
//main.c,593 :: 		if (buffer == '0' && door_stat == close)
	if ( STACK_0 != 48) then goto L_main_113
	if ( _door_stat != 0) then goto L_main_113
L835_ex_L_main_113:
//main.c,595 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,596 :: 		open_door();
	CALL _open_door
//main.c,597 :: 		door_stat = open;
	_door_stat <- 1
//main.c,598 :: 		goto exit1
	goto	___main_exit1
//main.c,599 :: 		}
L_main_113:
//main.c,600 :: 		if (buffer == '*')
	if ( _buffer != 42) then goto L_main_114
//main.c,602 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,603 :: 		offset_message(1,0x90);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 144
	CALL _offset_message
//main.c,604 :: 		byte_count1 = 0;
	_byte_count1 <- 0
//main.c,605 :: 		LCD_Chr(2,5,' ');
	FARG_Lcd_Chr+0 <- 2
	FARG_Lcd_Chr+1 <- 5
	FARG_Lcd_Chr+2 <- 32
	CALL _Lcd_Chr
//main.c,606 :: 		while (byte_count1 < 6 && buffer != '#')
L_main_115:
	if ( _byte_count1 >= 6) then goto L_main_116
	if ( _buffer = 35) then goto L_main_116
L865_ex_L_main_116:
//main.c,608 :: 		buffer = read_keypad();
	CALL _read_keypad
	_buffer <- STACK_0
//main.c,609 :: 		if (buffer != '*' && buffer != '#' && buffer != 0)
	if ( STACK_0 = 42) then goto L_main_121
	if ( _buffer = 35) then goto L_main_121
	if ( _buffer = 0) then goto L_main_121
L880_ex_L_main_121:
//main.c,611 :: 		password[byte_count1] = buffer;
	STACK_0 <-  0 + _byte_count1
	*STACK_0 <- _buffer
//main.c,612 :: 		LCD_Chr_Cp('*');
	FARG_Lcd_Chr_CP+0 <- 42
	CALL _Lcd_Chr_CP
//main.c,613 :: 		byte_count1++;
	_byte_count1 <-  _byte_count1 + 1
	_byte_count1 <- _byte_count1
//main.c,614 :: 		}
L_main_121:
//main.c,615 :: 		}
	goto	L_main_115
L_main_116:
//main.c,616 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,617 :: 		offset_message(1,0xa0);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 160
	CALL _offset_message
//main.c,618 :: 		byte_count1 = 0;
	_byte_count1 <- 0
//main.c,619 :: 		LCD_Chr(2,5,' ');
	FARG_Lcd_Chr+0 <- 2
	FARG_Lcd_Chr+1 <- 5
	FARG_Lcd_Chr+2 <- 32
	CALL _Lcd_Chr
//main.c,620 :: 		while (byte_count1 < 6 && buffer != '#')
L_main_122:
	if ( _byte_count1 >= 6) then goto L_main_123
	if ( _buffer = 35) then goto L_main_123
L911_ex_L_main_123:
//main.c,622 :: 		buffer = read_keypad();
	CALL _read_keypad
	_buffer <- STACK_0
//main.c,623 :: 		if (buffer != '*' && buffer != '#' && buffer != 0)
	if ( STACK_0 = 42) then goto L_main_128
	if ( _buffer = 35) then goto L_main_128
	if ( _buffer = 0) then goto L_main_128
L926_ex_L_main_128:
//main.c,625 :: 		temp_password[byte_count1] = buffer;
	STACK_0 <-  0 + _byte_count1
	*STACK_0 <- _buffer
//main.c,626 :: 		LCD_Chr_Cp('*');
	FARG_Lcd_Chr_CP+0 <- 42
	CALL _Lcd_Chr_CP
//main.c,627 :: 		byte_count1++;
	_byte_count1 <-  _byte_count1 + 1
	_byte_count1 <- _byte_count1
//main.c,628 :: 		}
L_main_128:
//main.c,629 :: 		}
	goto	L_main_122
L_main_123:
//main.c,630 :: 		buffer = compare_codes();
	CALL _compare_codes
	_buffer <- STACK_0
//main.c,631 :: 		if (buffer)
	if (!STACK_0) then goto L_main_129
//main.c,633 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,634 :: 		offset_message(1,0xb0);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 176
	CALL _offset_message
//main.c,635 :: 		save_password();
	CALL _save_password
//main.c,636 :: 		Delay1s();
	CALL _Delay1s
//main.c,637 :: 		Delay1s();
	CALL _Delay1s
//main.c,638 :: 		goto exit1
	goto	___main_exit1
//main.c,639 :: 		}
L_main_129:
//main.c,640 :: 		if (!buffer)
	if (_buffer) then goto L_main_130
//main.c,642 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,643 :: 		offset_message(1,0xc0);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 192
	CALL _offset_message
//main.c,644 :: 		Delay1s();
	CALL _Delay1s
//main.c,645 :: 		Delay1s();
	CALL _Delay1s
//main.c,646 :: 		goto exit1
	goto	___main_exit1
//main.c,647 :: 		}
L_main_130:
//main.c,648 :: 		}
L_main_114:
//main.c,649 :: 		}
	goto	L_main_109
L_main_110:
//main.c,650 :: 		goto exit1
	goto	___main_exit1
//main.c,651 :: 		}
L_main_106:
//main.c,652 :: 		if (!buffer)
	if (_buffer) then goto L_main_131
//main.c,654 :: 		offset_message(1,0x20);
	FARG_offset_message+0 <- 1
	FARG_offset_message+1 <- 32
	CALL _offset_message
//main.c,655 :: 		Delay1s();
	CALL _Delay1s
//main.c,656 :: 		Delay1s();
	CALL _Delay1s
//main.c,657 :: 		Delay1s();
	CALL _Delay1s
//main.c,658 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,659 :: 		}
L_main_131:
//main.c,660 :: 		clear_code_locations();
	CALL _clear_code_locations
//main.c,661 :: 		exit1: LCD_Cmd(LCD_CLEAR);
___main_exit1:
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,662 :: 		}
L_main_98:
//main.c,663 :: 		if (buffer == '#' && door_stat == open)
	if ( _buffer != 35) then goto L_main_134
	if ( _door_stat != 1) then goto L_main_134
L991_ex_L_main_134:
//main.c,665 :: 		close_door();
	CALL _close_door
//main.c,666 :: 		door_stat = close;
	_door_stat <- 0
//main.c,667 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,668 :: 		}
L_main_134:
//main.c,669 :: 		if (inside_switch && door_stat == open)
	STACK_1 <-  PORTD & 4
	STACK_0 <- 2
	STACK_1 <-  STACK_1 shr STACK_0
	if (!STACK_1) then goto L_main_137
	if ( _door_stat != 1) then goto L_main_137
L1010_ex_L_main_137:
//main.c,671 :: 		close_door();
	CALL _close_door
//main.c,672 :: 		door_stat = close;
	_door_stat <- 0
//main.c,673 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,674 :: 		}
L_main_137:
//main.c,675 :: 		if (inside_switch && door_stat == close)
	STACK_1 <-  PORTD & 4
	STACK_0 <- 2
	STACK_1 <-  STACK_1 shr STACK_0
	if (!STACK_1) then goto L_main_140
	if ( _door_stat != 0) then goto L_main_140
L1029_ex_L_main_140:
//main.c,677 :: 		open_door();
	CALL _open_door
//main.c,678 :: 		door_stat = open;
	_door_stat <- 1
//main.c,679 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,680 :: 		}
L_main_140:
//main.c,681 :: 		if (PIR1.RCIF)
	if (!PIR1) then goto L_main_141
//main.c,683 :: 		clear_message_buffers();
	CALL _clear_message_buffers
//main.c,684 :: 		recieve_message(63);
	FARG_recieve_message+0 <- 63
	CALL _recieve_message
//main.c,685 :: 		if (message_buffer[2] != 'R')// && message_buffer[62] == carriage_return)
	if ( _message_buffer+2 = 82) then goto L_main_142
//main.c,687 :: 		LCD_Cmd(LCD_CLEAR);
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,688 :: 		transfer_senders_number();
	CALL _transfer_senders_number
//main.c,689 :: 		transfer_sent_password();
	CALL _transfer_sent_password
//main.c,690 :: 		get_imbedded_password();
	CALL _get_imbedded_password
//main.c,691 :: 		buffer = compare_codes();
	CALL _compare_codes
	_buffer <- STACK_0
//main.c,692 :: 		if (buffer)
	if (!STACK_0) then goto L_main_143
//main.c,694 :: 		buffer = compare_with_open_command();
	CALL _compare_with_open_command
	_buffer <- STACK_0
//main.c,695 :: 		if (buffer)
	if (!STACK_0) then goto L_main_144
//main.c,697 :: 		if (!door_stat)
	if (_door_stat) then goto L_main_145
//main.c,699 :: 		open_door();
	CALL _open_door
//main.c,700 :: 		door_stat = 1;
	_door_stat <- 1
//main.c,701 :: 		setup_reply_message();
	CALL _setup_reply_message
//main.c,702 :: 		send_open_message();
	CALL _send_open_message
//main.c,703 :: 		wait_acknowledgement();
	CALL _wait_acknowledgement
//main.c,704 :: 		goto exit2
	goto	___main_exit2
//main.c,705 :: 		}
L_main_145:
//main.c,706 :: 		if (door_stat)
	if (!_door_stat) then goto L_main_146
//main.c,708 :: 		setup_reply_message();
	CALL _setup_reply_message
//main.c,709 :: 		send_already_open_message();
	CALL _send_already_open_message
//main.c,710 :: 		wait_acknowledgement();
	CALL _wait_acknowledgement
//main.c,711 :: 		goto exit2
	goto	___main_exit2
//main.c,712 :: 		}
L_main_146:
//main.c,713 :: 		}
L_main_144:
//main.c,714 :: 		buffer = compare_with_close_command();
	CALL _compare_with_close_command
	_buffer <- STACK_0
//main.c,715 :: 		if (buffer)
	if (!STACK_0) then goto L_main_147
//main.c,717 :: 		if (door_stat)
	if (!_door_stat) then goto L_main_148
//main.c,719 :: 		close_door();
	CALL _close_door
//main.c,720 :: 		door_stat = 0;
	_door_stat <- 0
//main.c,721 :: 		setup_reply_message();
	CALL _setup_reply_message
//main.c,722 :: 		send_close_message();
	CALL _send_close_message
//main.c,723 :: 		wait_acknowledgement();
	CALL _wait_acknowledgement
//main.c,724 :: 		goto exit2
	goto	___main_exit2
//main.c,725 :: 		}
L_main_148:
//main.c,726 :: 		if (!door_stat)
	if (_door_stat) then goto L_main_149
//main.c,728 :: 		setup_reply_message();
	CALL _setup_reply_message
//main.c,729 :: 		send_already_closed_message();
	CALL _send_already_closed_message
//main.c,730 :: 		wait_acknowledgement();
	CALL _wait_acknowledgement
//main.c,731 :: 		}
L_main_149:
//main.c,732 :: 		}
L_main_147:
//main.c,733 :: 		}
L_main_143:
//main.c,734 :: 		}
L_main_142:
//main.c,735 :: 		exit2: LCD_Cmd(LCD_CLEAR);
___main_exit2:
	FARG_Lcd_Cmd+0 <- 1
	CALL _Lcd_Cmd
//main.c,736 :: 		}
L_main_141:
//main.c,737 :: 		}
	goto	L_main_96
  end

table___send_message_header:
  begin
//main.c,12 :: 		const char send_message_header[8] = {'A','T','+','C','M','G','S','='};
	asm: RETLW	65
	asm: RETLW	84
	asm: RETLW	43
	asm: RETLW	67
	asm: RETLW	77
	asm: RETLW	71
	asm: RETLW	83
	asm: RETLW	61
  end

table___open_door_text:
  begin
//main.c,13 :: 		const char open_door_text[10] = {'D','O','O','R',' ','O','P','E','N',0x1A};
	asm: RETLW	68
	asm: RETLW	79
	asm: RETLW	79
	asm: RETLW	82
	asm: RETLW	32
	asm: RETLW	79
	asm: RETLW	80
	asm: RETLW	69
	asm: RETLW	78
	asm: RETLW	26
  end

table___close_door_text:
  begin
//main.c,14 :: 		const char close_door_text[12] = {'D','O','O','R',' ','C','L','O','S','E','D',0x1A};
	asm: RETLW	68
	asm: RETLW	79
	asm: RETLW	79
	asm: RETLW	82
	asm: RETLW	32
	asm: RETLW	67
	asm: RETLW	76
	asm: RETLW	79
	asm: RETLW	83
	asm: RETLW	69
	asm: RETLW	68
	asm: RETLW	26
  end

table___already_opened_text:
  begin
//main.c,15 :: 		const char already_opened_text[20] = {'D','O','O','R',' ','A','L','R','E','A','D','Y',' ',
	asm: RETLW	68
	asm: RETLW	79
	asm: RETLW	79
	asm: RETLW	82
	asm: RETLW	32
	asm: RETLW	65
	asm: RETLW	76
	asm: RETLW	82
	asm: RETLW	69
	asm: RETLW	65
	asm: RETLW	68
	asm: RETLW	89
	asm: RETLW	32
	asm: RETLW	79
	asm: RETLW	80
	asm: RETLW	69
	asm: RETLW	78
	asm: RETLW	69
	asm: RETLW	68
	asm: RETLW	26
  end

table___already_closed_text:
  begin
//main.c,17 :: 		const char already_closed_text[20] = {'D','O','O','R',' ','A','L','R','E','A','D','Y',' ',
	asm: RETLW	68
	asm: RETLW	79
	asm: RETLW	79
	asm: RETLW	82
	asm: RETLW	32
	asm: RETLW	65
	asm: RETLW	76
	asm: RETLW	82
	asm: RETLW	69
	asm: RETLW	65
	asm: RETLW	68
	asm: RETLW	89
	asm: RETLW	32
	asm: RETLW	67
	asm: RETLW	76
	asm: RETLW	79
	asm: RETLW	83
	asm: RETLW	69
	asm: RETLW	68
	asm: RETLW	26
  end

table___settings:
  begin
//main.c,20 :: 		const char settings [18] = {'A','T','+','C','N','M','I','=',
	asm: RETLW	65
	asm: RETLW	84
	asm: RETLW	43
	asm: RETLW	67
	asm: RETLW	78
	asm: RETLW	77
	asm: RETLW	73
	asm: RETLW	61
	asm: RETLW	49
	asm: RETLW	44
	asm: RETLW	50
	asm: RETLW	44
	asm: RETLW	50
	asm: RETLW	44
	asm: RETLW	49
	asm: RETLW	44
	asm: RETLW	48
	asm: RETLW	13
  end

⌨️ 快捷键说明

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