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

📄 wbl.asm

📁 微波炉的代码说明 LCD显示 生产机型 名厂定制
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;MOVWF DISP_BUFFER2
;GOTO END_BUFFER2_CODING
;SET_M:
;ADDLW 01H
;MOVWF DISP_BUFFER2
;END_BUFFER2_CODING:
;*********************

;*********************
;MOVLW 0BH
;MOVWF PCLATH
;MOVF DISP_BUFFER3,0
;CALL CODE_TABLE
;MOVWF DISP_BUFFER3
;*********************


;*********************
;MOVLW 0BH
;MOVWF PCLATH
;MOVF DISP_BUFFER4,0
;ANDLW 7FH
;CALL CODE_TABLE
;BCF PCLATH,3
;BCF PCLATH,4
;BTFSC DISP_BUFFER4,7
;GOTO SET_S
;MOVWF DISP_BUFFER4
;GOTO END_BUFFER4_CODING
;SET_S:
;ADDLW 01H
;MOVWF DISP_BUFFER4
;END_BUFFER4_CODING:
;*********************



;*********************
;MOVLW 0BH
;MOVWF PCLATH
;MOVF DISP_BUFFER5,0
;ANDLW 7FH
;CALL CODE_TABLE
;BCF PCLATH,3
;BCF PCLATH,4
;BTFSC DISP_BUFFER5,7
;GOTO SET_KG
;MOVWF DISP_BUFFER5
;GOTO END_BUFFER5_CODING
;SET_KG:
;ADDLW 01H
;MOVWF DISP_BUFFER5
;END_BUFFER5_CODING:
;***********************

;***********************
;MOVLW 0BH
;MOVWF PCLATH
;MOVF DISP_BUFFER6,0
;ANDLW 7FH
;CALL CODE_TABLE
;BCF PCLATH,3
;BCF PCLATH,4
;BTFSC DISP_BUFFER6,7
;GOTO SET_DP
;MOVWF DISP_BUFFER6
;GOTO END_BUFFER6_CODING
;SET_DP:
;ADDLW 01H
;MOVWF DISP_BUFFER6
;END_BUFFER6_CODING:
;**********************


;**********************
;MOVLW 0BH
;MOVWF PCLATH
;MOVF DISP_BUFFER7,0
;ANDLW 7FH
;CALL CODE_TABLE
;BCF PCLATH,3
;BCF PCLATH,4
;BTFSC DISP_BUFFER7,7
;GOTO SET_N
;MOVWF DISP_BUFFER7
;GOTO END_BUFFER7_CODING
;SET_N:
;ADDLW 01H
;MOVWF DISP_BUFFER7
;END_BUFFER7_CODING:
;**********************


;^^^^^^^^^^^^^^^^^^^^^^

;^^^^^^^^^^^^^^^^^^^^^^^^^^




RET_DISP_INI:
;***************************

CALL SHADOW




BTFSC SYSTEM_STATUS2,POWERSAVING_DONE_FLAG
GOTO SKIP_DISP_BUFFER_SAVE


BSF STATUS,5
CLRF DELTA_ADDR
BCF STATUS,5

DISP_BUFFER_SAVING_LOOP:

BSF STATUS,5
MOVLW DISP_BUFFER_STARTING_ADDR
MOVWF FSR
MOVF DELTA_ADDR,0
ADDWF FSR,1
MOVF INDF,0
MOVWF EXCHANGE_BUFFER

MOVLW DISP_BUFFER_COPY_STARTING_ADDR
MOVWF FSR
MOVF DELTA_ADDR,0
ADDWF FSR,1
MOVF EXCHANGE_BUFFER,0
BSF FSR,7
MOVWF INDF
BCF FSR,7

INCF DELTA_ADDR,1
MOVF DELTA_ADDR,0
ADDLW DISP_BUFFER_COPY_STARTING_ADDR
SUBLW DISP_BUFFER_COPY_END_ADDR

BCF STATUS,5

BTFSC STATUS,0
GOTO DISP_BUFFER_SAVING_LOOP







;MOVF DISP_BUFFER1,0
;BSF STATUS,5
;MOVWF DISP_BUFFER1_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER2,0
;BSF STATUS,5
;MOVWF DISP_BUFFER2_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER3,0
;BSF STATUS,5
;MOVWF DISP_BUFFER3_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER4,0
;BSF STATUS,5
;MOVWF DISP_BUFFER4_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER5,0
;BSF STATUS,5
;MOVWF DISP_BUFFER5_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER6,0
;BSF STATUS,5
;MOVWF DISP_BUFFER6_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER7,0
;BSF STATUS,5
;MOVWF DISP_BUFFER7_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER0,0
;BSF STATUS,5
;MOVWF DISP_BUFFER0_COPY
;BCF STATUS,5

;MOVF DISP_BUFFER8,0
;BSF STATUS,5
;MOVWF DISP_BUFFER8_COPY
;BCF STATUS,5


;MOVF DISP_BUFFER9,0
;BSF STATUS,5
;MOVWF DISP_BUFFER9_COPY
;BCF STATUS,5


SKIP_DISP_BUFFER_SAVE:



BCF DISP_STATUS,SEG_DISP
BCF DISP_STATUS,MENU_DISP
BCF DISP_STATUS,CHOICE_DISP
BCF DISP_STATUS,POWER_SAVE
BCF DISP_STATUS,REFLASH_DISP
;******************************


BCF PCLATH,3
BCF PCLATH,4

RETURN


;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

DISP:

;##############################

;DISP_BUFFER0   ;旋转框低8位
;DISP_BUFFER1   ;DIG.1
;DISP_BUFFER2   ;DIG.2
;DISP_BUFFER3   ;DIG.3
;DISP_BUFFER4   ;DIG.7
;DISP_BUFFER5   ;DIG.6
;DISP_BUFFER6   ;DIG.5
;DISP_BUFFER7   ;DIG.4
;DISP_BUFFER8   ;淮,粤,P1,P2,P3
;DISP_BUFFER9   ;旋转框高4位,快,常,川,鲁
;LOOP_NUM



;###############################




BSF STATUS,5
CLRF TRISB
BCF STATUS,5

;MOVLW 20H

MOVLW DISP_BUFFER_STARTING_ADDR
MOVWF FSR

DISP_REFLASH:

CLRF RB

BSF RC,5     ;DATA

MOVLW 08H
MOVWF LOOP_NUM

CALL CLK
BCF RC,5


MOVF INDF,0
MOVWF RB



CALL DELAY25us



LOOP0:

CLRF RB

CALL CLK

INCF FSR,1
MOVF INDF,0
MOVWF RB




CALL DELAY25us



DECFSZ LOOP_NUM,1
GOTO LOOP0

MOVF INDF,0
MOVWF RB
BSF RC,6             ;10B



CALL DELAY25us

BCF RC,6


INCF FSR,1
MOVF INDF,0
MOVWF RB
BSF RC,7             ;9B



CALL DELAY25us

BCF RC,7

END_DISP:

CLRF RB
BCF RC,4
BCF RC,5




BSF STATUS,5
MOVLW 0FFH
MOVWF TRISB
BCF STATUS,5

RETURN

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

;*******************************

CLK:

BCF RC,4
NOP
NOP
NOP
NOP

BSF RC,4;CLK
NOP
NOP
NOP
NOP


END_CLK:
RETURN    ;CLK  

;*****************************


;***********************


DELAY25us:



MOVLW 34H
MOVWF DELAY_NUM

WAIT:

DECFSZ DELAY_NUM,1
GOTO WAIT


RETURN










;***********************
LEFT_RIGHT_TURN_TEST:

;返回SYSTEM_STATUS0,bit6-左旋,bit7-右旋
;KEY_WORD            ;编码开关的值

;KEY_WORD_LAST
;TURNING_STATUS_STEP ;判断的步骤
;SYSTEM_STATUS1,7
;SYSTEM_STATUS0,6
;SYSTEM_STATUS0,7




MOVF RA,0
MOVWF KEY_WORD
MOVLW 03H
ANDWF KEY_WORD,1

MOVF KEY_WORD_LAST,0
SUBWF KEY_WORD,0
BTFSC STATUS,2
GOTO END_TURNING_TEST




MOVF KEY_WORD,0
MOVWF KEY_WORD_LAST


MOVF TURNING_STATUS_STEP,1
BTFSC STATUS,2
GOTO STARTING_STATUS_TEST

MOVLW 01H
SUBWF TURNING_STATUS_STEP,0
BTFSC STATUS,2
GOTO LR_TEST0

MOVLW 02H
SUBWF TURNING_STATUS_STEP,0
BTFSC STATUS,2
GOTO MID_STATUS_TEST

MOVLW 03H
SUBWF TURNING_STATUS_STEP,0
BTFSC STATUS,2
GOTO LR_TEST1

MOVLW 04H
SUBWF TURNING_STATUS_STEP,0
BTFSC STATUS,2
GOTO LAST_STATUS_TEST

GOTO END_TEST

STARTING_STATUS_TEST:
MOVF KEY_WORD,1
BTFSS STATUS,2
GOTO END_TEST
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST

LR_TEST0:
MOVLW 01H
SUBWF KEY_WORD,0
BTFSC STATUS,2
GOTO R_TURN0

MOVLW 02H
SUBWF KEY_WORD,0
BTFSC STATUS,2
GOTO L_TURN0
GOTO END_TEST

R_TURN0:
BSF SYSTEM_STATUS1,7
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST

L_TURN0:
BCF SYSTEM_STATUS1,7
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST

MID_STATUS_TEST:
MOVLW 03H
SUBWF KEY_WORD,0
BTFSS STATUS,2
GOTO END_TEST
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST


LR_TEST1:
BTFSC SYSTEM_STATUS1,7
GOTO R_TURN1
GOTO L_TURN1

R_TURN1:
MOVLW 02H
SUBWF KEY_WORD,0
BTFSS STATUS,2
GOTO END_TEST
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST

L_TURN1:
MOVLW 01H
SUBWF KEY_WORD,0
BTFSS STATUS,2
GOTO END_TEST
INCF TURNING_STATUS_STEP,1
GOTO END_TURNING_TEST


LAST_STATUS_TEST:
MOVF KEY_WORD,1
BTFSS STATUS,2
GOTO END_TEST

BTFSC SYSTEM_STATUS1,7
GOTO SET_R_FLAG
GOTO SET_L_FLAG

SET_R_FLAG:
BSF SYSTEM_STATUS0,7
BCF SYSTEM_STATUS0,6


GOTO NEXT_LOOP_START

SET_L_FLAG:
BCF SYSTEM_STATUS0,7
BSF SYSTEM_STATUS0,6


NEXT_LOOP_START:
MOVLW 01H
MOVWF TURNING_STATUS_STEP
GOTO END_TURNING_TEST


END_TEST:
CLRF TURNING_STATUS_STEP
END_TURNING_TEST:
RETURN

;**************************



;***********************

MUL_SEG_SW:

;SEG_NUM
;SEG_NUM_LAST
;SEG_ADDR
;MENU_ADDR
;CHOICE_ADDR
;SEG_ADDR_LAST
;SEG_ADDR_COPY
;OVER_FLAG
;QULITY
;SECOND_TEMP
;SECOND_TEMP_COPY
;MINUTE_TEMP
;MINUTE_TEMP_COPY
;MENU_NUM

;MOVLW 31H


MUL_SEG_SW_START:

;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
BCF TMR0_CONFIG_REG,ZERO_START_FLAG
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


MOVLW SEGTIME_STARTING_ADDR
MOVWF FSR                      ;查表结果的缓冲区首地址

;*****************************************
CLEARUP_ON_TEST:

BTFSS SYSTEM_STATUS0,CLEARUP_FLAG
GOTO SKIP_CLEARUP


CLEARUP_MODE_SELECT:

MOVF CLEAR_MODE,1
BTFSC STATUS,2
GOTO CLEARUP_MODE0

MOVLW 01H
SUBWF CLEAR_MODE,0
BTFSC STATUS,2
GOTO CLEARUP_MODE1

CLEARUP_MODE0:
MOVLW 10H
MOVWF SEG_NUM
GOTO END_CLEARUP_MODE_GET


CLEARUP_MODE1
MOVLW 11H
MOVWF SEG_NUM
GOTO END_CLEARUP_MODE_GET



END_CLEARUP_MODE_GET:

BCF SYSTEM_STATUS0,LT
BCF SYSTEM_STATUS0,RT




GOTO MENU_LOOKING_UP


SKIP_CLEARUP:
;***************************************



MOVF RB,0
ANDLW 0F0H
MOVWF SEG_NUM
SWAPF SEG_NUM,1                   ;获得模式号


MENU_LOOKING_UP:

BSF STATUS,5
MOVF SYSTEM_STATUS5,0
BCF STATUS,5

ANDLW 04H
BTFSC STATUS,2
GOTO SHIFT_TEST


MOVF SEG_NUM_LAST,0
SUBWF SEG_NUM,0
BTFSS STATUS,2
GOTO SHIFT_HAPPEN

SHIFT_NO_HAPPEN:

BSF STATUS,5
DECFSZ MUL_SEG_SHIFT_COUNTER,1
GOTO SKIP_SEG_FIND

BCF SYSTEM_STATUS5,MUL_SEG_SHIFT_FLAG
BCF STATUS,5

GOTO TABLE_ADDR_REFLASH



SHIFT_HAPPEN:
BSF STATUS,5
BCF SYSTEM_STATUS5,MUL_SEG_SHIFT_FLAG
BCF STATUS,5

GOTO SKIP_SEG_FIND






SHIFT_TEST:

MOVF SEG_NUM_LAST,0
SUBWF SEG_NUM,0
BTFSC STATUS,2
GOTO SKIP_SEG_FIND


;^^^^^^^^^^^^^^^^^^^^^^^^
BSF STATUS,5
BSF SYSTEM_STATUS5,MUL_SEG_SHIFT_FLAG

MOVLW 06H
MOVWF MUL_SEG_SHIFT_COUNTER

BCF STATUS,5
GOTO SKIP_SEG_FIND
;^^^^^^^^^^^^^^^^^^^^^^^^



;查档位偏移地址
TABLE_ADDR_REFLASH:



MOVLW 0BH
MOVWF PCLATH


MOVF SEG_NUM,0
CALL SEG_ADDR_TABLE   ;根据模式号查得所需菜单的偏移地址
                 



MOVWF SEG_ADDR
MOVWF MENU_ADDR
MOVWF CHOICE_ADDR

MOVLW 01H
MOVWF MENU_NUM


BCF PCLATH,3
BCF PCLATH,4






SKIP_SEG_FIND:

;^^^^^^^^^^^^^^^^
BCF STATUS,5
;^^^^^^^^^^^^^^^^


BTFSC SYSTEM_STATUS0,LT
GOTO MENU_FIND

SKIP_MENU_FIND:

BTFSC SYSTEM_STATUS0,RT
GOTO MENUCHOICE_FIND

SKIP_MENUCHOICE_FIND:

GOTO TIME_GET


MENU_FIND:                 ;左转选择菜单

MOVLW 0CH
MOVWF PCLATH

INCF CHOICE_ADDR,1
MOVF CHOICE_ADDR,0
CALL MENU_TABLE

BCF PCLATH,3
BCF PCLATH,4

MOVWF OVER_FLAG
MOVLW 0F1H
SUBWF OVER_FLAG,0               ;此项菜单是否结束
BTFSC STATUS,2
GOTO THE_END_OF_MENU0   ;***********
MOVLW 0F2H
SUBWF OVER_FLAG,0               ;是否到整个菜单的结尾
BTFSC STATUS,2
GOTO THE_END_OF_SEG0    ;***********
GOTO MENU_FIND

THE_END_OF_MENU0:       ;***********

INCF MENU_NUM,1
INCF CHOICE_ADDR,1
MOVF CHOICE_ADDR,0
MOVWF MENU_ADDR
GOTO END_MENU_FIND           ;此项菜单结束加1则指向下一个菜单名   

THE_END_OF_SEG0:        ;***********
MOVF SEG_ADDR,0 
MOVWF MENU_ADDR
MOVWF CHOICE_ADDR

MOVLW 01H
MOVWF MENU_NUM

GOTO END_MENU_FIND           ;若到了整个菜单的结尾则应指向首个菜单名

END_MENU_FIND:

                      
GOTO TIME_GET


MENUCHOICE_FIND:

MOVLW 0CH
MOVWF PCLATH

INCF CHOICE_ADDR,1
MOVF CHOICE_ADDR,0
CALL MENU_TABLE

BCF PCLATH,3
BCF PCLATH,4
MOVWF OVER_FLAG
MOVLW 0F0H
SUBWF OVER_FLAG,0
BTFSC STATUS,2
GOTO THE_END_OF_CHOICE  ;****************
MOVLW 0F1H
SUBWF OVER_FLAG,0
BTFSC STATUS,2
GOTO THE_END_OF_MENU1    ;**************** 
MOVLW 0F2H
SUBWF OVER_FLAG,0
BTFSC STATUS,2
GOTO THE_END_OF_SEG1     ;****************
GOTO MENUCHOICE_FIND


THE_END_OF_CHOICE:

INCF CHOICE_ADDR,1
GOTO END_CHOICE_FIND

THE_END_OF_MENU1:
THE_END_OF_SEG1:
MOVF MENU_ADDR,0
MOVWF CHOICE_ADDR
GOTO END_CHOICE_FIND


END_CHOICE_FIND:




GOTO TIME_GET

TIME_GET:

MOVF CHOICE_ADDR,0
MOVWF CHOICE_ADDR_COPY


LOOP1:

MOVLW 0CH
MOVWF PCLATH






MOVF CHOICE_ADDR_COPY,0
CALL MENU_TABLE
MOVWF INDF
INCF FSR,1
INCF CHOICE_ADDR_COPY,1
MOVF CHOICE_ADDR_COPY,0
CALL MENU_TABLE

BCF PCLATH,3
BCF PCLATH,4

MOVWF INDF
INCF FSR,1;**************
INCF FSR,1
INCF CHOICE_ADDR_COPY,1

ANDLW 80H
BTFSC STATUS,2
GOTO LOOP1






;********************
QULITY_GET:

MOVLW 0CH
MOVWF PCLATH
MOVF CHOICE_ADDR_COPY,0
CALL MENU_TABLE

BCF PCLATH,3
BCF PCLATH,4

MOVWF QULITY                    ;查重量
;****************************




MOVLW SEGTIME_STARTING_ADDR
ADDLW 01H


;MOVLW 32H
MOVWF FSR

MOVF INDF,0
ANDLW 0FH

DECF FSR,1
SUBWF INDF,0
BTFSS STATUS,2
GOTO END_MENU_TABLE_LOOKUP

MOVF INDF,1
BTFSS STATUS,2
GOTO END_MENU_TABLE_LOOKUP





TIME_SET:

BCF SYSTEM_STATUS1,POWER_ERR_FLAG

MOVF CHOICE_ADDR_LAST,0
SUBWF CHOICE_ADDR,0
BTFSC STATUS,2
GOTO SET_START

CLRF SECOND_TEMP
CLRF MINUTE_TEMP

SET_START:

BTFSC SYSTEM_STATUS0,LT
GOTO SUB_UNIT
BTFSC SYSTEM_STATUS0,RT
GOTO ADD_UNIT

;^^^^^^^^^^^^^^^^^^^^^^





MOVF SECOND_TEMP,0
SUBWF MINUTE_TEMP,0

BTFSS STATUS,2
GOTO END_TIME_SET

MOVF SECOND_TEMP,1
BTFSS STATUS,2
GOTO END_TIME_SET

MOVLW 01H
SUBWF SEG_NUM,0
BTFSC STATUS,2
GOTO SET_ZERO_START_FLAG

MOVLW 08H
SUBWF SEG_NUM,0
BTFSC STATUS,2
GOTO SET_ZERO_START_FLAG

MOVLW 09H
SUBWF SEG_NUM,0
BTFSC STATUS,2
GOTO SET_ZERO_START_FLAG

GOTO END_TIME_SET



SET_ZERO_START_FLAG:
BSF TMR0_CONFIG_REG,ZERO_START_FLAG



;^^^^^^^^^^^^^^^^^^^^^^

GOTO END_TIME_SET

SUB_UNIT:
SUB_SECOND:
MOVF

⌨️ 快捷键说明

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