📄 tr_testj56.asm
字号:
;好多年做的,有些资料都不记得放那里了。传这些让大家看下。
;THE MAIN PROGRAM
;CPU AT89C52
;----------------------------------------------------------
;CPU脚位说明
;----------------------------------------------------------
;PIN1 IN KEY0
;PIN2 IN KEY1
;PIN3 IN KEY2
;PIN4 IN KEY3
;PIN5 IN KEY4
;PIN6 IN EYE
;PIN7 OUT 74LS373 SW2
;PIN8 OUT 74LS373 SW1
;PIN9 RESET
;PIN10 OUT RELAY_DATA0
;PIN11 OUT RELAY_DATA1
;PIN12 OUT RELAY_DATA2
;PIN13 OUT RELAY_DATA3
;PIN14 OUT RELAY_DATA4
;PIN15 OUT RELAY_DATA5
;PIN16 OUT RELAY_DATA6
;PIN17 OUT RELAY_DATA7
;PIN18 XATL1
;PIN19 XATL2
;PIN20 GND
;PIN21 OUT LCD_E
;PIN22 OUT LCD_RW
;PIN23 OUT LCD_RS
;PIN24 OUT MONITOR
;PIN25 OUT AD_CS
;PIN26 OUT AD_DATA_OUT
;PIN27 IN AD_DATA_IN
;PIN28 OUT AD_CLK
;PIN29 NC
;PIN30 NC
;PIN31 VCC
;PIN32 IO D7
;PIN33 IO D6
;PIN34 IO D5
;PIN35 IO D4
;PIN36 IO D3
;PIN37 IO D2
;PIN38 IO D1
;PIN39 IO D0
;PIN40=VCC
;---------------------------------------------------------------
;CPU脚位定义
;---------------------------------------------------------------
D0 BIT P0.0
D1 BIT P0.1
D2 BIT P0.2
D3 BIT P0.3
D4 BIT P0.4
D5 BIT P0.5
D6 BIT P0.6
D7 BIT P0.7
LCDDATA BIT P0
;----------------------------------------------------------------
K0_BIT BIT P1.0
K1_BIT BIT P1.1
K2_BIT BIT P1.2
K3_BIT BIT P1.3
K4_BIT BIT P1.4
EYE_BIT BIT P1.5
LS373_SW2 BIT P1.6
LS373_SW1 BIT P1.7
;----------------------------------------------------------------
LCD_CE BIT P2.2
LCD_RW BIT P2.1
LCD_RS BIT P2.0
MONITOR BIT P2.3
AD_CS BIT P2.4
AD_DOUT BIT P2.5
AD_DIN BIT P2.6
AD_CLK BIT P2.7
;----------------------------------------------------------------
RL0 BIT P3.0
RL1 BIT P3.1
RLL2 BIT P3.2
RL3 BIT P3.3
RL4 BIT P3.4
RL5 BIT P3.5
RL6 BIT P3.6
RL7 BIT P3.7
RELAY DATA P3
;------------------------------------------------------------------
;片内RAM区定义
;-----------------------------------------------------------------
EYE_DATA DATA 30H
KEY_RAM DATA 31H
FUN_RAM DATA 32H
AUTO_RAM DATA 33H
CACU_RAM0 DATA 34H
CACU_RAM1 DATA 35H
CACU_RAM2 DATA 36H
CACU_RAM3 DATA 37H
HAND_RAM DATA 38H
CHANEL DATA 39H
WAIT1 EQU 3BH
WAIT2 EQU 3CH
WAIT3 EQU 3DH
CACU_RUN_RAM0 DATA 3EH
CACU_RUN_RAM1 DATA 3FH
;---------------------------------------------------
;THE BIT DEFINE
;---------------------------------------------------
TEST_FLG BIT 20H.0
TEST_ERR_FLG BIT 20H.1
;----------------------------------------------------
ERR_FLG0 BIT 21H.0
ERR_FLG1 BIT 21H.1
ERR_FLG2 BIT 21H.2
ERR_FLG3 BIT 21H.3
ERR_FLG4 BIT 21H.4
ERR_FLG5 BIT 21H.5
ERR_FLG6 BIT 21H.6
ERR_FLG7 BIT 21H.7
ERR_FLG8 BIT 22H.0
ERR_FLG9 BIT 22H.1
ERR_FLG10 BIT 22H.2
ERR_FLG11 BIT 22H.3
ERR_FLG12 BIT 22H.4
ERR_FLG13 BIT 22H.5
ERR_FLG14 BIT 22H.6
ERR_FLG15 BIT 22H.7
ERR_FLG_DAL DATA 21H
ERR_FLG_DAH DATA 22H
;---------------------------------------------------
; DELAY C DATA
;---------------------------------------------------
REL_WAIT EQU 60
LCD_REL EQU 1
;--------------------------------------
; THE STR
;--------------------------------------
CMOD EQU 0D9H
AUXR EQU 8EH
;---------------------------------------------------
; THE PROGRAM START
;---------------------------------------------------
ORG 0000H
LJMP START
ORG 0003H
RETI
;LJMP INT0
ORG 000BH
LJMP T0
ORG 0013H
;LJMP NET_INT1
RETI
ORG 001BH
LJMP T1
ORG 0023H
RETI
;LJMP SERIAL_PORT
ORG 002BH
RETI
;LJMP T2_int
ORG 0050H
;-------------------------------------------
; THE START
;-------------------------------------------
GROUP1_ERR: CALL ALARN
AJMP GROUP1_GO
START: NOP
NOP
MOV P3,#0FFH
CLR MONITOR
SETB LS373_SW1
SETB LS373_SW2
MOV SP,#0C0H
CALL SETUP
CALL LCD_SETUP
CALL LCD_HIT_ME
CALL HIT_L_REL
CALL LCD_TEST
CALL FLAG_SETUP
MOV A,#0FFH
CALL DELAY
GROUP1_GO:
MOV A,#10H
CALL GET_AD_DATA
MOV B,50H
MOV A,51H
CALL CHANGE_HEX
CALL LCD_SHOW_GROUP1
CALL TEST_CACU
;JB TEST_ERR_FLG,GROUP1_ERR
CLR MONITOR
MOV A,#50
CALL DELAY
MOV A,#20H
CALL GET_AD_DATA
MOV B,50H
MOV A,51H
CALL CHANGE_HEX
CALL LCD_SHOW_GROUP2
CALL TEST_CACU
;JB TEST_ERR_FLG, GROUP1_ERR
CLR MONITOR
MOV A,#50
CALL DELAY
MOV A,#30H
CALL GET_AD_DATA
MOV B,50H
MOV A,51H
CALL CHANGE_HEX
CALL LCD_SHOW_GROUP3
CALL TEST_CACU
;JB TEST_ERR_FLG, GROUP1_ERR
CLR MONITOR
MOV A,#100
CALL DELAY
CALL LCD_START
MOV EYE_DATA,P1
MAIN: NOP
NOP
CALL KEY_SCAN
CJNE A,#0,KEY_DOWN
LJMP MAIN
KEY_DOWN: MOV KEY_RAM,A
MOV A,#4
CALL DELAY
CALL KEY_SCAN
CJNE A,KEY_RAM,MAIN
KEY_DOWN_DO: CJNE A,#20H,KEY_DOWN_DO1
MOV EYE_DATA,P1
CALL AUTO_TEST
LJMP MAIN
GO_RET: LJMP MAIN
KEY_DOWN_DO1: CJNE A,#1,KEY_DOWN_DO2
CALL MONITOR_DO
INC FUN_RAM
MOV HAND_RAM,#0
CALL FUN_MENU
CALL LCD_SETUP
CALL LCD_FUN
CALL LCD_AUTO
CALL LCD_WAIT
CALL KEY_OPEN
LJMP MAIN
KEY_DOWN_DO2: CJNE A,#2,KEY_DOWN_DO3
MOV HAND_RAM,#0
CALL MONITOR_DO
INC AUTO_RAM
CALL AUTO_MENU
CALL LCD_SETUP
CALL LCD_FUN
CALL LCD_AUTO
CALL LCD_WAIT
CALL KEY_OPEN
LJMP MAIN
KEY_DOWN_DO3: CJNE A,#4,KEY_DOWN_DO4
CALL MONITOR_DO
CALL AUTO_CHECK
;MOV A,AUTO_RAM
;XRL A,#1
;JZ HALF_TEST_DO
;MOV A,AUTO_RAM
;XRL A,#2
;JZ AUTO_TEST_DO
;MOV A,AUTO_RAM
;XRL A,#3
;JZ HAND_TEST_DO
CALL HALF_TEST
CALL KEY_OPEN
LJMP MAIN
HALF_TEST_DO: CALL HALF_TEST
CALL KEY_OPEN
LJMP MAIN
AUTO_TEST_DO: CALL AUTO_TEST
CALL KEY_OPEN
LJMP MAIN
HAND_TEST_DO: CALL HAND_TEST
CALL KEY_OPEN
LJMP MAIN
KEY_DOWN_DO4: CJNE A,#8,KEY_DOWN_DO5
CALL LCD_FR_LINE
INC HAND_RAM
CALL UP_TEST_DO
CALL KEY_OPEN
LJMP MAIN
KEY_DOWN_DO5: CJNE A,#10H,ERR_VAL
CALL LCD_FR_LINE
MOV A,HAND_RAM
XRL A,#0
JZ KEY_DOWN_DO51
DEC HAND_RAM
KEY_DOWN_DO51: NOP
NOP
CALL UP_TEST_DO
CALL KEY_OPEN
LJMP MAIN
ERR_VAL: LJMP MAIN
;--------------------------------------------
KEY_OPEN: CALL KEY_SCAN
CJNE A,KEY_RAM,KEY_OPEN_RET
LJMP KEY_OPEN
KEY_OPEN_RET: NOP
NOP
RET
;--------------------------------------------
KEY_SCAN: NOP
NOP
MOV A,P1
ANL A,#1FH
CJNE A,#01FH,KEY_VAL_GET
MOV A,P1
XRL A,EYE_DATA
JB ACC.5,EYE_VAL_GET
MOV A,#0
NOP
NOP
RET
EYE_VAL_GET: MOV A,#20H
NOP
NOP
RET
KEY_VAL_GET: MOV A,P1
ANL A,#1FH
ORL A,#0E0H
CPL A
NOP
NOP
RET
;--------------------------------------------
LCD_SETUP: NOP
NOP
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#38H
CLR LCD_CE
CALL LCDWAIT
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#06H
CLR LCD_CE
CALL LCDWAIT
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#0CH
CLR LCD_CE
CALL LCDWAIT
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#01H
CLR LCD_CE
CALL LCDWAIT
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#80H
CLR LCD_CE
CALL LCDWAIT
NOP
NOP
RET
;-----------------------------------------------
LCDWAIT: NOP
NOP
MOV LCDDATA,#0FFH
CLR LCD_RS
SETB LCD_RW
SETB LCD_CE
MOV A,LCDDATA
CLR LCD_CE
JB ACC.7,LCDWAIT
NOP
NOP
RET
;--------------------------------------------
CHAR: NOP
NOP
SETB LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,A
CLR LCD_CE
CALL LCDWAIT
NOP
NOP
RET
;--------------------------------------------
LCD_TEST: NOP
NOP
CLR LCD_RS
CLR LCD_RW
SETB LCD_CE
MOV LCDDATA,#80H
CLR LCD_CE
CALL LCDWAIT
MOV A,#54H;T
CALL CHAR
MOV A,#45H;E
CALL CHAR
MOV A,#53H;S
CALL CHAR
MOV A,#54H;T
CALL CHAR
MOV A,#20H;
CALL CHAR
MOV A,#4DH;M
CALL CHAR
MOV A,#45H;E
CALL CHAR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -