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

📄 16f873.asm

📁 pic系列单片机得控制程序 主要进行温度采集和转换控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:


	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 + -