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

📄 main.lst

📁 Firmware that controls a sliding door via a GSM modem (Open and Close the door)
💻 LST
📖 第 1 页 / 共 5 页
字号:
$03A5	$1283			BCF	STATUS, RP0
$03A6	$00C4			MOVWF	save_password_address_L0
;main.c,416 :: 		byte_count1 = 0;
$03A7	$01A6			CLRF	_byte_count1, 1
;main.c,417 :: 		while (byte_count1 < 6)
$03A8	$	L_save_password_84:
$03A8	$3080			MOVLW	128
$03A9	$0626			XORWF	_byte_count1, 0
$03AA	$00F0			MOVWF	STACK_0
$03AB	$3080			MOVLW	128
$03AC	$3A06			XORLW	6
$03AD	$0270			SUBWF	STACK_0, 0
$03AE	$1803			BTFSC	STATUS, C
$03AF	$2BBD			GOTO	L_save_password_85
;main.c,419 :: 		EEprom_Write (address,password[byte_count1]);
$03B0	$0844			MOVF	save_password_address_L0, 0
$03B1	$00C9			MOVWF	FARG_EEprom_write+0
$03B2	$0826			MOVF	_byte_count1, 0
$03B3	$3F29			ADDLW	_password
$03B4	$0084			MOVWF	FSR
$03B5	$0800			MOVF	INDF, 0
$03B6	$00CA			MOVWF	FARG_EEprom_write+1
$03B7	$219E			CALL	_EEprom_write
;main.c,420 :: 		byte_count1++;
$03B8	$1303			BCF	STATUS, RP1
$03B9	$1283			BCF	STATUS, RP0
$03BA	$0AA6			INCF	_byte_count1, 1
;main.c,421 :: 		address++;
$03BB	$0AC4			INCF	save_password_address_L0, 1
;main.c,422 :: 		}
$03BC	$2BA8			GOTO	L_save_password_84
$03BD	$	L_save_password_85:
;main.c,423 :: 		}
$03BD	$0008			RETURN
$03BE	$	_close_door:
;main.c,502 :: 		void close_door()
;main.c,505 :: 		offset_message(1,0x50);
$03BE	$3001			MOVLW	1
$03BF	$1303			BCF	STATUS, RP1
$03C0	$1283			BCF	STATUS, RP0
$03C1	$00C9			MOVWF	FARG_offset_message+0
$03C2	$3050			MOVLW	80
$03C3	$00CA			MOVWF	FARG_offset_message+1
$03C4	$20EF			CALL	_offset_message
;main.c,506 :: 		step_count = 150;
$03C5	$3096			MOVLW	150
$03C6	$00C4			MOVWF	close_door_step_count_L0
;main.c,507 :: 		while (step_count > 0)
$03C7	$	L_close_door_92:
$03C7	$0844			MOVF	close_door_step_count_L0, 0
$03C8	$3C00			SUBLW	0
$03C9	$1803			BTFSC	STATUS, C
$03CA	$2BCE			GOTO	L_close_door_93
;main.c,509 :: 		rotate2();
$03CB	$21BA			CALL	_rotate2
;main.c,510 :: 		step_count--;
$03CC	$03C4			DECF	close_door_step_count_L0, 1
;main.c,511 :: 		}
$03CD	$2BC7			GOTO	L_close_door_92
$03CE	$	L_close_door_93:
;main.c,512 :: 		solenoid = 1;
$03CE	$1488			BSF	PORTD, 1
;main.c,513 :: 		step_count = 28;
$03CF	$301C			MOVLW	28
$03D0	$00C4			MOVWF	close_door_step_count_L0
;main.c,514 :: 		while (step_count > 0)
$03D1	$	L_close_door_94:
$03D1	$0844			MOVF	close_door_step_count_L0, 0
$03D2	$3C00			SUBLW	0
$03D3	$1803			BTFSC	STATUS, C
$03D4	$2BD8			GOTO	L_close_door_95
;main.c,516 :: 		rotate2();
$03D5	$21BA			CALL	_rotate2
;main.c,517 :: 		step_count--;
$03D6	$03C4			DECF	close_door_step_count_L0, 1
;main.c,518 :: 		}
$03D7	$2BD1			GOTO	L_close_door_94
$03D8	$	L_close_door_95:
;main.c,519 :: 		solenoid = 0;
$03D8	$1088			BCF	PORTD, 1
;main.c,520 :: 		offset_message(1,0x70);
$03D9	$3001			MOVLW	1
$03DA	$00C9			MOVWF	FARG_offset_message+0
$03DB	$3070			MOVLW	112
$03DC	$00CA			MOVWF	FARG_offset_message+1
$03DD	$20EF			CALL	_offset_message
;main.c,521 :: 		Delay1s();
$03DE	$2110			CALL	_Delay1s
;main.c,522 :: 		Delay1s();
$03DF	$2110			CALL	_Delay1s
;main.c,523 :: 		Delay1s();
$03E0	$2110			CALL	_Delay1s
;main.c,524 :: 		}
$03E1	$0008			RETURN
$03E2	$	_clear_message_buffers:
;main.c,40 :: 		void clear_message_buffers() // this routine will clear the memory locations
;main.c,42 :: 		byte_count1 = 0;
$03E2	$1303			BCF	STATUS, RP1
$03E3	$1283			BCF	STATUS, RP0
$03E4	$01A6			CLRF	_byte_count1, 1
;main.c,43 :: 		while (byte_count1 < 77)
$03E5	$	L_clear_message_buffers_0:
$03E5	$3080			MOVLW	128
$03E6	$0626			XORWF	_byte_count1, 0
$03E7	$00F0			MOVWF	STACK_0
$03E8	$3080			MOVLW	128
$03E9	$3A4D			XORLW	77
$03EA	$0270			SUBWF	STACK_0, 0
$03EB	$1803			BTFSC	STATUS, C
$03EC	$2BF5			GOTO	L_clear_message_buffers_1
;main.c,45 :: 		message_buffer[byte_count1] = 0;
$03ED	$0826			MOVF	_byte_count1, 0
$03EE	$3FA0			ADDLW	_message_buffer
$03EF	$00F0			MOVWF	STACK_0
$03F0	$0870			MOVF	STACK_0, 0
$03F1	$0084			MOVWF	FSR
$03F2	$0180			CLRF	INDF, 1
;main.c,46 :: 		byte_count1++;
$03F3	$0AA6			INCF	_byte_count1, 1
;main.c,47 :: 		}
$03F4	$2BE5			GOTO	L_clear_message_buffers_0
$03F5	$	L_clear_message_buffers_1:
;main.c,48 :: 		}
$03F5	$0008			RETURN
$03F6	$	_recieve_message:
;main.c,78 :: 		void recieve_message(unsigned short message_length)
;main.c,80 :: 		byte_count1 = 0;
$03F6	$1303			BCF	STATUS, RP1
$03F7	$1283			BCF	STATUS, RP0
$03F8	$01A6			CLRF	_byte_count1, 1
;main.c,81 :: 		time_count = 0;
$03F9	$01A7			CLRF	_time_count
$03FA	$01A8			CLRF	_time_count+1
;main.c,82 :: 		while (byte_count1 < message_length && time_count < 1250)
$03FB	$	L_recieve_message_6:
$03FB	$0844			MOVF	FARG_recieve_message+0, 0
$03FC	$0226			SUBWF	_byte_count1, 0
$03FD	$1803			BTFSC	STATUS, C
$03FE	$2C18			GOTO	L_recieve_message_7
$03FF	$3004			MOVLW	4
$0400	$0228			SUBWF	_time_count+1, 0
$0401	$1D03			BTFSS	STATUS, Z
$0402	$2C05			GOTO	L_recieve_message_150
$0403	$30E2			MOVLW	226
$0404	$0227			SUBWF	_time_count, 0
$0405	$	L_recieve_message_150:
$0405	$1803			BTFSC	STATUS, C
$0406	$2C18			GOTO	L_recieve_message_7
$0407	$	L203_ex_L_recieve_message_7:
;main.c,84 :: 		if (PIR1.RCIF)
$0407	$1E8C			BTFSS	PIR1, 5
$0408	$2C14			GOTO	L_recieve_message_10
;main.c,86 :: 		message_buffer[byte_count1] = Usart_Read();
$0409	$0826			MOVF	_byte_count1, 0
$040A	$3FA0			ADDLW	_message_buffer
$040B	$00C5			MOVWF	FLOC_recieve_message+0
$040C	$21C9			CALL	_Usart_Read
$040D	$0845			MOVF	FLOC_recieve_message+0, 0
$040E	$0084			MOVWF	FSR
$040F	$0870			MOVF	STACK_0, 0
$0410	$0080			MOVWF	INDF
;main.c,87 :: 		byte_count1++;
$0411	$0AA6			INCF	_byte_count1, 1
;main.c,88 :: 		time_count = 0;
$0412	$01A7			CLRF	_time_count
$0413	$01A8			CLRF	_time_count+1
;main.c,89 :: 		}
$0414	$	L_recieve_message_10:
;main.c,90 :: 		time_count++;
$0414	$0AA7			INCF	_time_count, 1
$0415	$1903			BTFSC	STATUS, Z
$0416	$0AA8			INCF	_time_count+1, 1
;main.c,91 :: 		}
$0417	$2BFB			GOTO	L_recieve_message_6
$0418	$	L_recieve_message_7:
;main.c,92 :: 		}
$0418	$0008			RETURN
$0419	$	_transfer_senders_number:
;main.c,94 :: 		void transfer_senders_number()
;main.c,97 :: 		byte_count1 = 0;
$0419	$1303			BCF	STATUS, RP1
$041A	$1283			BCF	STATUS, RP0
$041B	$01A6			CLRF	_byte_count1, 1
;main.c,98 :: 		byte_count2 = 9;
$041C	$3009			MOVLW	9
$041D	$00B5			MOVWF	_byte_count2
;main.c,99 :: 		while (byte_count1 < 13)
$041E	$	L_transfer_senders_number_11:
$041E	$3080			MOVLW	128
$041F	$0626			XORWF	_byte_count1, 0
$0420	$00F0			MOVWF	STACK_0
$0421	$3080			MOVLW	128
$0422	$3A0D			XORLW	13
$0423	$0270			SUBWF	STACK_0, 0
$0424	$1803			BTFSC	STATUS, C
$0425	$2C35			GOTO	L_transfer_senders_number_12
;main.c,101 :: 		senders_number[byte_count1] = message_buffer[byte_count2];
$0426	$0826			MOVF	_byte_count1, 0
$0427	$3F36			ADDLW	_senders_number
$0428	$00F1			MOVWF	STACK_1
$0429	$0835			MOVF	_byte_count2, 0
$042A	$3FA0			ADDLW	_message_buffer
$042B	$0084			MOVWF	FSR
$042C	$0800			MOVF	INDF, 0
$042D	$00F0			MOVWF	STACK_0
$042E	$0871			MOVF	STACK_1, 0
$042F	$0084			MOVWF	FSR
$0430	$0870			MOVF	STACK_0, 0
$0431	$0080			MOVWF	INDF
;main.c,103 :: 		byte_count1++;
$0432	$0AA6			INCF	_byte_count1, 1
;main.c,104 :: 		byte_count2++;
$0433	$0AB5			INCF	_byte_count2, 1
;main.c,105 :: 		}
$0434	$2C1E			GOTO	L_transfer_senders_number_11
$0435	$	L_transfer_senders_number_12:
;main.c,106 :: 		}
$0435	$0008			RETURN
$0436	$	_transfer_sent_password:
;main.c,108 :: 		void transfer_sent_password()
;main.c,111 :: 		byte_count1 = 0;
$0436	$1303			BCF	STATUS, RP1
$0437	$1283			BCF	STATUS, RP0
$0438	$01A6			CLRF	_byte_count1, 1
;main.c,112 :: 		byte_count2 = 49;
$0439	$3031			MOVLW	49
$043A	$00B5			MOVWF	_byte_count2
;main.c,113 :: 		while (byte_count1 < 6)
$043B	$	L_transfer_sent_password_13:
$043B	$3080			MOVLW	128
$043C	$0626			XORWF	_byte_count1, 0
$043D	$00F0			MOVWF	STACK_0
$043E	$3080			MOVLW	128
$043F	$3A06			XORLW	6
$0440	$0270			SUBWF	STACK_0, 0
$0441	$1803			BTFSC	STATUS, C
$0442	$2C52			GOTO	L_transfer_sent_password_14
;main.c,115 :: 		temp_password[byte_count1] = message_buffer[byte_count2];
$0443	$0826			MOVF	_byte_count1, 0
$0444	$3F2F			ADDLW	_temp_password
$0445	$00F1			MOVWF	STACK_1
$0446	$0835			MOVF	_byte_count2, 0
$0447	$3FA0			ADDLW	_message_buffer
$0448	$0084			MOVWF	FSR
$0449	$0800			MOVF	INDF, 0
$044A	$00F0			MOVWF	STACK_0
$044B	$0871			MOVF	STACK_1, 0
$044C	$0084			MOVWF	FSR
$044D	$0870			MOVF	STACK_0, 0
$044E	$0080			MOVWF	INDF
;main.c,117 :: 		byte_count1++;
$044F	$0AA6			INCF	_byte_count1, 1
;main.c,118 :: 		byte_count2++;
$0450	$0AB5			INCF	_byte_count2, 1
;main.c,119 :: 		}
$0451	$2C3B			GOTO	L_transfer_sent_password_13
$0452	$	L_transfer_sent_password_14:
;main.c,120 :: 		}
$0452	$0008			RETURN
$0453	$	_compare_with_open_command:
;main.c,328 :: 		unsigned short compare_with_open_command() //ok
;main.c,330 :: 		if (message_buffer[55] != '/')
$0453	$1303			BCF	STATUS, RP1
$0454	$1683			BSF	STATUS, RP0
$0455	$0857			MOVF	_message_buffer+55, 0
$0456	$3A2F			XORLW	47
$0457	$1903			BTFSC	STATUS, Z
$0458	$2C5B			GOTO	L_compare_with_open_command_67
;main.c,332 :: 		return 0;
$0459	$01F0			CLRF	STACK_0, 1
$045A	$0008			RETURN
;main.c,333 :: 		}
$045B	$	L_compare_with_open_command_67:
;main.c,335 :: 		if (message_buffer[56] != 'O')
$045B	$0858			MOVF	_message_buffer+56, 0
$045C	$3A4F			XORLW	79
$045D	$1903			BTFSC	STATUS, Z
$045E	$2C61			GOTO	L_compare_with_open_command_68
;main.c,337 :: 		return 0;
$045F	$01F0			CLRF	STACK_0, 1
$0460	$0008			RETURN
;main.c,338 :: 		}
$0461	$	L_compare_with_open_command_68:
;main.c,339 :: 		if (message_buffer[57] != 'P')
$0461	$0859			MOVF	_message_buffer+57, 0
$0462	$3A50			XORLW	80
$0463	$1903			BTFSC	STATUS, Z
$0464	$2C67			GOTO	L_compare_with_open_command_69
;main.c,341 :: 		return 0;
$0465	$01F0			CLRF	STACK_0, 1
$0466	$0008			RETURN
;main.c,342 :: 		}
$0467	$	L_compare_with_open_command_69:
;main.c,343 :: 		if (message_buffer[58] != 'E')
$0467	$085A			MOVF	_message_buffer+58, 0
$0468	$3A45			XORLW	69
$0469	$1903			BTFSC	STATUS, Z
$046A	$2C6D			GOTO	L_compare_with_open_command_70
;main.c,345 :: 		return 0;
$046B	$01F0			CLRF	STACK_0, 1
$046C	$0008			RETURN
;main.c,346 :: 		}
$046D	$	L_compare_with_open_command_70:
;main.c,347 :: 		if (message_buffer[59] != 'N')
$046D	$085B			MOVF	_message_buffer+59, 0
$046E	$3A4E			XORLW	78
$046F	$1903			BTFSC	STATUS, Z
$0470	$2C73			GOTO	L_compare_with_open_command_71
;main.c,349 :: 		return 0;
$0471	$01F0			CLRF	STACK_0, 1
$0472	$0008			RETURN
;main.c,350 :: 		}
$0473	$	L_compare_with_open_command_71:
;main.c,351 :: 		if (message_buffer[60] != carriage_return)
$0473	$085C			MOVF	_message_buffer+60, 0
$0474	$3A0D			XORLW	13
$0475	$1903			BTFSC	STATUS, Z
$0476	$2C79			GOTO	L_compare_with_open_command_72
;main.c,353 :: 		return 0;
$0477	$01F0			CLRF	STACK_0, 1
$0478	$0008			RETURN
;main.c,354 :: 		}
$0479	$	L_compare_with_open_command_72:
;main.c,355 :: 		if (message_buffer[61] != line_feed)
$0479	$085D			MOVF	_message_buffer+61, 0
$047A	$3A0A			XORLW	10
$047B	$1903			BTFSC	STATUS, Z
$047C	$2C7F			GOTO	L_compare_with_open_command_73
;main.c,357 :: 		return 0;
$047D	$01F0			CLRF	STACK_0, 1
$047E	$0008			RETURN
;main.c,358 :: 		}
$047F	$	L_compare_with_open_command_73:
;main.c,359 :: 		return 1;
$047F	$3001			MOVLW	1
$0480	$00F0			MOVWF	STACK_0
;main.c,360 :: 		}
$0481	$0008			RETURN
$0482	$	_setup_reply_message:
;main.c,122 :: 		void setup_reply_message()
;main.c,124 :: 		byte_count1 = 0;
$0482	$1303			BCF	STATUS, RP1
$0483	$1283			BCF	STATUS, RP0
$0484	$01A6			CLRF	_byte_count1, 1
;main.c,125 :: 		while (byte_count1 < 8)
$0485	$	L_setup_reply_message_15:
$0485	$3080			MOVLW	128
$0486	$0626			XORWF	_byte_count1, 0
$0487	$00F0			MOVWF	STACK_0
$0488	$3080			MOVLW	128
$0489	$3A08			XORLW	8
$048A	$0270			SUBWF	STACK_0, 0
$048B	$1803			BTFSC	STATUS, C
$048C	$2CA1			GOTO	L_setup_reply_message_16
;main.c,127 :: 		Usart_Write(send_message_header[byte_count1]);
$048D	$0826			MOVF	_byte_count1, 0
$048E	$3FE4			ADDLW	#_send_message_header
$048F	$00F0			MOVWF	STACK_0
$0490	$3001			MOVLW	@#_send_message_header
$0491	$1803			BTFSC	STATUS, C
$0492	$3F01			ADDLW	1
$0493	$00F1			MOVWF	STACK_0+1
$0494	$0870			MOVF	STACK_0, 0
$0495	$00A4			MOVWF	___DoICPLoAddr
$0496	$0871			MOVF	STACK_0+1, 0
$0497	$00A3			MOVWF	___DoICPHiAddr
$0498	$080A			MOVF	PCLATH, 0
$0499	$00A2			MOVWF	___DoICPSavePCLATH
$049A	$20C6			CALL	_____DoICP
$049B	$00C9			MOVWF	FARG_Usart_Write+0
$049C	$0822			MOVF	___DoICPSavePCLATH, 0
$049D	$008A			MOVWF	PCLATH
$049E	$21D4			CALL	_Usart_Write
;main.c,128 :: 		byte_count1++;
$049F	$0AA6			INCF	_byte_count1, 1
;main.c,129 :: 		}
$04A0	$2C85			GOTO	L_setup_reply_message_15
$04A1	$	L_setup_reply_message_16:
;main.c,130 :: 		byte_count1 = 0;
$04A1	$01A6			CLRF	_byte_count1, 1
;main.c,131 :: 		while (byte_count1 < 13)
$04A2	$	L_setup_reply_message_17:
$04A2	$3080			MOVLW	128
$04A3	$0626			XORWF	_byte_count1, 0
$04A4	$00F0			MOVWF	STACK_0
$04A5	$3080			MOVLW	128
$04A6	$3A0D			XORLW	13
$04A7	$0270			SUBWF	STACK_0, 0
$04A8	$1803			BTFSC	STATUS, C
$04A9	$2CB2			GOTO	L_setup_reply_message_18
;main.c,133 :: 		Usart_Write(senders_number[byte_count1]);
$04AA	$0826			MOVF	_byte_count1, 0
$04AB	$3F36			ADDLW	_senders_number
$04AC	$0084			MOVWF	FSR
$04AD	$0800			MOVF	INDF, 0
$04AE	$00C9			MOVWF	FARG_Usart_Write+0
$04AF	$21D4			CALL	_Usart_Write
;main.c,134 :: 		byte_count1++;
$04B0	$0AA6			INCF	_byte_count1, 1
;main.c,135 :: 		}
$04B1	$2CA2			GOTO	L_setup_reply_message_17
$04B2	$	L_setup_reply_message_18:
;main.c,136 :: 		Usart_Write (carriage_return);
$04B2	$300D			MOVLW	13
$04B3	$00C9			MOVWF	FARG_Usart_Write+0
$04B4	$21D4			CALL	_Usart_Write
;main.c,137 :: 		while (buffer != '>') buffer = Usart_Read();
$04B5	$	L_setup_reply_message_19:
$04B5	$0825			MOVF	_buffer, 0
$04B6	$3A3E			XORLW	62
$04B7	$1903			BTFSC	STATUS, Z
$04B8	$2CBD			GOTO	L_setup_reply_message_20
$04B9	$21C9			CALL	_Usart_Read

⌨️ 快捷键说明

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