📄 16f873.asm
字号:
include "p16F873.inc"
;Variables *****************************************
_code_tmp_0000 equ 0x20
_gfar equ 0x21
_gcel equ 0x24
param00_delay_ms equ 0x27
param00_delay_us equ 0x29
_fila equ 0x2a
_columna equ 0x2b
_leido1 equ 0x2c
_leido2 equ 0x2d
_iguales equ 0x2e
_i equ 0x2f
_num equ 0x30
param00_LCD_Dato equ 0x31
param00_LCD_Comando equ 0x32
_ADCON1 equ 0x9f
ORG 0
clrf PCLATH
goto start__code
ORG 4
_interrupt
bcf INTCON, T0IF ;clear interrupt flag
retfie
_LCD_Prepara
goto _LCD_Prepara__code
_LCD_Busy
goto _LCD_Busy__code
_LCD_Dato
goto _LCD_Dato__code
_delay_us
goto _delay_us__code
_LCD_Comando
goto _LCD_Comando__code
_LCD_Ini
goto _LCD_Ini__code
_delay_ms
goto _delay_ms__code
_lectura
goto _lectura__code
_que_escribir
goto _que_escribir__code
arr000
addwf PCL, F
retlw D'71'
retlw D'46'
retlw D'32'
retlw D'70'
retlw D'97'
retlw D'104'
retlw D'114'
retlw D'101'
retlw D'110'
retlw D'104'
retlw D'114'
retlw D'105'
retlw D'116'
retlw D'58'
retlw D'0'
arr001
addwf PCL, F
retlw D'71'
retlw D'46'
retlw D'32'
retlw D'67'
retlw D'101'
retlw D'108'
retlw D'115'
retlw D'105'
retlw D'117'
retlw D'115'
retlw D'58'
retlw D'0'
arr002
addwf PCL, F
retlw D'72'
retlw D'97'
retlw D'115'
retlw D'32'
retlw D'101'
retlw D'115'
retlw D'99'
retlw D'114'
retlw D'105'
retlw D'116'
retlw D'111'
retlw D'58'
retlw D'0'
start__code
bcf STATUS, RP0
clrf _leido2
clrf _num
_main__code
bcf STATUS, RP0
clrf _num
label_0062
bcf STATUS, RP0
movf _leido2, W
sublw D'42'
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0063
movlw D'8'
bsf STATUS, RP0
movwf TRISA
bsf _ADCON1, D'1'
bsf _ADCON1, D'2'
clrw
bcf STATUS, RP0
btfsc PORTA, D'3'
movlw D'1'
sublw D'1'
movlw 1
btfss STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0064
call _LCD_Prepara
bcf PCLATH, 3
bcf PCLATH, 4
call _LCD_Ini
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'60'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'14'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
clrf _i
label_0065
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr000+1)
movlw HIGH(arr000+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr000
sublw 0
btfsc STATUS, Z
goto label_0066
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr000+1)
movlw HIGH(arr000+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr000
bcf STATUS, RP0
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
incf _i, F
goto label_0065
label_0066
bcf STATUS, RP0
clrf _leido1
clrf _leido2
call _lectura
bcf PCLATH, 3
bcf PCLATH, 4
call _que_escribir
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movwf _leido1
movf _leido1, W
sublw D'120'
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0067
movlw D'10'
movwf param00_delay_ms
call _delay_ms
bcf PCLATH, 3
bcf PCLATH, 4
label_0067
movlw D'1'
bcf STATUS, RP0
movwf _iguales
label_0068
bcf STATUS, RP0
movf _iguales, W
btfsc STATUS, Z
goto label_0069
call _lectura
bcf PCLATH, 3
bcf PCLATH, 4
call _que_escribir
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movwf _leido2
movf _leido1, W
subwf _leido2, W
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfss STATUS, Z
clrf _iguales
label_0070
goto label_0068
label_0069
call _LCD_Prepara
bcf PCLATH, 3
bcf PCLATH, 4
call _LCD_Ini
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'60'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'14'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
clrf _i
label_0071
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr000+1)
movlw HIGH(arr000+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr000
sublw 0
btfsc STATUS, Z
goto label_0072
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr000+1)
movlw HIGH(arr000+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr000
bcf STATUS, RP0
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
incf _i, F
goto label_0071
label_0072
movlw D'192'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movf _leido2, W
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movf _leido2, W
sublw D'42'
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0074
movf _leido2, W
movwf _code_tmp_0000
movf _num, W
addlw _gfar
movwf FSR
movf _code_tmp_0000 , W
bcf STATUS, IRP
movwf INDF
bcf STATUS, RP0
incf _num, F
label_0073
goto label_0074
label_0064
call _LCD_Prepara
bcf PCLATH, 3
bcf PCLATH, 4
call _LCD_Ini
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'60'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'14'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
clrf _i
label_0075
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr001+1)
movlw HIGH(arr001+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr001
sublw 0
btfsc STATUS, Z
goto label_0076
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr001+1)
movlw HIGH(arr001+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr001
bcf STATUS, RP0
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
incf _i, F
goto label_0075
label_0076
bcf STATUS, RP0
clrf _leido1
clrf _leido2
call _lectura
bcf PCLATH, 3
bcf PCLATH, 4
call _que_escribir
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movwf _leido1
movf _leido1, W
sublw D'120'
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0077
movlw D'10'
movwf param00_delay_ms
call _delay_ms
bcf PCLATH, 3
bcf PCLATH, 4
label_0077
movlw D'1'
bcf STATUS, RP0
movwf _iguales
label_0078
bcf STATUS, RP0
movf _iguales, W
btfsc STATUS, Z
goto label_0079
call _lectura
bcf PCLATH, 3
bcf PCLATH, 4
call _que_escribir
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movwf _leido2
movf _leido1, W
subwf _leido2, W
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfss STATUS, Z
clrf _iguales
label_0080
goto label_0078
label_0079
call _LCD_Prepara
bcf PCLATH, 3
bcf PCLATH, 4
call _LCD_Ini
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'60'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'14'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
clrf _i
label_0081
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr001+1)
movlw HIGH(arr001+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr001
sublw 0
btfsc STATUS, Z
goto label_0082
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr001+1)
movlw HIGH(arr001+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr001
bcf STATUS, RP0
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
incf _i, F
goto label_0081
label_0082
movlw D'192'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movf _leido2, W
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
movf _leido2, W
sublw D'42'
movlw 1
btfsc STATUS, Z
clrw
sublw 0
btfsc STATUS, Z
goto label_0083
movf _leido2, W
movwf _code_tmp_0000
movf _num, W
addlw _gcel
movwf FSR
movf _code_tmp_0000 , W
bcf STATUS, IRP
movwf INDF
bcf STATUS, RP0
incf _num, F
label_0083
label_0074
movlw D'232'
bcf STATUS, RP0
movwf param00_delay_ms
call _delay_ms
bcf PCLATH, 3
bcf PCLATH, 4
goto label_0062
label_0063
call _LCD_Prepara
bcf PCLATH, 3
bcf PCLATH, 4
call _LCD_Ini
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'60'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
movlw D'14'
bcf STATUS, RP0
movwf param00_LCD_Comando
call _LCD_Comando
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
clrf _i
label_0084
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr002+1)
movlw HIGH(arr002+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr002
sublw 0
btfsc STATUS, Z
goto label_0085
bcf STATUS, RP0
movf _i, W
movwf _code_tmp_0000
addlw LOW(arr002+1)
movlw HIGH(arr002+1)
btfsc STATUS, C
addlw 1
movwf PCLATH
movf _code_tmp_0000 , W
call arr002
bcf STATUS, RP0
movwf param00_LCD_Dato
call _LCD_Dato
bcf PCLATH, 3
bcf PCLATH, 4
bcf STATUS, RP0
incf _i, F
goto label_0084
label_0085
bcf STATUS, RP0
clrf _i
label_0086
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -