6ah在c语言,汇编比C语言更节省空间吗?(内面内容值得探讨,欢迎行家发表意见)...

这是一段家电控制上的汇编源程序,大家就悠着点看吧!眼睛痛不要找我啊!呵呵……

补充说明一点,是中颖的四位机,价格很便宜不超过4RMB。

;OSCILLATOR TYPE: Crystal oscillator

;WATCH DOG TIMER: Enable

;LVR VOLTAGE RAMGE:High LVR voltage

;OSCILLATOR RANGE:2~8MHZ

;LOW VOLTAGE RESET:Enable

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

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

;SYSTEM REGISTER DEFINE

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

IE                        EQU        00H        ;INTERRUPT ENABLE FLAG

IRQ                        EQU        01H        ;INTERRUPT REQUEST

T0M                        EQU        02H        ;TIMER O SET

T1M                        EQU        03H        ;TIMER 1 SET

T0L                        EQU        04H

T0H                        EQU        05H

T1L                        EQU        06H

T1H                        EQU        07H

PORTA                        EQU        08H        ;PORT A

PORTB                        EQU        09H

PORTC                        EQU        0AH

PORTD                   EQU     0BH

PORTE                   EQU     0CH

PORTF                        EQU        0DH

TBR                        EQU        0EH        ;TABLE BRANCH REGISTER

INX                        EQU        0FH        ;PSEUDO INDEX REGISTER

DPL                        EQU        10H        ;DATA POINTER FOR INX LOW NIBBLE

DPM                        EQU        11H        ;DATA POINTER FOR INX MIDDLE NIBBLE

DPH                        EQU        12H        ;DATA POINTER FOR INX HIGH NIBBLE

CMP_CONTROL                EQU        13H        ;COMPARATOR CONTROL REGISTER

CMP_STATUS                EQU        14H        ;COMPARATOR SUATUS REGISTER

T2SET                        EQU        15H        ;TIMER2 SET

PAOUT                        EQU        16H        ;PORT A INPUT/OUTPUT SET

PBOUT                        EQU        17H

PCOUT                        EQU        18H

PDOUT                   EQU     19H

PEOUT                   EQU     1AH

PFOUT                        EQU        1BH

T2_SIGNAL_SET                EQU        1CH        ;TIMER2 EXTERNAL SIGNAL SOURCE SET

;1DH RESERVED

WDT                        EQU        1EH        ;WATCH DOG TIMER

ROM_BANK                EQU        1FH        ;BANK REGISTER FOR ROM

PGOUT                        EQU        20H        ;PORT G INPUT/OUTPUT SET

PHOUT                        EQU        21H        ;PORT H INPUT/OUTPUT SET

PORTG                        EQU        22H        ;PORTG

PORTH                        EQU        23H        ;PORTH

PA_PULL_HIGH                EQU        24H        ;PORTA PULL-HIGH CONTROL

PB_PULL_HIGH                EQU        25H        ;PORTB PULL-HIGH CONTROL

PC_PULL_HIGH                EQU        26H        ;PORTC PULL-HIGH CONTROL

PD_PULL_HIGH                EQU        27H        ;PORTD PULL-HIGH CONTROL

PE_PULL_HIGH                EQU        28H        ;PORTE PULL-HIGH CONTROL

PF_PULL_HIGH                EQU        29H        ;PORTF PULL-HIGH CONTROL

PG_PULL_HIGH                EQU        2AH        ;PORTG PULL-HIGH CONTROL

PH_PULL_HIGH                EQU        2BH        ;PORTH PULL-HIGH CONTROL

TONE1_VOLUME_L                EQU        2CH        ;TONE GENERATOR 1 VOLUME LOW NIBBLE

TONE1_VOLUME_H                EQU        2DH        ;TONE GENERATOR 1 VOLUME HIGH NIBBLE

TONE2_VOLUME_L                EQU        2EH        ;TONE GENERATOR 2 VOLUME LOW NIBBLE

TONE2_VOLUME_H                EQU        2FH        ;TONE GENERATOR 2 VOLUME HIGH NIBBLE

RB7_RDT_L                EQU        00H        ;ROM DATA TABLE ADDRESS/DATA REGISTER LOW NIBBLE

RB7_RDT_ML                EQU        01H        ;ROM DATA TABLE ADDRESS/DATA REGISTER MIDDLE LOW NIBBLE

RB7_RDT_MH                EQU        02H        ;ROM DATA TABLE ADDRESS/DATA REGISTER MIDDLE HIGH NIBBLE

RB7_RDT_H                EQU        03H        ;ROM DATA TABLE ADDRESS/DATA REGISTER HIGH NIBBLE

RB7_T2L                        EQU        04H        ;TIMER2 LOAD/COUNTER REGISTER(LOW NIBBLE)

RB7_T2ML                EQU        05H        ;TIMER2 LOAD/COUNTER REGISTER(MIDDLE LOW NIBBLE)

RB7_T2MH                EQU        06H        ;TIMER2 LOAD/COUNTER REGISTER(MIDDLE HIGH NIBBLE)

RB7_T2H                        EQU        07H        ;TIMER2 LOAD/COUNTER REGISTER(HIGH NIBBLE)

RB7_TONE1_L                EQU        08H        ;TONE GENERATOR 1 LOW NIBBLE

RB7_TONE1_M                EQU        09H        ;TONE GENERATOR 1 MIDDLE NIBBLE

RB7_TONE1_H                EQU        0AH        ;TONE GENERATOR 1 HIGH NIBBLE

RB7_TONE2_L                EQU        0BH        ;TONE GENERATOR 2 LOW NIBBLE

RB7_TONE2_M                EQU        0CH        ;TONE GENERATOR 2 MIDDLE NIBBLE

RB7_TONE2_H                EQU        0DH        ;TONE GENERATOR 2 HIGH NIBBLE

RB7_T2_PRE                EQU        0EH        ;TIMER2 PRE-SCALER REGISTER

RB7_COMPARATOR_SET        EQU        0FH        ;COMPARATOR CHANNEL SELECT & COMPARATOR OUTPUT DATA

RB7_PF_IE_FLAG                EQU        10H        ;PORTF INTERRUPT ENABLE FLAGS

RB7_PG_IE_FLAG                EQU        11H        ;PORTG INTERRUPT ENABLE FLAGS

RB7_PF_IRQ_FLAG                EQU        12H        ;PORTF INTERRUPT REQUEST FLAGS

RB7_PG_IRQ_FLAG                EQU        13H        ;PORTG INTERRUPT REQUEST FLAGS

RB7_CMP_IE_IRQ_F        EQU        14H        ;CMP INTERRUPT ENABLE FLAG

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

;DATA MEMORY DEFINE

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

;-------------BANK 0--------------------

ACC                        EQU        30H

;PROTECT ACCUMULATER REGISTER(ONLY TIMER0 USED)

TEMP                        EQU        31H

;TEMP REGISTER

CLRACC                        EQU        32H

;CLEAR ACCUMULATER USED REGISTER

RELAY_FLAG                EQU        33H

;BIT0:BUZZER OUTPUT FLAG

;BIT1:WAVE OUTPUT FLAG

;BIT2:GRILL OUTPUT FLAG

;BIT3:LIGHT OUTPUT FLAG

MACHINE_TYPE                EQU        34H

;MACHINE TYPE REGISTER

GRILL_CT0                EQU        35H

GRILL_CT1                EQU        36H

GRILL_CT2                EQU        37H

;GRILL WORK TIME TIMER USED REGISTERS

LONG_PRESS_EACH_CT        EQU        38H

;LONG PRESS EACH TIME COUTER 0(BASE ON 12.25MS KEY SCAN TIMER)

TEMP_M                  EQU     39H

;MACRO PART USED TEMP REGISTER

TIMER_CLOCK_CT0                EQU        3AH

TIMER_CLOCK_CT1                EQU        3BH

TIMER_CLOCK_CT2                EQU        3CH

TIMER_CLOCK_CT3                EQU        3DH

TIMER_CLOCK_CT4                EQU        3EH

TIMER_CLOCK_CT5                EQU        3FH

;CLOCK TIMER USED REGISTERS

TIMER_5MIN_CT0                EQU        40H

;WORK TIME LONGER(EQUAL) THAN 5 MINUTES TIMER USED REGISTER 0

TIMER_5MIN_CT1                EQU        41H

;WORK TIME LONGER(EQUAL) THAN 5 MINUTES TIMER USED REGISTER 0

TIMER_5MIN_CT2                EQU        42H

;WORK TIME LONGER(EQUAL) THAN 5 MINUTES TIMER USED REGISTER 0

DEFROST_P               EQU     43H

;DEFROST PERIOD REGISTER

TEMP_R0                 EQU        44H

;TEMP REGISTER 0

TEMP_R1                 EQU        45H

;TEMP REGISTER 1

TEMP_R2                 EQU        46H

;TEMP REGISTER 2

TEMP_R3                 EQU        47H

;TEMP REGISTER 3

TEMP_R4                 EQU     48H

;TEMP REGISTER 4

TEMP_R5                 EQU     49H

;TEMP REGISTER 5

TEMP_R6                 EQU     4AH

;TEMP REGISTER 6

WORK_TYPE                EQU        4BH

;00H:NOT WORK TYPE        01H:CLOCK TYPE                02H:PRESET TYPE                03H:MICRO TYPE

;04H:FAST COOK TYPE        05H:DEFROST                06H:GRILL COMBI TYPE        07H:AUTO COOK TYPE

;08H:NO GRILL,FAST COOK 09H:CHILD LOCK                0AH:NOT USED                0BH:NOT USED

;0CH:NOT USED                0DH:NOT USED                0EH:NOT USED                0FH:COOK FINISH TYPE

KEY_VALUE               EQU     4CH

;ONE REAL KEY VALUE

KEY_VALUEH                EQU        4DH

;WORK TYPE NUMBER HIGH NIBBLE

KEY_VALUEL                EQU        4EH

;WORK TYPE NUMBER LOW NIBBLE

CODING_VALUEH                EQU        4FH

;CODING VALUE HIGH NIBBLE

CODING_VALUEL                EQU        50H

;CODING VALUE LOW NIBBLE

RELAY_ON_TIMEH                EQU        51H

;WAVE/GRILL/ RELAY ON TIME HIGH NIBBLE

RELAY_ON_TIMEL                EQU        52H

;WAVE/GRILL RELAY ON TIME LOW NIBBLE

KEY_LS                  EQU     53H

;0CH:CHILD LOCK KEY

;0EH:NO KEY              0FH:KEY ALREADY PROCESS

BUZZER_TYPE                EQU        54H

;BUZZER TYPE REGISTER

BUZZER_TIMES                EQU        55H

;BUZZER DEGREE REGISTER

DOOR_T                  EQU     56H

;SCAN KEY TIMES

KEY_T                   EQU     57H

;KEY SCAN TIMES

DISPLAY_BIT             EQU     58H

;DISPLAY BIT REGISTER

LEVEL                   EQU     59H

;MICROWAVE/AUTOFUNCTION LEVEL REGISTER

AUTO_CONFIRM_CT                EQU        5AH

;CLOCK AUTO CONFIRM TIMER USED REGISTER(BASED ON 500MS)

WORK_MINH                EQU        5BH

;WORK TIME NINUTE HIGH NIBBLE

WORK_MINL                EQU        5CH

;WORK TIME MINUTE LOW NIBBLE

WORK_SECH                EQU        5DH

;WORK TIME SECOND HIGH NIBBLE

WORK_SECL                EQU        5EH

;WORK TIME SECOND LOW NIBBLE

TIME_HORH                EQU        5FH

;CLOCK HOUR HIGH NIBBLE

TIME_HORL                EQU        60H

;CLOCK HOUR LOW NIBBLE

TIME_MINH                EQU        61H

;CLOCK MINUTE HIGH NIBBLE

TIME_MINL                EQU        62H

;CLOCK MINUTE LOW NIBBLE

PRE_TIME_MINH                EQU        63H

;PRESET TIME MINUTE HIGH NIBBLE

PRE_TIME_MINL                EQU        64H

;PRESET TIME MINUTE LOW NIBBLE

PRE_TIME_HORH                EQU        65H

;PRESET TIME HOUR HIGH NIBBLE

PRE_TIME_HORL                EQU        66H

;PRESET TIME HOUR LOW NIBBLE

WORK_FLAG8                EQU        67H

;BIT0:set_timer

;BIT1:auto_start

;BIT2:DURING KEY SCAN FLAG

;BIT3:POWER ON ALL LED ON FLAG

WORK_FLAG0              EQU     68H

;BIT0:LOOK POWER FLAG

;BIT1:1S DISPLAY RAY FLAG

;BIT2:500MS TIMER FLAG

;BIT3:500MS DISPLAY RAY FLAG

WORK_FLAG1              EQU     69H

;BIT0:START KEY INVILID FLAG

;BIT1:1S TIMER FLAG

;BIT2:50MS LONG PRESS KEY EACH FLAG

;BIT3:CLOCK ALREADY SET FLAG

WORK_FLAG2              EQU     6AH

;BIT0:CODE SWITCH IS "01"

;BIT1:CODE SWITCH IS "10"

;BIT2:CODE SWITCH DISABLE FLAG

;BIT3:5MS SCAN KEY FLAG

WORK_FLAG3              EQU     6BH

;BIT0:CHECK PRESET CLOCK CHECK

;BIT1:WORK START FLAG

;BIT2:WORK PAUSE FLAG

;BIT3:DOOR OPEN FLAG

WORK_FLAG4              EQU     6CH

;BIT0:SET TIME

;BIT1:run_timer

;BIT2:PRESET FLAG

;BIT3:LONG PRESS KEY ON FLAG

WORK_FLAG7              EQU     6DH

;BIT0:GRILL TYPE FLAG

;BIT1:TIMER1S

;BIT2:set_clock_start

;BIT3:LOCK_FIRST

NOW_COOK_TYPE_L          EQU            6EH

;NOW COOK TYPE REGISTER LOW NIBBLE

CS_BUFFER               EQU     70H

;CODDING SWITCH LAST STATE REGISTER

POWER_ON_LCD_ON_TIMER        EQU        71H

;POWER ON LCE ON TIMER USED REGISTER(BASED ON 500MS)

TIMER_KEY_CT0           EQU     72H

;SCAN KEY TIMER USED REGISTER 0

TIMER_KEY_CT1           EQU     73H

;SCAN KEY TIMER USED REGISTER 1

TIMER_RAY_CT0           EQU     74H

;DISPLAY PART RAY TIMER USED REGISTER 0

TIMER_RAY_CT1           EQU     75H

;DISPLAY PART RAY TIMER USED REGISTER 1

TIMER_RAY_CT2           EQU     76H

;DISPLAY PART RAY TIMER USED REGISTER 2

TIMER_CODE_CT           EQU     77H

;CODDING SWITCH SCAN TIMER USED REGISTER

TIMER_WT_CT0            EQU     78H

;WORK TIME TIEMR USED REGISTER 0

TIMER_WT_CT1            EQU     79H

;WORK TIME TIEMR USED REGISTER 1

TIMER_WT_CT2            EQU     7AH

;WORK TIME TIEMR USED REGISTER 2

TIMER_WT_CT3            EQU     7BH

;WORK TIME TIMER USED REGISTER 3

DIS_DATA_BUFFER_L        EQU        7CH

;DISPLAY DATA BUFFER LOW NIBBLE

DIS_DATA_BUFFER_H        EQU        7DH

;DISPLAY DATA BUFFER HIGH NIBBLE

TIMER_DIS_CT                EQU        7EH

;DISPLAY TIMER USED REGISTER

SET_STATE                EQU        7FH

;MICRO WAVE/GRILL/COMBI SET STATE(SOFT KEY MACHINE)

;------------------------------------------

;----------RAM BANK 1(80H--FFH)------------

;------------------------------------------

MUL_WORK_MINH1                EQU        00H

;MUL COOK WORK TIME MINUTE HIGH BANK 1

MUL_WORK_MINL1                EQU        01H

;MUL COOK WORK TIME MINUTE LOW BANK 1

MUL_WORK_SECH1                EQU        02H

;MUL COOK WORK TIME SECOND HIGH BANK 1

MUL_WORK_SECL1                EQU        03H

;MUL COOK WORK TIME SECOND LOW BANK 1

MUL_WORK_MINH3                EQU        08H

;MUL COOK WORK TIME MINUTE HIGH BANK 3

MUL_WORK_MINL3                EQU        09H

;MUL COOK WORK TIME MINUTE LOW BANK 3

MUL_WORK_SECH3                EQU        0AH

;MUL COOK WORK TIME SECOND HIGH BANK 3

MUL_WORK_SECL3                EQU        0BH

;MUL COOK WORK TIME SECOND LOW BANK 3

MUL_WORK_MINH4                EQU        0CH

;MUL COOK WORK TIME MINUTE HIGH BANK 4

MUL_WORK_MINL4                EQU        0DH

;MUL COOK WORK TIME MINUTE LOW BANK 4

MUL_WORK_SECH4                EQU        0EH

;MUL COOK WORK TIME SECOND HIGH BANK 4

MUL_WORK_SECL4                EQU        0FH

;MUL COOK WORK TIME SECOND LOW BANK 4

MUL_COOK_TYPE4H                EQU        10H

;MUL COOK TYPE BANK 4 HIGH NIBBLE

MUL_COOK_TYPE4L                EQU        11H

;MUL COOK TYPE BANK 4 LOW NIBBLE

MUL_COOK_TYPE3L                EQU        12H

;MUL COOK TYPE BANK 3 LOW NIBBLE

MUL_COOK_TYPE3H                EQU        13H

;MUL COOK TYPE BANK 3 HIGH NIBBLE

MUL_COOK_TYPE2L                EQU        14H

;MUL COOK TYPE BANK 2 LOW NIBBLE

MUL_COOK_TYPE2H                EQU        15H

;MUL COOK TYPE BANK 2 HIGH NIBBLE

MUL_COOK_TYPE1L         EQU     16H

;MUL COOK TYPE BANK 1 LOW NIBBLE

MUL_COOK_TYPE1H         EQU     17H

;MUL COOK TYPE BANK 1 HIGH NIBBLE

RB1_TIMER_BUZ_CT0           EQU     18H

;BUZZER TIME TIMER USED REGISTER 0

RB1_TIMER_BUZ_CT1           EQU     19H

;BUZZER TIME TIMER USED REGISTER 1

RB1_TIMER_BUZ_CT2           EQU     1AH

;BUZZER TIME TIMER USED REGISTER 2

RB1_TIMER_BUZ_CT3        EQU        1BH

;BUZZER TIME TIMER USED REGISTER 3

RB1_TIMER_SHARE_CT0         EQU     1CH

;LOOK STATE/CHILDLOCK TIMER USED REGISTER 0

RB1_TIMER_SHARE_CT1         EQU     1DH

;LOOK STATE/CHILDLOCK TIMER USED REGISTER 1

RB1_TIMER_SHARE_CT2         EQU     1EH

;LOOK STATE/CHILDLOCK TIMER USED REGISTER 2

RB1_TIMER_SHARE_CT3         EQU     1FH

;LOOK STATE/CHILDLOCK TIMER USED REGISTER 3

DEFROST_CT0             EQU     20H

;DEFROST 1/4 TIME 0.1 SECOND  BIT NIBBLE

DEFROST_CT1             EQU     21H

;DEFROST 1/4 TIME SECOND BIT LOW  NIBBLE

DEFROST_CT2             EQU     22H

;DEFROST 1/4 TIME SECOND BIT HIGH NIBBLE

DEFROST_CT3             EQU     23H

;DEFROST 1/4 TIME MINUTE BIT NIBBLE

DISPLAY_VALUE           EQU     24H

;DISPLAY VAULE

RB1_DOOR_OPEN_CT3        EQU        25H

;500MS TIMER USED REGISTER

RB1_DOOR_OPEN_CT4        EQU        26H

;500MS TIMER USED REGISTER

RB1_DOOR_OPEN_CT5        EQU        27H

;500MS TIMER USED REGISTER

RB1_OPTION_PE_LAST        EQU        2AH

RB1_OPTION_PC_LAST        EQU        2BH

;MACHINE TYPE OPTION LAST STATE

RB1_GET_OPTION_TIME        EQU        2CH

;MACHINE TYPE OPTION CHECK TIMES

DIS_LINE1H                EQU        30H

;DISPLAY PART:LINE1  HIGH PART NIBBLE

DIS_LINE1L                EQU        31H

;DISPLAY PART:LINE1  LOW PART NIBBLE

DIS_LINE2H                EQU        32H

;DISPLAY PART:LINE2  HIGH PART NIBBLE

DIS_LINE2L                EQU        33H

;DISPLAY PART:LINE2  LOW PART NIBBLE

DIS_LINE3H                EQU        34H

;DISPLAY PART:LINE3  HIGH PART NIBBLE

DIS_LINE3L                EQU        35H

;DISPLAY PART:LINE3  LOW PART NIBBLE

DIS_LINE4H                EQU        36H

;DISPLAY PART:LINE4  HIGH PART NIBBLE

DIS_LINE4L                EQU        37H

;DISPLAY PART:LINE4  LOW PART NIBBLE

DIS_LINE5H                EQU        38H

;DISPLAY PART:LINE5  HIGH PART NIBBLE

DIS_LINE5L                EQU        39H

;DISPLAY PART:LINE5  LOW PART NIBBLE

DIS_LINE6H                EQU        3AH

;DISPLAY PART:LINE6  HIGH PART NIBBLE

DIS_LINE6L                EQU        3BH

;DISPLAY PART:LINE7  LOW PART NIBBLE

DEF_AUTO                EQU        3CH

RB1_END_CT0                EQU        40H

;AFTER COOK END,3 MINUTES TIMER USED REGISTER 0

RB1_END_CT1                EQU        41H

;AFTER COOK END,3 MINUTES TIMER USED REGISTER 1

RB1_END_CT2                EQU        42H

;AFTER COOK END,3 MINUTES TIMER USED REGISTER 2

RB1_RELAY_CHANGE_CT0    EQU     43H

;RELAY CHANGE DELAY 100MS TIMER USED REGISTER

RB1_RELAY_CHANGE_CT1    EQU     44H

;RELAY CHANGE DELAY 100MS TIMER USED REGISTER

RB1_RELAY_CHANGE_CT2    EQU     45H

;RELAY CHANGE DELAY 100MS TIMER USED REGISTER

AUTO_CANCEL_CT0                EQU        48H

;PRESET CLOCK 10SECONDS CANCEL REGISTER(BASED ON 500MS)

AUTO_CANCEL_CT1                EQU        49H

;PRESET CLOCK 10SECONDS CANCEL REGISTER(BASED ON 500MS)

LONG_PRESS_TIME_CT        EQU        4AH

;LONG PRESS KEY TIMER USED COUNTER(BASED ON 500MS)

LONG_PRESS_EACH_CT1        EQU        4BH

;LONG PRESS KEY TIMER USED COUNTER(BASED ON 500MS)

START_2_MINUTES_CT0        EQU        4CH

;START KEY 2 MINUTES NOT VILID TIMER USED REGISTER(BASED ON 500MS)

START_2_MINUTES_CT1        EQU        4DH

;START KEY 2 MINUTES NOT VILID TIMER USED REGISTER(BASED ON 500MS)

TIMER_NOTON_CT0         EQU     50H

;SET FUNCTION & NOT START TIMER USED REGISTER 0(BASED ON 500MS)

TIMER_NOTON_CT1         EQU     51H

;SET FUNCTION & NOT START TIMER USED REGISTER 1(BASED ON 500MS)

TIMER_NOTON_CT2         EQU     52H

;SET FUNCTION & NOT START TIMER USED REGISTER 2(BASED ON 500MS)

LINE1_CURRENT_DATA_B        EQU     60H

;THE FIRST LINE KEY CURRENT NIBBLE(PORTB)

LINE1_CURRENT_DATA_D        EQU     61H

;THE FIRST LINE KEY CURRENT NIBBLE(PORTD)

LINE1_CURRENT_DATA_H        EQU     62H

;THE FIRST LINE KEY CURRENT NIBBLE(PORTH)

LINE2_CURRENT_DATA_B        EQU     63H

;THE SECOND LINE KEY CURRENT NIBBLE(PORTB)

LINE2_CURRENT_DATA_D        EQU     64H

;THE SECOND LINE KEY CURRENT NIBBLE(PORTD)

LINE2_CURRENT_DATA_H        EQU     65H

;THE SECOND LINE KEY CURRENT NIBBLE(PORTH)

LINE3_CURRENT_DATA_B        EQU     66H

;THE THIRD LINE KEY CURRENT NIBBLE(PORTB)

LINE3_CURRENT_DATA_D        EQU     67H

;THE THIRD LINE KEY CURRENT NIBBLE(PORTD)

LINE3_CURRENT_DATA_H        EQU     68H

;THE THIRD LINE KEY CURRENT NIBBLE(PORTH)

LINE4_CURRENT_DATA_B        EQU     69H

;THE FOURTH LINE KEY CURRENT NIBBLE(PORTB)

LINE4_CURRENT_DATA_D        EQU     6AH

;THE FOURTH LINE KEY CURRENT NIBBLE(PORTD)

LINE4_CURRENT_DATA_H        EQU     6BH

;THE FOURTH LINE KEY CURRENT NIBBLE(PORTH)

LINE5_CURRENT_DATA_B        EQU     6CH

;THE FIFTH LINE KEY CURRENT NIBBLE(PORTB)

LINE5_CURRENT_DATA_D        EQU     6DH

;THE FIFTH LINE KEY CURRENT NIBBLE(PORTD)

LINE5_CURRENT_DATA_H        EQU     6EH

;THE FIFTH LINE KEY CURRENT NIBBLE(PORTH)

LINE1_LAST_DATA_B        EQU     70H

;THE FIRST LINE KEY LAST NIBBLE(PORTB)

LINE1_LAST_DATA_D        EQU     71H

;THE FIRST LINE KEY LAST NIBBLE(PORTD)

LINE1_LAST_DATA_H        EQU     72H

;THE FIRST LINE KEY LAST NIBBLE(PORTH)

LINE2_LAST_DATA_B        EQU     73H

;THE SECOND LINE KEY LAST NIBBLE(PORTB)

LINE2_LAST_DATA_D        EQU     74H

;THE SECOND LINE KEY LAST NIBBLE(PORTD)

LINE2_LAST_DATA_H        EQU     75H

;THE SECOND LINE KEY LAST NIBBLE(PORTH)

LINE3_LAST_DATA_B        EQU     76H

;THE THIRD LINE KEY LAST NIBBLE(PORTB)

LINE3_LAST_DATA_D        EQU     77H

;THE THIRD LINE KEY LAST NIBBLE(PORTD)

LINE3_LAST_DATA_H        EQU     78H

;THE THIRD LINE KEY LAST NIBBLE(PORTH)

LINE4_LAST_DATA_B        EQU     79H

;THE FOURTH LINE KEY LAST NIBBLE(PORTB)

LINE4_LAST_DATA_D        EQU     7AH

;THE FOURTH LINE KEY LAST NIBBLE(PORTD)

LINE4_LAST_DATA_H        EQU     7BH

;THE FOURTH LINE KEY LAST NIBBLE(PORTH)

LINE5_LAST_DATA_B        EQU     7CH

;THE FIFTH LINE KEY LAST NIBBLE(PORTB)

LINE5_LAST_DATA_D        EQU     7DH

;THE FIFTH LINE KEY LAST NIBBLE(PORTD)

LINE5_LAST_DATA_H        EQU     7EH

;THE FIFTH LINE KEY LAST NIBBLE(PORTH)

;------------------------------------------

;----------RAM BANK 2(100H--167H)----------

;------------------------------------------

TEMP_DEF_NUM                EQU        00H

PAUSE_DEF_SECL                EQU        01H

PAUSE_DEF_SECH                EQU        02H

PAUSE_DEF_MINL                EQU        03H

PAUSE_DEF_MINH                EQU        04H

Time_second_timerL        equ        05H

Time_second_timerH        equ        06H

Time_minute_timerL        equ        07H

Time_minute_timerH        equ        08H

Time_disp_timer                equ        09H

LOCK_COUNT                equ        0aH

LOCK_BACK_COUNT                equ        0bh

AUTO_START_COUNT        equ        0ch

TIMER_PAUSE                equ        0dh

BANK0                        equ        0

BANK1                        equ        1

BANK2                        equ        2

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

;        MACRO  PART

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

INC8    MACRO        B0XH        ,B0XL

ADIM        B0XL        ,01H

LDI        TEMP_M        ,00H

ADCM        B0XH        ,00H

ENDM

;====================================

DEC8    MACRO        B0XH    ,B0XL

SBIM        B0XL        ,01H

LDI        TEMP_M        ,00H

SBCM        B0XH        ,00H

ENDM

;======================================

ADD8    MACRO        B0XH,B0XL,IYH,IYL       ;( XH,XL IS BANK0 )

ADIM        B0XL        ,IYL

LDI        TEMP_M        ,IYH

ADCM         B0XH        ,00H

ENDM

;=========================================

SUB8    MACRO        B0XH,B0XL,IYH,IYL       ;( XH,XL IS BANK0 )

SBIM        B0XL        ,IYL

LDI        TEMP_M        ,IYH

SBCM        B0XH        ,00H

ENDM

;=====================================

CJB4        MACRO        B0X        ,IY        ,ADDR

SBI        B0X     ,IY

BAZ        $+2

BC        ADDR

ENDM

;=====================================

CJB8        MACRO        B0XH,B0XL,IYH,IYL,ADDR

SBI        B0XH        ,IYH

BAZ        $+3

BC        ADDR

JMP        $+4

SBI        B0XL        ,IYL

BAZ        $+2

BC        ADDR

ENDM

;=====================================

CJBE4        MACRO        B0X        ,IY        ,ADDR

SBI     B0X     ,IY

BC      ADDR

ENDM

;====================================

CJBE8        MACRO        B0XH,B0XL,IYH,IYL,ADDR

SBI        B0XH        ,IYH

BAZ        $+3

BC        ADDR

JMP        $+3

SBI        B0XL        ,IYL

BC        ADDR

ENDM

;====================================

CJS4        MACRO        B0X        ,IY        ,ADDR

SBI        B0X        ,IY

BNC        ADDR

ENDM

;====================================

CJS8        MACRO        B0XH,B0XL,IYH,IYL,ADDR

SBI        B0XH        ,IYH

BAZ        $+3

BNC        ADDR

JMP        $+3

SBI        B0XL        ,IYL

BNC        ADDR

ENDM

;====================================

;CJSE4        MACRO        B0X        ,IY        ,ADDR

SBI        B0X        ,IY

BAZ        ADDR

BNC        ADDR

ENDM

;====================================

CJSE8        MACRO        B0XH,B0XL,IYH,IYL,ADDR

SBI        B0XH        ,IYH

BAZ        $+3

BNC        ADDR

JMP        $+4

SBI        B0XL        ,IYL

BAZ        ADDR

BNC        ADDR

ENDM

;====================================

CJE4        MACRO        B0X        ,IY        ,ADDR

SBI     B0X        ,IY

BAZ        ADDR

ENDM

;====================================

CJNE4        MACRO   B0X        ,IY        ,ADDR

SBI     B0X        ,IY

BNZ        ADDR

ENDM

;====================================

CJE8        MACRO        B0XH,B0XL,IYH,IYL,ADDR  ;( XH,XL IS BANK0 )

SBI          B0XH        ,IYH

BNZ        $+3

SBI        B0XL        ,IYL

BAZ            ADDR

ENDM

;===================================

CJNE8        MACRO        B0XH,B0XL,IYH,IYL,ADDR  ;( XH,XL IS BANK0 )

SBI            B0XH        ,IYH

BNZ            ADDR

SBI            B0XL        ,IYL

BNZ            ADDR

ENDM

;====================================

DJZ4        MACRO        B0X        ,ADDR                ;REALLY DECRESE 1

SBIM        B0X        ,01H

BAZ        ADDR

ENDM

;====================================

DJNZ4        MACRO        B0X        ,ADDR                ;REALLY DECRESE 1

SBIM        B0X        ,01H

BNZ        ADDR

ENDM

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

;      VECTOR   ADDRESS

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

ORG        00H

JMP        RESET

JMP        TIMER0INT               ;TIMER 0 INTERRUPT

RTNI

RTNI

RTNI

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

;SUBROUTINE NAME:TIMER0 INTERRUPT SERVICE SUBROUTINE

;FUNCTION:TIMER0 INTERRUPT SERVICE SUBROUTINE

;INPUT PARAMETER:RELAY_FLAG,WORK_FLAG0,WORK_FLAG1,WORK_FLAG2,WORK_FLAG3,NOW_COOK_TYPE

;OUTPUT PARAMETER:WORK_FLAG0,WORK_FLAG1,WORK_FLAG2,WORK_FLAG4

;USED REGISTERS:ACC,CLRACC,TEMP,RB1_TIMER_BUZ_CT0~RB1_TIMER_BUZ_CT2

;              :TIMER_RAY_CT0~TIMER_RAY_CT2,TIMER_CS_CT,TIMER_WT_CT0~TIMER_WT_CT3

;              :RB1_TIMER_SHARE_CT0~RB1_TIMER_SHARE_CT3,RB1_TIMER_SHARE_CT0~RB1_TIMER_SHARE_CT3

;              :TIMER_KEY_CT0~TIMER_KEY_CT1,RB1_TIMER_HF_CT0~TIMER_HF_CT3

;              :TIMER_CLOCK_CT0~TIMER_CLOCK_CT4,TIMER_PZ_CT0~TIMER_PZ_CT1,RB7_ALARM_SET,RB7_ALARM_ENV

;              :TIMER_DY_CT0~TIMER_DY_CT1,CS_BUFFER,DOOR_T,DIS_LINE1H,DIS_LINE1L

;               :DIS_LINE2H,DIS_LINE2L,DIS_LINE3H,DIS_LINE3L,DIS_LINE4H,DIS_LINE4L

;               :DIS_LINE5H,DIS_LINE5L,DIS_LINE6H,DIS_LINE6L,RB1_WAIT_TIME_CT0~2

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

TIMER0INT:

STA        ACC                        ,00H

ANDIM        IRQ                        ,0111B        ;CLEAR TIMER0 IRQ

BUZZER_OUTPUT_PART:

LDA        RELAY_FLAG                ,00H        ;BUZZER CHECK

BA0        BUZZER_OUTPUT_PART10

ANDIM        PORTF                        ,1110B        ;SET PF.0  AS LOW STATE

JMP        BUZZER_OUTPUT_PART20

BUZZER_OUTPUT_PART10:

ORIM        PFOUT                        ,0001B        ;SET PF.0 AS OUTPUT I/O

EORIM        PORTF                        ,0001B        ;OPEN BUZZER

BUZZER_OUTPUT_PART20:

LDI        TEMP                        ,01H

ADDM        RB1_TIMER_BUZ_CT0        ,01H    ;BUZZER TIME  TIMER PART

LDI        CLRACC                        ,00H    ;页间处理

ADCM        RB1_TIMER_BUZ_CT1        ,01H

LDI     CLRACC                  ,00H

ADCM    RB1_TIMER_BUZ_CT2           ,01H

LDI        CLRACC                        ,00H

ADCM        RB1_TIMER_BUZ_CT3        ,01H

BUZZER_OUTPUT_PART99:

;=========================================

RELAY_OUTPUT_PART:                              ;OPEN & CLOSE RELAY PART

CLOSE_WAVE_OUTPUT_PART:

LDA        WORK_FLAG3                ,00H

BA1        CLOSE_WAVE_OUTPUT_PART_LIGHTON        ;WORK START

LDA     WORK_FLAG3              ,00H    ;LIGHT RELAY STATE CHECK

BA3     CLOSE_WAVE_OUTPUT_PART_LIGHTON

JMP        CLOSE_WAVE_OUTPUT_PART10

CLOSE_WAVE_OUTPUT_PART_LIGHTON:

ORIM        PFOUT                        ,1000B        ;SET PF.3 AS OUTPUT I/O

ORIM    PORTF                   ,1000B  ;CLOSE LIGHT RELAY

CLOSE_WAVE_OUTPUT_PART10:

LDA     RELAY_FLAG              ,00H    ;CHECK MICRO-WAVE STATE

BA1     CLOSE_WAVE_OUTPUT_PART99

ORIM        PFOUT                        ,0100B        ;SET PF.2 AS OUTPUT I/O

ANDIM   PORTF                   ,1011B  ;CLOSE MICRO-WAVE RELAY

JMP     CLOSE_WAVE_OUTPUT_PART99

CLOSE_WAVE_OUTPUT_PART99:

OPEN_WAVE_OUTPUT_PART:

LDA     RELAY_FLAG              ,00H    ;CHECK MICRO-WAVE STATE

BA1     OPEN_WAVE_OUTPUT_PART10

JMP        OPEN_WAVE_OUTPUT_PART99

OPEN_WAVE_OUTPUT_PART10:

ORIM        PFOUT                        ,0100B        ;SET PF.2 AS OUTPUT I/O

ORIM    PORTF                   ,0100B  ;OPEN MICRO-WAVE RELAY

JMP     OPEN_WAVE_OUTPUT_PART99

OPEN_WAVE_OUTPUT_PART99:

CLOSE_GRILL_OUTPUT_PART:

LDA        WORK_FLAG3                ,00H

BA3     CLOSE_GRILL_OUTPUT_PART_LIGHTON

ORIM        PFOUT                        ,1000B        ;SET PF.3 AS OUTPUT I/O

ANDIM   PORTF                   ,0111B  ;CLOSE LIGHT RELAY

JMP        CLOSE_GRILL_OUTPUT_PART10

CLOSE_GRILL_OUTPUT_PART_LIGHTON:

ORIM        PFOUT                        ,1000B        ;SET PF.3 AS OUTPUT I/O

ORIM    PORTF                   ,1000B  ;CLOSE LIGHT RELAY

;CLOSE_GRILL_OUTPUT_PART:                        ;GRILL RELAY OPEN/CLOSE PART

;        LDA     RELAY_FLAG              ,00H    ;LIGHT RELAY STATE CHECK

;        BA3     CLOSE_GRILL_OUTPUT_PART10

;        ORIM        PFOUT                        ,1000B        ;SET PF.3 AS OUTPUT I/O

;        ANDIM   PORTF                   ,0111B  ;CLOSE LIGHT RELAY

CLOSE_GRILL_OUTPUT_PART10:

LDA     RELAY_FLAG              ,00H    ;CHECK GRILL REALY STATE

BA2     CLOSE_GRILL_OUTPUT_PART99

ORIM        PFOUT                        ,0010B        ;SET PF.1 AS OUTPUT I/O

ANDIM   PORTF                   ,1101B  ;CLOSE GRILL RELAY

JMP     CLOSE_GRILL_OUTPUT_PART99

CLOSE_GRILL_OUTPUT_PART99:

OPEN_GRILL_OUTPUT_PART:

LDA     RELAY_FLAG              ,00H    ;CHECK GRILL REALY STATE

BA2     OPEN_GRILL_OUTPUT_PART10

JMP     OPEN_GRILL_OUTPUT_PART99

OPEN_GRILL_OUTPUT_PART10:

ORIM        PFOUT                        ,0010B        ;SET PF.1 AS OUTPUT I/O

ORIM    PORTF                   ,0010B  ;OPEN GRILL RELAY

JMP     OPEN_GRILL_OUTPUT_PART99

OPEN_GRILL_OUTPUT_PART99:

RELAY_OUTPUT_PART99:

;========================================

LOOK_TIME_POWER_TIMER_PART:                        ;LOOK TIME(POWER)/CHILD LOCK TIMER PART

LDI        TEMP                        ,01H

ADDM    RB1_TIMER_SHARE_CT0         ,01H        ;RAM BANK 1 REGISTER

LDI     CLRACC                  ,00H

ADCM    RB1_TIMER_SHARE_CT2         ,01H        ;RAM BANK 1 REGISTER

LDI     CLRACC                  ,00H

ADCM    RB1_TIMER_SHARE_CT3         ,01H        ;RAM BANK 1 REGISTER

;================================================

RELAY_CHANGE_DELAY_TIMER_PART:                        ;WAVE,GRILL RELAY CHANGE DELAY 100MS TIMER PART

LDA     PORTF                        ,00H        ;GRILL RELAY

BA1     RELAY_CHANGE_DELAY_TIMER_PART10

;WAVE RELAY

BA2     RELAY_CHANGE_DELAY_TIMER_PART10

LDI     TEMP                    ,01H

ADDM    RB1_RELAY_CHANGE_CT0        ,01H    ;BANK 1 REGISTER

LDI     CLRACC                  ,00H

ADCM    RB1_RELAY_CHANGE_CT1        ,01H    ;BANK 1 REGISTER

LDI     CLRACC                  ,00H

ADCM    RB1_RELAY_CHANGE_CT2        ,01H    ;BANK 1 REGISTER

JMP     RELAY_CHANGE_DELAY_TIMER_PART99

RELAY_CHANGE_DELAY_TIMER_PART10:

LDI     CLRACC                  ,00H

STA     RB1_RELAY_CHANGE_CT0        ,01H    ;BANK 1 REGISTER

STA     RB1_RELAY_CHANGE_CT1        ,01H    ;BANK 1 REGISTER

STA     RB1_RELAY_CHANGE_CT2        ,01H    ;BANK 1 REGISTER

RELAY_CHANGE_DELAY_TIMER_PART99:

;========================================

RAY_DISPLAY_TIMER_PART:                                ;DISPLAY RAY TIMER PART

ADIM    TIMER_RAY_CT0           ,01H

LDI     CLRACC                  ,00H

ADCM    TIMER_RAY_CT1           ,00H

LDI     CLRACC                  ,00H

ADCM    TIMER_RAY_CT2           ,00H

CJS8    TIMER_RAY_CT2,TIMER_RAY_CT1,07H,0DH,RAY_DISPLAY_TIMER_PART99     ;500MS

LDI     TIMER_RAY_CT0           ,00H    ;CLEAR DISPLAY RAY TIMER

LDI     TIMER_RAY_CT1           ,00H

LDI     TIMER_RAY_CT2           ,00H

EORIM   WORK_FLAG0              ,1000B  ;SET 500MS DISPLAY RAY FLAG

BA3        RAY_DISPLAY_TIMER_PART99

EORIM        WORK_FLAG0                ,0010B        ;SET 1S DISPLAY RAY FLAG

RAY_DISPLAY_TIMER_PART99:

;============================================

CLOCK_TIMER_PART:                                    ;CLOCK TIMER PART

LDA     WORK_FLAG1              ,00H

BA3     CLOCK_TIMER_PART10                     ;CLOCK ALREADY SET

JMP     CLOCK_TIMER_PART99

CLOCK_TIMER_PART10:

ADIM    TIMER_CLOCK_CT0         ,01H

LDI     CLRACC                  ,00H

ADCM    TIMER_CLOCK_CT1         ,00H

LDI     CLRACC                  ,00H

ADCM    TIMER_CLOCK_CT2         ,00H

LDI     CLRACC                  ,00H

ADCM    TIMER_CLOCK_CT3         ,00H

LDI     CLRACC                  ,00H

ADCM    TIMER_CLOCK_CT4         ,00H

CLOCK_TIMER_PART99:

;============================================

TIMER_500MS_PART:                                ;500MS TIMER PART

LDI        TEMP                        ,01H

ADDM    RB1_DOOR_OPEN_CT3           ,01H

LDI     CLRACC                  ,00H

ADCM    RB1_DOOR_OPEN_CT4           ,01H

LDI     CLRACC                  ,00H

ADCM    RB1_DOOR_OPEN_CT5           ,01H

STA        TEMP                        ,00H

LDA        RB1_DOOR_OPEN_CT4           ,01H

STA        CLRACC                        ,00H

CJS8    TEMP,CLRACC,07H,0DH,TIMER_500MS_PART99     ;500MS

LDI        CLRACC                        ,00H

STA     RB1_DOOR_OPEN_CT3           ,01H    ;CLEAR  TIMER

STA     RB1_DOOR_OPEN_CT4           ,01H

STA     RB1_DOOR_OPEN_CT5           ,01H

ORIM        WORK_FLAG0                ,0100B        ;SET 500 MS FLAG

TIMER_500MS_PART99:

;============================================

TIMER_1000MS_PART:

LDA        LOCK_COUNT                ,BANK2

BNZ        TIMER_1000MS_PART10

LDA        WORK_FLAG4                ,00H

BA1        TIMER_1000MS_PART10

SBI        WORK_TYPE                ,07H

BNZ        $+4

LDA        WORK_FLAG8                ,BANK0

BA1        $+2

JMP        TIMER_1000MS_PART10

LDA     WORK_FLAG3              ,00H    ;WORK START CHECK

BA1     TIMER_1000MS_PART10             ;START STATE

BA2        TIMER_1000MS_PART99

LDI        TIMER_WT_CT0                ,00H

LDI        TIMER_WT_CT1                ,00H

LDI        TIMER_WT_CT2                ,00H

LDI        TIMER_WT_CT3                ,00H

ANDIM        WORK_FLAG1                ,1101B        ;CLEAR 1S FLAG

JMP     TIMER_1000MS_PART99

TIMER_1000MS_PART10:                            ;WORK ALREADY START

ADIM    TIMER_WT_CT0            ,01H

LDI     CLRACC                  ,00H

ADCM    TIMER_WT_CT1            ,00H

LDI     CLRACC                  ,00H

ADCM    TIMER_WT_CT2            ,00H

LDI        CLRACC                        ,00H

ADCM        TIMER_WT_CT3                ,00H

CJS8        TIMER_WT_CT2,TIMER_WT_CT1,0FH,0AH,TIMER_1000MS_PART99

LDI        TIMER_WT_CT0                ,00H

LDI        TIMER_WT_CT1                ,00H

LDI        TIMER_WT_CT2                ,00H

LDI        TIMER_WT_CT3                ,00H

ORIM        WORK_FLAG1                ,0010B        ;SET 1S FLAG

ORIM        WORK_FLAG7                ,0010B

TIMER_1000MS_PART99:

;=======================================

KEY_SCAN_TIMER_PART:                                ;5MS KEY SCAN TIMER PART

ADIM    TIMER_KEY_CT0           ,01H

LDI     CLRACC                  ,00H

ADCM    TIMER_KEY_CT1           ,00H

CJS8    TIMER_KEY_CT1,TIMER_KEY_CT0,03H,01H,KEY_SCAN_TIMER_PART99     ;12.25MS CHECK

ORIM    WORK_FLAG2              ,1000B  ;SET 12.25 MS SCAN KEY FLAG

LDI     TIMER_KEY_CT0           ,00H

LDI     TIMER_KEY_CT1           ,00H

ADIM        LONG_PRESS_EACH_CT        ,01H        ;LONG PRESS EACH TIME TIMER USED REGISTER

CJS4        LONG_PRESS_EACH_CT,04H,KEY_SCAN_TIMER_PART99

LDI        LONG_PRESS_EACH_CT        ,00H

ORIM        WORK_FLAG1                ,0100B        ;SET 50MS(49MS) LONG PRESS KEY ENABLE FLAG

KEY_SCAN_TIMER_PART99:

;=======================================

DISPLAY_OUTPUT_PART:                            ;DISPLAY OUTPUT  PART

ADIM        TIMER_DIS_CT                ,01H        ;1MS CHECK

CJS4        TIMER_DIS_CT,07H,DISPLAY_OUTPUT_PART05

LDI        TIMER_DIS_CT                ,00H

ADIM        DISPLAY_BIT                ,01H

CJS4        DISPLAY_BIT,07H,DISPLAY_OUTPUT_PART05

LDI        DISPLAY_BIT                ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART05:                          ;DISPLAY LINE SELECT

LDA        WORK_FLAG8                ,00H        ;SCAN KEY CHECK

BA2        DISPLAY_OUTPUT_PART99

LDI        PBOUT                        ,0FH        ;CLOSE DISPLAY

LDI        PDOUT                        ,0FH

LDI        PHOUT                        ,0FH

LDI        PORTB                        ,00H

ANDIM        PORTD                        ,0011B

LDI        PORTH                        ,00H

CJE4        DISPLAY_BIT,01H,DISPLAY_OUTPUT_PART10

CJE4        DISPLAY_BIT,02H,DISPLAY_OUTPUT_PART20

CJE4        DISPLAY_BIT,03H,DISPLAY_OUTPUT_PART30

CJE4        DISPLAY_BIT,04H,DISPLAY_OUTPUT_PART40

CJE4        DISPLAY_BIT,05H,DISPLAY_OUTPUT_PART50

CJE4        DISPLAY_BIT,06H,DISPLAY_OUTPUT_PART60

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART10:                                ;THE FIRST LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,0111B        ;SET PA.3 AS LOW STATE

ORIM        PDOUT                        ,0011B

ORIM        PORTD                        ,0011B

LDA        DIS_LINE6H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

STA        TEMP                        ,00H

ANDIM        TEMP                        ,1100B

ORM        PORTD                        ,00H

LDA        DIS_LINE6L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART20:                                ;THE SECOND LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,1011B        ;SET PA.2 AS LOW STATE

ORIM        PDOUT                        ,0011B

ORIM        PORTD                        ,0011B

LDA        DIS_LINE5H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

STA        TEMP                        ,00H

ANDIM        TEMP                        ,1100B

ORM        PORTD                        ,00H

LDA        DIS_LINE5L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART30:                                ;THE THIRD LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,1101B        ;SET PA.1 AS LOW STATE

ORIM        PDOUT                        ,0011B

ORIM        PORTD                        ,0011B

LDA        DIS_LINE4H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

STA        TEMP                        ,00H

ANDIM        TEMP                        ,1100B

ORM        PORTD                        ,00H

LDA        DIS_LINE4L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART40:                                ;THE FOUTRH LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,1110B        ;SET PA.0 AS LOW STATE

ORIM        PDOUT                        ,0011B

ORIM        PORTD                        ,0011B

LDA        DIS_LINE3H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

STA        TEMP                        ,00H

ANDIM        TEMP                        ,1100B

ORM        PORTD                        ,00H

LDA        DIS_LINE3L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART50:                                ;THE FIFTH LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,0FH

ORIM        PDOUT                        ,0011B

ANDIM        PORTD                        ,1110B

ORIM        PORTD                        ,0010B

LDA        DIS_LINE2H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

STA        TEMP                        ,00H

ORM        PORTD                        ,00H

LDA        DIS_LINE2L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART60:                                ;THE SIXTH LINE OUTPUT

LDI        PAOUT                        ,0FH

LDI        PORTA                        ,0FH

ORIM        PDOUT                        ,0011B

ANDIM        PORTD                        ,1101B

ORIM        PORTD                        ,0001B

LDA        DIS_LINE1H                ,01H        ;BANK 1 REGISTER

STA        PORTH                        ,00H

ORM        PORTD                        ,00H

LDA        DIS_LINE1L                ,01H        ;BANK 1 REGISTER

STA        PORTB                        ,00H

JMP        DISPLAY_OUTPUT_PART99

DISPLAY_OUTPUT_PART99:

JMP        TIMER0INT99

;=======================================

TIMER0INT99:

LDI        IE                        ,1000B        ;OPEN TIMER0 INT

LDA        ACC                        ,00H

RTNI

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

;SUBROUTINE NAME:INT DATA MEMORY

;FUNCTION:INT DATA MEMORY REGISTERS(030H--16FH)

;INPUT PARAMETER:NO PARAMETER

;OUTPUT PARAMETER:NO PARAMETER

;USED REGISTERS:CLRACC

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

INTDMR:                                        ;INT DATA MEMORY REGISTERS(030H--16FH)

LDI        DPH                ,00H

LDI        DPM                ,03H

LDI        DPL                ,00H

INT0:

LDI        INX                ,00H

ADIM        DPL                ,01H

LDI        CLRACC                ,00H

ADCM        DPM                ,00H

LDA        DPM                ,00H

BNZ        INT1

LDA        DPL                ,00H

BNZ        INT1

ADIM        DPH                ,01H

INT1:

SBI        DPH                ,02H

BNZ        INT0

SBI        DPM                ,06H

BNZ        INT0

SBI        DPL                ,0FH

BNZ        INT0

RTNI

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

;        INT        DISPLAY   DATA

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

INT_DIS_DATA:

LDI        TEMP_R0                ,0FH

STA        DIS_LINE1H        ,01H        ;RAM BANK 1 REGISTER

STA        DIS_LINE1L        ,01H

STA        DIS_LINE2H        ,01H

STA        DIS_LINE2L        ,01H

STA        DIS_LINE3H        ,01H

STA        DIS_LINE3L        ,01H

STA        DIS_LINE4H        ,01H

STA        DIS_LINE4L        ,01H

STA        DIS_LINE5H        ,01H

STA        DIS_LINE5L        ,01H

STA        DIS_LINE6H        ,01H

STA        DIS_LINE6L        ,01H

RTNI

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

;                DELAY PART

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

DELAY:

LDI        TEMP_R2                ,0FH

LDI        TEMP_R1                ,0FH

LDI        TEMP_R0                ,0FH

DELAY1:

LDI        WDT                ,0101B        ;CLEAR WATCH DOG(16MS)

NOP

NOP

NOP

NOP

NOP

SBIM        TEMP_R0                ,01H

LDI        TEMP_R3                ,00H

SBCM        TEMP_R1                ,00H

LDI        TEMP_R3                ,00H

SBCM        TEMP_R2                ,00H

BC        DELAY1

RTNI

KEY_DELAY:

LDI        TEMP_R0                        ,0AH        ;DELAY

SBIM        TEMP_R0                        ,01H

BC        $-1

RTNI

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

;                 MAIN  PROGRAMME  PART

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

RESET:

NOP

LDI        IE                ,00H

LDI        T0M                ,0111B        ;4MHZ,0.25MS,SET TO SHARED WITH PORTC.3

LDI        T0L                ,06H

LDI        T0H                ,00H

LDI        CMP_CONTROL        ,00H        ;COMPARATOR OUTPUT FALLING EDGE GENERATE INTERRUPT,PORTE.0 IS SHARED AS I/O,INTERNAL REFERENCE VOLTAGE(VDD/2) IS SELECTED AS COMPARATOR NEGATIVE INPUT,COMPARATOR DISABLE

LDI        CMP_STATUS        ,00H        ;COMPARATOR0 IS NOT OPERATION,COMPARATOR POSITIVE INPUT IS FROM CMPP1

LDI        T2SET                ,00H        ;TIMER2 TIMER/COUNTER STOPS

LDI        T2_SIGNAL_SET        ,00H        ;NO EXTERNAL SIGNAL SOURCE IS SELECTED

LDI        TONE1_VOLUME_H        ,00H        ;TONE GENERATOR 1 DISABLE

LDI        TONE1_VOLUME_L        ,00H

LDI        TONE2_VOLUME_H        ,00H        ;TONE GENERATOR 2 DISABLE

LDI        TONE2_VOLUME_L        ,00H

LDI        PORTA                ,0FH        ;CLOSE DISPLAY

LDI        PORTB                ,00H

LDI        PORTC                ,00H

LDI     PORTD           ,0011B

LDI     PORTE           ,00H

LDI        PORTF                ,00H        ;CLOSE RELAY,BUZZER

LDI        PAOUT                ,0FH    ;SET PORTA AS OUTPUT I/O

LDI        PBOUT                ,0FH    ;SET PORTB AS OUTPUT I/O

LDI        PCOUT                ,00H    ;SET PORTC AS INPUT I/O

LDI     PDOUT           ,0FH    ;SET PORTD AS OUTPUT I/O

LDI     PEOUT           ,00H    ;SET PORTE AS INPUT I/O

LDI        PFOUT                ,1111B  ;SET PORTF AS OUTPUT I/O

CALL        DELAY

CALL        DELAY

CALL        INTDMR                        ;CLEAR DATA MEMORY REGISTERS

LDI     BUZZER_TYPE     ,01H    ;SET POWER ON BUZZER FLAG

ORIM    WORK_FLAG2      ,0100B  ;SET CODDING SWITCH DISABLE FLAG

CALL        INT_DIS_DATA

ORIM        WORK_FLAG8        ,1000B        ;SET POWER ON LCD ON FLAG

LDI     TIME_HORH               ,01H

LDI     TIME_HORL               ,02H

LDI     TIME_MINH               ,00H

LDI     TIME_MINL               ,00H

ORIM    WORK_FLAG1              ,1000B  ;SET CLOCK ALREADY SET FLAG

;*******************2006/4/5 15:08**********************

LDI        T0M                ,0111B        ;4MHZ,0.25MS,SET TO SHARED WITH PORTC.3

LDI        T0L                ,06H

LDI        T0H                ,00H

;*******************2006/4/5 15:08**********************

LDI        WDT                ,0101B        ;CLEAR WATCH DOG(16MS)

LDI        IRQ                ,00H        ;CLEAR INTERRUPT REQUEST

;*******************2006/4/7 09:00**********************

LDI        KEY_LS                ,0FH

;*******************2006/4/7 09:00**********************

MAINPART:

LDI        WDT                ,0101B        ;CLEAR WATCH DOG(16MS)

LDI        IE                ,1000B        ;OPEN TIMER0 INT

LDI        T0M                ,0111B        ;4MHZ,0.25MS

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

;SUBROUTINE NAME:KEY SCAN AND PROCESS PART

;FUNCTION:SCAN ALL KEY AND PROCESS

;INPUT PARAMETER:WORK_FLAG2,WORK_FLAG3,WORK_FLAG4,RB1_TIMER_SHARE_CT0~RB1_TIMER_SHARE_CT3

;WORK_FLAG7

;OUTPUT PARAMETER:WORK_TYPE,BUZZER_TYPE

;USED REGISTERS:TEMP_R0~TEMP_R5,DOOR_T,KEY_LS,KEY_T,KEY_VALUE,KEY_VALUEL,KEY_VALUEH

;              :CODING_VALUEL,CODING_VALUEH,NOW_COOK_TYPE,MUL_COOK_TYPE1~MUL_COOK_TYPE3

;              :MUL_WORK_MINH1~3,MUL_WORK_MINL1~3,MUL_WORK_SECH1~3,MUL_WORK_SECL1~3

;              :MUL_ORDER1~3

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

KEY_SCAN:

LDA        WORK_FLAG2                ,00H        ;12.25 MS?NO,GOTO OUT KEYSCAN

BA3        READKEY

JMP        OUT_KEY_PART

READKEY:

ANDIM        WORK_FLAG2                ,0111B        ;CLEAR 12.25 MS FLAG

ORIM        WORK_FLAG8                ,0100B        ;SET KEY SCAN FLAG

LDI        PAOUT                        ,0FH        ;CLOSE DISPLAY

LDI        PORTA                        ,0FH

LDI        PBOUT                        ,0FH

LDI        PORTB                        ,00H

LDI        PDOUT                        ,0FH

LDI        PORTD                        ,0011B

LDI        PHOUT                        ,0FH

LDI        PORTH                        ,00H

NOP

LDI     PBOUT                   ,00H         ;SET PB AS INPUT I/O

LDI        PDOUT                        ,0011B        ;SET PD.3 PD.2 AS INPUT I/O

LDI        PHOUT                        ,00H        ;SET PH AS INPUT I/O

LDI        PB_PULL_HIGH                ,0FH        ;SET PB PULL HIGH

LDI        PD_PULL_HIGH                ,1100B        ;SET PD.3 PD.2 PULL HIGH

LDI        PH_PULL_HIGH                ,0FH        ;SET PH PULL HIGH

READ_LINE1:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,0FH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ORIM        PORTC                        ,0100B

LDI        PEOUT                        ,00H

LDI        PE_PULL_HIGH                ,0FH        ;SET PE PULL HIGH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ANDIM        PORTC                        ,1011B        ;SET PC.2 AS LOW STATE

CALL        KEY_DELAY

LDA     PORTB                   ,00H    ;READ THE FIRST LINE

STA     LINE1_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

LDA        PORTD                        ,00H

STA        LINE1_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

READ_LINE2:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,0FH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ORIM        PORTC                        ,0100B

LDI        PEOUT                        ,0100B        ;SET PE.2 AS OUTPUT I/O

ANDIM        PCOUT                        ,1011B        ;SET PC.2 AS INPUT I/O

LDI        PC_PULL_HIGH                ,0100B        ;PC.2 PULL HIGH

LDI        PE_PULL_HIGH                ,1011B        ;SET PE.3 PE.1 PE.0 PULL HIGH

ANDIM        PORTE                        ,1011B        ;SET PE.2 AS LOW STATE

CALL        KEY_DELAY

LDA     PORTB                   ,00H    ;READ THE SECOND LINE

STA     LINE2_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

LDA        PORTD                        ,00H

STA        LINE2_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

READ_LINE3:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,0FH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ORIM        PORTC                        ,0100B

LDI        PEOUT                        ,0010B        ;SET PE.1 AS OUTPUT I/O

ANDIM        PORTE                        ,1101B        ;SET PE.1 AS LOW STATE

ANDIM        PCOUT                        ,1011B        ;SET PC.2 AS INPUT I/O

LDI        PC_PULL_HIGH                ,0100B        ;PC.2 PULL HIGH

LDI        PE_PULL_HIGH                ,1101B        ;SET PE.3 PE.2 PE.0 PULL HIGH

CALL        KEY_DELAY

LDA     PORTB                   ,00H    ;READ THE THIRD LINE

STA     LINE3_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

LDA        PORTD                        ,00H

STA        LINE3_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

READ_LINE4:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,0FH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ORIM        PORTC                        ,0100B

LDI        PEOUT                        ,0001B        ;SET PE.0 AS OUTPUT I/O

ANDIM        PORTE                        ,1110B        ;SET PE.0 AS LOW STATE

ANDIM        PCOUT                        ,1011B        ;SET PC.2 AS INPUT I/O

LDI        PC_PULL_HIGH                ,0100B        ;PC.2 PULL HIGH

LDI        PE_PULL_HIGH                ,1110B        ;SET PE.3 PE.2 PE.1 PULL HIGH

CALL        KEY_DELAY

LDA     PORTB                   ,00H    ;READ THE FOURTH LINE

STA     LINE4_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

LDA        PORTD                        ,00H

STA        LINE4_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

READ_LINE5:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,0FH

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ORIM        PORTC                        ,0100B

LDI        PEOUT                        ,1000B        ;SET PE.3 AS OUTPUT I/O

ANDIM        PORTE                        ,0111B        ;SET PE.3 AS LOW STATE

ANDIM        PCOUT                        ,1011B        ;SET PC.2 AS INPUT I/O

LDI        PC_PULL_HIGH                ,0100B        ;PC.2 PULL HIGH

LDI        PE_PULL_HIGH                ,0111B        ;SET PE.0 PE.2 PE.1 PULL HIGH

CALL        KEY_DELAY

LDA     PORTB                   ,00H    ;READ THE FIFTH LINE

STA     LINE5_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

LDA        PORTD                        ,00H

STA        LINE5_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

;==========================================================

DOOR_CHECK:

LDI        PAOUT                        ,0FH        ;CLOSE DISPLAY

LDI        PORTA                        ,0FH

LDI        PBOUT                        ,0FH

LDI        PORTB                        ,00H

LDI        PDOUT                        ,0FH

LDI        PORTD                        ,0011B

LDI        PHOUT                        ,0FH

LDI        PORTH                        ,00H

ANDIM        PAOUT                        ,1101B        ;SET PA.1 AS INPUT I/O

LDI        PA_PULL_HIGH                ,1101B        ;CLOSE PORTA.1 PULL HIGH

NOP

CALL        KEY_DELAY

NOP

LDA        PORTA                        ,00H        ;SCAN DOOR STATE

BA1        DOOR_CHECK4

JMP     DOOR_CHECK3

DOOR_CHECK3:                                    ;DOOR CLOSE STATE

LDI        DOOR_T                        ,00H        ;CLEAR DOOR CHECK TIMES

ANDIM        WORK_FLAG3                ,0111B        ;CLEAR DOOR OPEN FLAG

JMP        DOOR_CHECK99

DOOR_CHECK4:

ADIM        DOOR_T                        ,01H    ;DOOR OPEN STATE

CJS4        DOOR_T,08H,DOOR_CHECK99            ;CHECK DOOR STATE 8 TIMES

ORIM        WORK_FLAG3                ,1000B        ;SET DOOR OPEN FLAG

DOOR_CHECK99:

LDI        PEOUT                        ,0FH        ;SET PE AS OUTPUT I/O

LDI        PORTE                        ,00H        ;SET PE AS LOW STATE

ORIM        PCOUT                        ,0100B        ;SET PC.2 AS OUTPUT I/O

ANDIM        PORTC                        ,1011B        ;SET PC.2 AS LOW STATE

ORIM        PDOUT                        ,0011B        ;SET PD.1,PD.0 AS OUTPUT I/O

ORIM        PORTD                        ,0011B        ;SET PD.1,PD.0 AS HIGH STATE

ANDIM        WORK_FLAG8                ,1011B        ;CLEAR KEY SCAN FLAG

;===============================================

LDA        MACHINE_TYPE                ,00H        ;TEST MODE CHECK

BA0        KEY_CHECK99

;=================================================

KEY_CHECK:

LDA        LINE1_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

STA        TEMP_R0                        ,00H

ANDIM        TEMP_R0                        ,1100B        ;CLEAR BIT1 BIT0

STA        LINE1_CURRENT_DATA_D        ,01H

LDA        LINE2_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

STA        TEMP_R0                        ,00H

ANDIM        TEMP_R0                        ,1100B        ;CLEAR BIT1 BIT0

STA        LINE2_CURRENT_DATA_D        ,01H

LDA        LINE3_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

STA        TEMP_R0                        ,00H

ANDIM        TEMP_R0                        ,1100B        ;CLEAR BIT1 BIT0

STA        LINE3_CURRENT_DATA_D        ,01H

LDA        LINE4_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

STA        TEMP_R0                        ,00H

ANDIM        TEMP_R0                        ,1100B        ;CLEAR BIT1 BIT0

STA        LINE4_CURRENT_DATA_D        ,01H

LDA        LINE5_CURRENT_DATA_D        ,01H        ;BANK 1 REGISTER

STA        TEMP_R0                        ,00H

ANDIM        TEMP_R0                        ,1100B        ;CLEAR BIT1 BIT0

STA        LINE5_CURRENT_DATA_D        ,01H

LDI        TEMP_R0                        ,0FH        ;NO KEY PRESS CHECK

SUB        LINE1_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0FH

SUB        LINE2_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0FH

SUB        LINE3_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0FH

SUB        LINE4_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0FH

SUB        LINE5_CURRENT_DATA_B        ,01H        ;BANK 1 REGISTER

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0CH

SUB        LINE1_CURRENT_DATA_D        ,01H

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0CH

SUB        LINE2_CURRENT_DATA_D        ,01H

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0CH

SUB        LINE3_CURRENT_DATA_D        ,01H

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0CH

SUB        LINE4_CURRENT_DATA_D        ,01H

BNZ        KEY_CHECK01

LDI        TEMP_R0                        ,0CH

SUB        LINE5_CURRENT_DATA_D        ,01H

BNZ        KEY_CHECK01

CALL    SAVE_KEY_SCAN_VALUE             ;SAVE CURRENT KEY SCAN VALUE

LDI     KEY_LS                  ,0EH    ;NO KEY

LDA        WORK_FLAG3                ,00H

BA0        KEY_CHECK00                        ;CHECK LOOK TIME/PRE-TIME FLAG

LDA        WORK_FLAG0                ,00H

BA0        KEY_CHECK00                        ;CHECK LOOK POWER FLAG

CALL        CLEAR_LOOK_TIME                        ;CLEAR LONG PRESS(CHILD LOCK) TIME

LDI        LONG_PRESS_EACH_CT        ,00H        ;CLEAR LONG PRESS KEY USED COUNTER

STA        LONG_PRESS_TIME_CT        ,01H

STA        LONG_PRESS_EACH_CT1        ,01H

ANDIM        WORK_FLAG4                ,0111B        ;CLEAR LONG PRESS KEY ON FLAG

-----此内容被lixu于2006-10-20,20:12:41编辑过

-----此内容被lixu于2006-10-20,20:15:27编辑过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值