;Compare Test Counter Value is zero?************************
CLRZ
MOV F COUNTERH,F
BTFSS STATUS,Z
GOTO PRESS_START_KEY
CLRZ
MOV F COUNTERL,F
BTFSS STATUS,Z
GOTO PRESS_START_KEY
CALL _ERROR_BELL
GOTO BEGIN
;Compare Test Counter Value is zero?************************
PRESS_START_KEY
BTFSC START_KEY ;按开始键开始测试
GOTO $-1
CALL DELAY20MS
BTFSC START_KEY
GOTO $-4
BTFSS START_KEY
GOTO $-1
CALL DELAY20MS
BTFSS START_KEY
GOTO $-4
;Test Counter decrease 1****************************
MOV LW .1 ;conter decrease 1
SUBWF COUNTERL,F
BTFSS STATUS,C
DECF COUNTERH,F
CALL RAM_TO_EE ;write counterl counterh to eeprom
;Test Counter decrease 1****************************
; GOTO BEGIN
;输出问候语
CSH
MOV F COUNTER,W
; BSF PCLATH,0
CALL TABLE
; BCF PCLATH,0
CALL FASONG
CALL DELAY3
INCF COUNTER
MOV F COUNTER,W
SUBLW .74
BTFSS STATUS,Z
GOTO CSH
;********************************************
;开始检测并储存外界输入
LOOP
CLRF PIR1 ;清 RCIF
CLRF COUNTER
MOV LW 30H
MOV WF FSR
BCF PIR1,RCIF
JIESHU NOP
LRC BTFSS PIR1,RCIF
GOTO LRC
MOV F RCREG,W
SUBLW "\r" ;与 Enter 对应的 ASCII 码比较
BTFSC STATUS,Z
GOTO WTPD ;按了回车键,转判断子程序
MOV F RCREG,W
SUBLW "\b" ;与退格键 BacksPACe 对应的 ASCII 码比较
BTFSC STATUS,Z
GOTO TUIGE ;按了退格键,转退格处理
MOV F RCREG,W
CALL FASONG
MOV WF INDF
INCF FSR
GOTO LRC
;********************************************
;退格处理子程序
TUIGE
MOV F RCREG,W
CALL FASONG
DECF FSR
GOTO LRC
;********************************************
;问题判断子程序
WTPD
MOV F RCREG,W
MOV WF INDF
;********************************************
;和第一个问题进行比较
PD1
CLRF COUNTER
MOV LW 30H
MOV WF FSR
LP1
MOV F COUNTER,W
; BSF PCLATH,1
BSF PCLATH,0
CALL TAB1
BCF PCLATH,0
; BCF PCLATH,1
SUBWF INDF,W ;查表所得的数据与 INDF 的内容相减,结果送 W
BTFSS STATUS,Z
GOTO PD2 ;内容不符,转 PD2 判断
INCF FSR ;内容相符,数据存储地址加一
INCF COUNTER
MOV F COUNTER,W
SUBLW .17 ;判断是否已到第一个问题的 17 个字符数
BTFSS STATUS,Z
GOTO LP1 ;没到,继续第一个问题的判断
MOV LW "\r" ; Enter ??
SUBWF INDF,W
BTFSS STATUS,Z
GOTO CUOWU2 ;不相等,后面还有内容,转到错误提示2
CLRF COUNTER
GOTO HD1 ;转到回答1
;********************************************
;和第二个问题进行比较
PD2
CLRF COUNTER
MOV LW 30H
MOV WF FSR
LP2
MOV F COUNTER,W
; BSF PCLATH,1
BSF PCLATH,0
CALL TAB2
BCF PCLATH,0
; BCF PCLATH,1
SUBWF INDF,W ;查表所得的数据与 INDF 的内容相减,结果送 W
BTFSS STATUS,Z
GOTO PD3 ;内容不符,转 PD3 判断
INCF FSR ;内容相符,数据存储地址加一
INCF COUNTER
MOV F COUNTER,W
SUBLW .16 ;判断是否已到第一个问题的 16 个字符数
BTFSS STATUS,Z
GOTO LP2 ;没到,继续第一个问题的判断
MOV LW "\r" ; Enter ??
SUBWF INDF,W
BTFSS STATUS,Z
GOTO CUOWU2 ;不相等,后面还有内容,转到错误提示2
CLRF COUNTER
GOTO HD2 ;转到回答2
;********************************************
;和第三个问题进行比较
PD3
CLRF COUNTER
MOV LW 30H
MOV WF FSR
LP3
MOV F COUNTER,W
; BSF PCLATH,1
BSF PCLATH,0
CALL TAB3
BCF PCLATH,0
; BCF PCLATH,1
SUBWF INDF,W ;查表所得的数据与 INDF 的内容相减,结果送 W
BTFSS STATUS,Z
GOTO PD4 ;内容不符,转 PD4 判断
INCF FSR ;内容相符,数据存储地址加一
INCF COUNTER
MOV F COUNTER,W
SUBLW .20 ;判断是否已到第一个问题的 20 个字符数
BTFSS STATUS,Z
GOTO LP3 ;没到,继续第一个问题的判断
MOV LW "\r" ; Enter ??
SUBWF INDF,W
BTFSS STATUS,Z
GOTO CUOWU2 ;不相等,后面还有内容,转到错误提示2
CLRF COUNTER
GOTO HD3 ;转到回答3
;********************************************
;和第四个问题进行比较
PD4
CLRF COUNTER
MOV LW 30H
MOV WF FSR
LP4
MOV F COUNTER,W
; BSF PCLATH,1
BSF PCLATH,0
CALL TAB4
BCF PCLATH,0
; BCF PCLATH,1
SUBWF INDF,W ;查表所得的数据与 INDF 的内容相减,结果送 W
BTFSS STATUS,Z
GOTO PD5 ;内容不符,转 PD5 判断
INCF FSR ;内容相符,数据存储地址加一
INCF COUNTER
MOV F COUNTER,W
SUBLW .19 ;判断是否已到第一个问题的 19 个字符数
BTFSS STATUS,Z
GOTO LP4 ;没到,继续第一个问题的判断
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机