?? read_7135.asm
字號:
;*****************************************
;* CPU: 89C51 *
;* DATE:10:41 2005-5-2 *
;*EDITOR: LEO *
;*****************************************
EM1 EQU P0.0
EM2 EQU P0.1
EM3 EQU P0.2
EM4 EQU P0.3
EM5 EQU P0.4
EM6 EQU P0.5
EM7 EQU P0.6
EM8 EQU P0.7
POWER EQU P2.0
EM9 EQU P2.1
EM10 EQU P2.2
PASS_LED EQU P2.3
FAIL_LED EQU P2.4
DISP_RES EQU P2.5
DISP_CLK EQU P2.6
BUZZER EQU P2.7
ENABLE EQU P1.3
START EQU P1.0
PERIOD EQU P1.1
BCD_1 EQU P1.4
BCD_2 EQU P1.5
BCD_4 EQU P1.6
BCD_8 EQU P1.7
;------------------------------------------------------------------------------------------
B1 EQU P3.0 ;DB9 PIN 6
B2 EQU P3.1 ;DB9 PIN 7
B4 EQU P3.2 ;DB9 PIN 8
B8 EQU P3.3 ;DB9 PIN 9
;------------------------------------------------------------------------------------------
;THE CPU GND CONNECTION TO THE DB9 PIN 5 WITH DIGITAL METER.
;------------------------------------------------------------------------------------------
D1 EQU P3.4 ;DB9 PIN 1
D2 EQU P3.5 ;DB9 PIN 2
D3 EQU P3.6 ;DB9 PIN 3
D4 EQU P3.7 ;DB9 PIN 4
;------------------------------------------------------------------------------------------
TIME EQU 20H
T_RAM_L EQU 21H
T_RAM_H EQU 22H
T1_RAM_L EQU 23H
T1_RAM_H EQU 24H
ADD_0 EQU 25H
ADD_1 EQU 26H
T_OLD_L EQU 27H
T_OLD_H EQU 28H
T_OLD_L1 EQU 29H
T_OLD_H1 EQU 2AH
SING_RAM EQU 2BH
BCD_RAM EQU 2CH
OK_FLG EQU 2DH
H_L_FLG EQU 2EH
COUNTER EQU 2FH
COUNTER1 EQU 30H ; READ T1 OR T2<1.000MS COUNTER
COUNTER2 EQU 31H ; FIRST READ MOTOR'S TIME COUNTER
COUNTER3 EQU 32H ; MOTOR STOP COUNTER
COMP_FLG EQU 33H
T_FLG EQU 34H
STOP_FLG EQU 35H
ACOUNT EQU 36H
LOOP_COUNT EQU 37H
CHECK EQU 40H
TMP_3 EQU 41H
TMP_2 EQU 42H
TMP_1 EQU 43H
TMP_0 EQU 44H
OP_3 EQU 45H
OP_2 EQU 46H
OP_1 EQU 47H
OP_0 EQU 48H
DIV_16_1 EQU 49H
DIV_16_0 EQU 4AH
MUL_16_1 EQU 4BH
MUL_16_0 EQU 4CH
DEC_FLG EQU 4DH
LAST EQU 4EH
SINGLE_FLG EQU 4FH
d5_ram1 equ 50h
d4_ram1 equ 51h
d3_ram1 equ 52h
d2_ram1 equ 53h
v1_bcd1 equ 54h
v1_bcd0 equ 55h
v1_hex1 equ 56h
v1_hex0 equ 57h
LIGHT_FLG EQU 58H
DATAL_L EQU 59H
DATAL_H EQU 5AH
DATAH_L EQU 5BH
DATAH_H EQU 5CH
DATAM_L EQU 5DH
DATAM_H EQU 5EH
VOL1_OK EQU 5FH
;********************************************
;* Promarm start *
;********************************************
ORG 0H ;RESET
AJMP INTI
ORG 100H
INTI:
;;CLEAR
MOV R0, #7FH
CLEAR_RAM_LP:
MOV @R0, #0
CJNE R0, #1FH,CLEAR_RAM_LP
MOV SP, #60H ;PUT STACK POINTER
MOV TMOD, #11H ;PUT TIMER 0 TIMEER1
MOV P0,#00H
MOV P1,#0FFH
MOV P2,#00H
MOV P3,#0FFH
CALL TD_100MS
MOV SINGLE_FLG,#00H
CALL DISP_ZERO
JB START,MAIN1
CALL TD_200MS
JB START,MAIN1
MOV SINGLE_FLG,#0FFH
CLR ENABLE
CALL TD_100MS
SETB FAIL_LED
SETB PASS_LED
MAIN1:
CALL BUTTON
CLR ENABLE
CALL DISP_ZERO
MOV A,SINGLE_FLG
CJNE A,#0FFH,GO_NEXT
SETB FAIL_LED
SETB PASS_LED
CALL TD_100MS
JMP GO_NEXT1
GO_NEXT: CLR FAIL_LED
CLR PASS_LED
GO_NEXT1: CALL READ_BCD
MOV A,BCD_RAM
CJNE A,#01H,N01
JMP PRO_MODEL1
N01:
CJNE A,#02H,N02
JMP PRO_MODEL2
N02:
CJNE A,#03H,N03
JMP PRO_MODEL3
N03:
CJNE A,#04H,N04
JMP PRO_MODEL4
N04:
SETB FAIL_LED
CALL TD_300MS
CLR FAIL_LED
CALL TD_300MS
JMP MAIN1
;####################################################
PRO_MODEL1:
SETB EM9
CALL TD_300MS
SETB POWER
CALL TD_300MS
MOV H_L_FLG,#00H
CALL EM1_ON
CALL TD_300MS
BEGIN_1:
CALL EM2_ON
CALL TD_100MS
HI_LOOP1:
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_1
CALL DISP_STEP_1
MOV DATAL_L,#85H
MOV DATAL_H,#02H
MOV DATAH_L,#0E4H
MOV DATAH_H,#02H
JMP GO_CHECK_1
GO_HIGH_1: CALL DISP_STEP_6
MOV DATAL_L,#20H
MOV DATAL_H,#03H
MOV DATAH_L,#0b6H
MOV DATAH_H,#03H
GO_CHECK_1:
SETB EM4 ;;;;1 ;;;6
CALL TD_400MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP
CLR EM4
CALL TD_500MS
CALL JS
CALL RUN
CALL JS
CALL COMPARE_p
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_2
CALL DISP_STEP_2
JMP GO_CHECK_2 ;;;;2 ;;;7
GO_HIGH_2: CALL DISP_STEP_7
GO_CHECK_2:
SETB EM5
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP
JMP GO_ON
FAIL_JMP: JMP FAIL
GO_ON: CLR EM5
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP
CALL JS
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_3
CALL DISP_STEP_3
JMP GO_CHECK_3
GO_HIGH_3: CALL DISP_STEP_8 ;;;;3 ;;;8
GO_CHECK_3:
SETB EM6
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP
CLR EM6
CALL TD_300MS
CALL JS
CALL RUN
CALL JS
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_4
CALL DISP_STEP_4
JMP GO_CHECK_4
GO_HIGH_4: CALL DISP_STEP_9 ;;;4 ;;;9
GO_CHECK_4:
SETB EM7
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP
CLR EM7
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP
CALL JS
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_5
CALL DISP_STEP_5
MOV DATAL_L,#0d4H
MOV DATAL_H,#03H
MOV DATAH_L,#88H
MOV DATAH_H,#04H
JMP GO_CHECK_5
GO_HIGH_5: CALL DISP_STEP_10 ;;;;5 ;;10
MOV DATAL_L,#92H
MOV DATAL_H,#04H
MOV DATAH_L,#0baH
MOV DATAH_H,#04H
GO_CHECK_5:
SETB EM8
CALL TD_500MS
CALL TD_400MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP1
CALL JS
CALL RUN
CALL COMPARE_p
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP1
CLR EM8
CALL TD_300MS
CALL JS
CALL STOP_STATE
MOV A,STOP_FLG
CJNE A,#0FFH,FAIL_JMP1
CALL EM1_ON
CALL TD_100MS
CALL JS
CALL STOP_STATE
MOV A,STOP_FLG
CJNE A,#0FFH,FAIL_JMP1
MOV A,H_L_FLG
CJNE A,#00H,HI_END_1
CALL EM3_ON
CALL TD_100MS
MOV H_L_FLG,#0FFH
JMP HI_LOOP1
FAIL_JMP1: JMP FAIL
HI_END_1:
CALL PASS
JMP MAIN1
;#####################################################
PRO_MODEL2:
CLR EM10
SETB EM9
CALL TD_300MS
SETB POWER
CALL TD_300MS
MOV H_L_FLG,#00H
CALL EM1_ON
CALL TD_200MS
CALL STOP_STATE
MOV A,STOP_FLG
CJNE A,#0FFH,FAIL_JMP2_2
HI_LOOP2:
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_1_2
CALL DISP_STEP_1
MOV DATAL_L,#85H
MOV DATAL_H,#02H
MOV DATAH_L,#0E4H
MOV DATAH_H,#02H
JMP GO_CHECK_1_2
GO_HIGH_1_2: CALL DISP_STEP_7
MOV DATAL_L,#20H
MOV DATAL_H,#03H
MOV DATAH_L,#0b6H
MOV DATAH_H,#03H
GO_CHECK_1_2:
SETB EM3 ;;;;1 ;;;7
CALL TD_400MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP2_2
CLR EM3
CALL TD_500MS
CALL JS
CALL RUN
CALL JS
CALL COMPARE_p
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP2_2
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_2_2 ;;;;2 ;;;;8
CALL DISP_STEP_2
JMP GO_CHECK_2_2
GO_HIGH_2_2: CALL DISP_STEP_8
GO_CHECK_2_2:
SETB EM4
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP2_2
JMP GO_ON_2
FAIL_JMP2_2: JMP FAIL
GO_ON_2: CLR EM4
CALL TD_300MS
CALL JS
CALL RUN
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP2_2
CALL JS
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_3_2
CALL DISP_STEP_3
JMP GO_CHECK_3_2
GO_HIGH_3_2: CALL DISP_STEP_9 ;;;;3 ;;;9
GO_CHECK_3_2:
SETB EM5
CALL TD_300MS
CALL JS
CALL LIGHT_STATE
MOV A,LIGHT_FLG
CJNE A,#00H,FAIL_JMP2_2
CLR EM5
CALL TD_300MS
CALL JS
CALL RUN
CALL JS
CALL COMPARE_p_1
mov a, vol1_ok
cjne a, #0ffh, FAIL_JMP2_2
MOV A,H_L_FLG
CJNE A,#00H,GO_HIGH_4_2
CALL DISP_STEP_4
JMP GO_CHECK_4_2
GO_HIGH_4_2: CALL DISP_STEP_10 ;;;4 ;;;10
GO_CHECK_4_2:
SETB EM6
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -