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

📄 diagnose_whl.asm

📁 这个可是我用了三个月的结晶
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	DECFSZ TOTAL,F
	GOTO CHAR_LOOPHZ
	RETURN
;*************************************************
DISP_INIT
	call delay40ms		;由于经常有缺字的现象
	call delay40ms
	CALL DISP_INIT1
	call delay40ms
	call delay40ms
	CALL DISP_INIT2
	RETURN
DISP_INIT1
	MOVLW 0X02		;"程序正在"
	MOVWF LOOP1_STACK
	CLRF TEMP		;重0开始记数
	MOVLW 0XB9 		;设置页地址
	MOVWF PAGEADD
INIT_WRT11
	MOVF PAGEADD,W
	CALL SEND1		;设置起始页
	MOVLW 0X40		;设置Y地址01XXXXXX
	MOVWF CLMADD
	MOVLW 0X40
	MOVWF COUNT
INIT_WRT12
	MOVLW HIGH TABLE1 
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE1
	MOVWF TEMP_STACK
;	CLRF PCLATH		;NEW ADD
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE1		;自动弹出PCLATH
;	call delay40ms	;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO INIT_WRT12
;*****************************************************
	INCF PAGEADD,F
	DECFSZ LOOP1_STACK,F
	GOTO INIT_WRT11
	call delay40ms	;"请稍侯"
	call delay40ms
	MOVLW 0X02		;后三个字查表初始化
	MOVWF LOOP1_STACK
	INCF PAGEADD,F
INIT_WRT21
	MOVF PAGEADD,W
	CALL SEND1
	MOVLW 0X30
	MOVWF COUNT
	MOVLW 0X50		 ;设置Y地址01XXXXXX
	MOVWF CLMADD
INIT_WRT22
	MOVLW HIGH TABLE1 
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE1
	MOVWF TEMP_STACK
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE1
;	call delay40ms ;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO INIT_WRT22
;*****************************************************
	INCF PAGEADD,F
	DECFSZ LOOP1_STACK,F
	GOTO INIT_WRT21
	RETURN
;***************************************
DISP_INIT2
	MOVLW 0X02		;"采集中"
	MOVWF LOOP1_STACK
	MOVLW 0XC0
	CALL SEND2
	CLRF TEMP
	MOVLW 0XB9 		;设置页地址
	MOVWF PAGEADD
INIT_WRT31
	MOVF PAGEADD,W
	CALL SEND2		;设置起始页
	MOVLW 0X40		;设置Y地址01XXXXXX
	MOVWF CLMADD
	MOVLW 0X30
	MOVWF COUNT
INIT_WRT32
	MOVLW HIGH TABLE2 
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE2
	MOVWF TEMP_STACK
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
;	call delay40ms ;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO INIT_WRT32
;*****************************************************
	INCF PAGEADD,F
	DECFSZ LOOP1_STACK,F
	GOTO INIT_WRT31
	MOVLW 0X02
	MOVWF LOOP1_STACK
	MOVLW 0XBE
	MOVWF PAGEADD
INIT_WRT41			;"aa集团"
	MOVF PAGEADD,W
	CALL SEND2
	MOVLW 0X40
	MOVWF COUNT
	MOVLW 0X40		 ;设置Y地址01XXXXXX
	MOVWF CLMADD
INIT_WRT42
	MOVLW HIGH TABLE2 
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE2
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
;	call delay40ms ;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO INIT_WRT42
;*****************************************************
	INCF PAGEADD,F
	DECFSZ LOOP1_STACK,F
	GOTO INIT_WRT41
	MOVLW 0XBD
	CALL SEND2
	MOVLW 0x40
	MOVWF CLMADD
	MOVLW .24
	MOVWF COUNT
INIT_WRT51
	MOVLW HIGH TABLE2
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE2
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
	call delay40ms ;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO INIT_WRT51
	RETURN
;***********************************
DISP_ERR1				;信号微弱
	call delay40ms
	call delay40ms
	CALL DISP_ERR11
	call delay40ms
	call delay40ms
	CALL DISP_ERR12
	RETURN
DISP_ERR11
	MOVLW .6
	MOVWF TOTAL
	CLRF FLAG
	MOVLW 0X00
	MOVWF TEMP
	MOVLW 0XBB 			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X50			;REVISE空一字
	MOVWF CLMADD		;设置起始行
ERR11_LOOP
	MOVF PAGEADD,0
	CALL SEND1			;设置起始页呵呵
	MOVLW .8
	MOVWF COUNT
ERR11_LOOP1
	MOVLW HIGH TABLE5 
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE5
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE1
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO ERR11_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO ERR11_END
	INCF PAGEADD,F
	MOVLW .8		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO ERR11_LOOP
ERR11_END
	BCF FLAG,0	
	DECF PAGEADD,F	 	;返回上一页
	DECFSZ TOTAL,F
	GOTO ERR11_LOOP
	RETURN
;********************************************
DISP_ERR12
	MOVLW .4
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .96			;如果值有错,前级会对后级照成影响
	MOVWF TEMP
	MOVLW 0XBB			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
ERR12_LOOP
	MOVF PAGEADD,W
	CALL SEND2			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
ERR12_LOOP1
	MOVLW HIGH TABLE5
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE5
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO ERR12_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO ERR12_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO ERR12_LOOP
ERR12_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO ERR12_LOOP
	RETURN
;******************************
DISP_ERR2				;齿圈装偏
	call delay40ms
	call delay40ms
	CALL DISP_ERR11
	MOVLW .4
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .0
	MOVWF TEMP
	MOVLW 0XBB 			;设置页地址
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
ERR22_LOOP
	MOVF PAGEADD,0
	CALL SEND2			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
ERR22_LOOP1
	MOVLW HIGH TABLE6
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE6
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO ERR22_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO ERR22_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO ERR22_LOOP
ERR22_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO ERR22_LOOP
	RETURN
;********************************************
DISP_ERR3			  ;齿圈缺齿
	call delay40ms
	call delay40ms
	CALL DISP_ERR11
	call delay40ms
	MOVLW .2
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .0
	MOVWF TEMP
	MOVLW 0XBB 			;设置页地址
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
ERR32_LOOP
	MOVF PAGEADD,W
	CALL SEND2			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
ERR32_LOOP1
	MOVLW HIGH TABLE6
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE6
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO ERR32_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO ERR32_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO ERR32_LOOP
ERR32_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO ERR32_LOOP
	BTFSC FLAG,1
	GOTO ERR33_END
	BSF FLAG,1
	MOVLW .2
	MOVWF TOTAL
	MOVLW .127
	MOVWF TEMP
	GOTO ERR32_LOOP
ERR33_END
	RETURN
;**************采集结果:正常*******************
DISP_FINISH
	CALL DISP_FINISH1
	NOP
	CALL DISP_FINISH2
	RETURN
DISP_FINISH1
	MOVLW .4
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .0			;如果值有错,前级会对后级照成影响
	MOVWF TEMP
	MOVLW 0XBB			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
DISP_FINISH1_LOOP
	MOVF PAGEADD,W
	CALL SEND1			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
DISP_FINISH1_LOOP1
	MOVLW HIGH TABLE9
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE9
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE1
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO DISP_FINISH1_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO DISP_FINISH1_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO DISP_FINISH1_LOOP
DISP_FINISH1_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO DISP_FINISH1_LOOP
	RETURN
;****************************************************
DISP_FINISH2
	MOVLW .3
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .128			;如果值有错,前级会对后级照成影响
	MOVWF TEMP
	MOVLW 0XBB			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
DISP_FINISH2_LOOP
	MOVF PAGEADD,W
	CALL SEND2			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
DISP_FINISH2_LOOP1
	MOVLW HIGH TABLE9
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE9
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO DISP_FINISH2_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO DISP_FINISH2_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO DISP_FINISH2_LOOP
DISP_FINISH2_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO DISP_FINISH2_LOOP
	RETURN
;*************************************************
;NEW ADD FOR 数据采集
;**************采集结果:正常*******************
DISP_DISP
	CALL DISP_DISP1
	NOP
	CALL DISP_DISP2
	RETURN
DISP_DISP1
	MOVLW .4
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .0			;如果值有错,前级会对后级照成影响
	MOVWF TEMP
	MOVLW 0XBB			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X40			;REVISE空一字
	MOVWF CLMADD		;设置起始行
DISP_DISP1_LOOP
	MOVF PAGEADD,W
	CALL SEND1			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
DISP_DISP1_LOOP1
	MOVLW HIGH TABLE10
	MOVWF PCLATH
	MOVF TEMP,W			;用来计查表量的值
	CALL TABLE10
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE1
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO DISP_DISP1_LOOP1
	BTFSC FLAG,0		;来判断是否已经完成了一个字
	GOTO DISP_DISP1_END
	INCF PAGEADD,F
	MOVLW .16		
	SUBWF CLMADD,F		;其默认值是多少!
	BSF FLAG,0			;置FLAG0为1
	GOTO DISP_DISP1_LOOP
DISP_DISP1_END
	BCF FLAG,0	
	DECF PAGEADD,F	 ;返回上一页
	DECFSZ TOTAL,F
	GOTO DISP_DISP1_LOOP
NOP
NOP
	RETURN
;****************************
DISP_DISP2
	MOVLW 0X02
	MOVWF LOOP1_STACK
	MOVLW .96
	MOVWF TEMP
	MOVLW 0XBB
	MOVWF PAGEADD
DISP_WRT41			;"aa集团"
	MOVF PAGEADD,W
	CALL SEND2
	MOVLW 0X40
	MOVWF COUNT
	MOVLW 0X40		 ;设置Y地址01XXXXXX
	MOVWF CLMADD
DISP_WRT42
	MOVLW HIGH TABLE2 
	MOVWF PCLATH
	MOVF TEMP,W
	CALL TABLE2
	MOVWF TEMP_STACK
	CLRF PCLATH
	MOVLW HIGH INIT_PORT
	MOVWF PCLATH
	MOVF TEMP_STACK,W
	CALL WRITE2
;	call delay40ms ;NEW ADD
	INCF TEMP,F
	DECFSZ COUNT,F
	GOTO DISP_WRT42
;*****************************************************
	INCF PAGEADD,F
	DECFSZ LOOP1_STACK,F
	GOTO DISP_WRT41
	NOP
	NOP
;*********************************************************
	MOVLW .2
	MOVWF TOTAL
	CLRF FLAG
	MOVLW .128			;如果值有错,前级会对后级照成影响
	MOVWF TEMP
	MOVLW 0XBB			;设置页地址从B9改
	MOVWF PAGEADD
	MOVLW 0X60			;放两个一字
	MOVWF CLMADD		;设置起始行
DISP_DISP2_LOOP
	MOVF PAGEADD,W
	CALL SEND2			;设置起始页呵呵
	MOVLW .16
	MOVWF COUNT
DISP_DISP2_LOOP1

⌨️ 快捷键说明

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