📄 diagnose_whl.asm
字号:
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 + -