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

📄 pgm.asm

📁 ic tester 1 ic tester 1 ic tester 1
💻 ASM
📖 第 1 页 / 共 5 页
字号:


; ***LCD CONTROL***
LCD_RS    EQU    P2.7     ;LCD REGISTER SELECT LINE
LCD_E     EQU    P2.6    ;LCD ENABLE LINE
LCD_DB4   EQU    P2.5     ;PORT 1 IS USED FOR DATA
LCD_DB5   EQU    P2.4     ;USED FOR DATA
LCD_DB6   EQU    P2.3    ;FOR DATA
LCD_DB7   EQU    P2.2     ;FOR DATA

; ***CURSOR CONTROL INSTRUCTIONS***

OFFCUR    EQU    0CH
BLINKCUR  EQU    0DH

; ***DISPLAY CONTROL INSTRUCTIONS***

CLRDSP    EQU    01H
ONDSP     EQU    0CH

; ***SYSTEM INSTRUCTIONS***

CONFIG    EQU    28H      ; 4-BIT DATA,2 LINES,5X7 MATRIX LCD
ENTRYMODE EQU    6        ; INCREMENT CURSOR DON'T SHIFT DISPLAY 

RB0     EQU     000H    ; Select Register Bank 0
RB1     EQU     008H    ; Select Register Bank 1  ...poke to PSW to use

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;		PORT DECLERATION
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

INPUTS1 EQU	P0

INP1	EQU	P0.0
INP2	EQU	P0.1
INP3	EQU	P0.2
INP4	EQU	P0.3
INP5	EQU	P0.4
INP6	EQU	P0.5
INP7	EQU	P0.6
INP8	EQU	P0.7

INPUTS2	EQU	P1

INP9	EQU	P1.0
INP10	EQU	P1.1
INP11	EQU	P1.2
INP12	EQU	P1.3
INP13	EQU	P1.4
INP14	EQU	P1.5
INP15	EQU	P1.6
INP16	EQU	P1.7

KEYS	EQU	P3

ROW1	EQU	P3.1
ROW2	EQU	P3.2
ROW3	EQU	P3.3
ROW4	EQU	P3.4
COL1	EQU	P3.5
COL2	EQU	P3.6
COL3	EQU	P3.7

RELAY1	EQU	P1.6
RELAY2	EQU	P1.7
RELAY3	EQU	P3.0




;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DSEG            ; This is internal data memory
ORG     20H     ; Bit adressable memory

GATEES:	DS	1		;Temp register to store the results of the gates
	
GATE1	BIT	GATEES.0
GATE2	BIT	GATEES.1
GATE3	BIT	GATEES.2
GATE4	BIT	GATEES.3
GATE5	BIT	GATEES.4
GATE6	BIT	GATEES.5
CHIP	BIT	GATEES.7



STARTSS: DS	1

NUMB 	BIT	STARTSS.0
RESS	BIT	STARTSS.1

KEY:	DS	1
NUMBER:	DS	1		;temp to store dialled number
COUNT:	DS	1		;Count for pressed keys
NUMB1:	DS	1		;Temp Reg to store pressed Keys
NUMB2:	DS	1		;Temp Reg to store pressed Keys
NUMB3:	DS	1		;Temp Reg to store pressed Keys
NUMB4:	DS	1		;Temp Reg to store pressed Keys
NUMB5:	DS	1		;Temp Reg to store pressed Keys
RELAYS:	DS	1		;power supply relays status
GATES:	DS	1		;Number of Gates in a Chip







CSEG            ; Code begins here
;---------==========----------==========---------=========---------
;              PROCESSOR INTERRUPT AND RESET VECTORS
;---------==========----------==========---------=========---------
 
         ORG     00H    ; Reset
         JMP     MAIN

;---------==========----------==========---------=========---------
;---------==========----------==========---------=========---------
;  Main routine. Program execution starts here.
;---------==========----------==========---------=========---------
MAIN: 	CALL RESETLCD4
	CALL INITLCD4
	CALL TITLE
	CLR RESS
	CLR NUMB		;Bit for checking wheather 7 is pressed first 
	MOV GATEES,#0FFH	;Gates Status Bits (Assume all Gates are OK)
	MOV COUNT,#00H		;Count for pressed keys
	MOV NUMB1,#0FFH		;Reset the datas for ket pressed
	MOV NUMB2,#0FFH
	MOV NUMB3,#0FFH
	MOV NUMB4,#0FFH
	MOV NUMB5,#0FFH
	MOV RELAYS,#00H		;Clear Relays during startup
	CLR RELAY1	
	CLR RELAY2
	CLR RELAY3

	MOV NUMBER,#0FFH

KEYBOARD:
	MOV KEY,#00H	
	SETB COL1
	SETB COL2
	SETB COL3
K11:	CLR ROW1
	CLR ROW2
	CLR ROW3
	CLR ROW4
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,K11		;check till all keys released
K2:	ACALL DEALAY            	;call 20 msec delay
	MOV A,KEYS			;see if any key is pressed
	ANL A,#11100000B		;mask unused bits
	CJNE A,#11100000B,OVER		;key pressed, await closure
	SJMP K2
OVER:	ACALL DEALAY
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,OVER1
	SJMP K2
OVER1:	MOV A,KEYS
	ORL A,#11111110B
	MOV KEYS,A
	CLR ROW1
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,ROW_1
	MOV A,KEYS
	ORL A,#11111110B
	MOV KEYS,A
	CLR ROW2
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,ROW_2
	MOV A,KEYS
	ORL A,#11111110B
	MOV KEYS,A
	CLR ROW3
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,ROW_3
	MOV A,KEYS
	ORL A,#11111110B
	MOV KEYS,A
	CLR ROW4
	MOV A,KEYS
	ANL A,#11100000B
	CJNE A,#11100000B,ROW_4
	LJMP K2


ROW_1:	RLC A
	JC MAT1
	MOV KEY,#01H
	AJMP K1
MAT1:	RLC A
	JC MAT2
	MOV KEY,#02H
	AJMP K1
MAT2:	RLC A
	JC K1
	MOV KEY,#03H
	AJMP K1

ROW_2:	RLC A
	JC MAT3
	MOV KEY,#04H
	AJMP K1
MAT3:	RLC A
	JC MAT4
	MOV KEY,#05H
	AJMP K1
MAT4:	RLC A
	JC K1
	MOV KEY,#06H
	AJMP K1

ROW_3:	RLC A
	JC MAT5
	MOV KEY,#07H
	AJMP K1
MAT5:	RLC A
	JC MAT6
	MOV KEY,#08H
	AJMP K1
MAT6:	RLC A
	JC K1
	MOV KEY,#09H
	AJMP K1

ROW_4:	RLC A
	JC MAT7
	MOV KEY,#10H
	AJMP K1
MAT7:	RLC A
	JC MAT8	
	MOV KEY,#00H			;for 0
	AJMP K1
MAT8:	RLC A
	JC K1
	MOV KEY,#12H



K1:	INC COUNT
	MOV A,KEY
	CJNE A,#01H,NXT2
	MOV R4,#31H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT2:	CJNE A,#02H,NXT3
	MOV R4,#32H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT3:	CJNE A,#03H,NXT4
	MOV R4,#33H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT4:	CJNE A,#04H,NXT5
	MOV R4,#34H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT5:	CJNE A,#05H,NXT6
	MOV R4,#35H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT6:	CJNE A,#06H,NXT7
	MOV R4,#36H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT7:	CJNE A,#07H,NXT8
	JB RESS,DAFD1
	CALL IC_TITLE
	SETB RESS
DAFD1: 	MOV R4,#37H	
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	JB NUMB,GFG1
	SETB NUMB
GFG1:	AJMP K22
NXT8:	CJNE A,#08H,NXT9
	MOV R4,#38H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT9:	CJNE A,#09H,NXT10
	MOV R4,#39H
	CALL WRLCDDATA        	
	AJMP K22
NXT10:	CJNE A,#10H,NXT11		;Button for *
	MOV RELAYS,#00H		;Clear Relays during startup
	CLR RELAY1	
	CLR RELAY2
	CLR RELAY3
	CALL IC_TITLE
	CLR NUMB
	MOV COUNT,#00H
	AJMP KEYBOARD
NXT11:	CJNE A,#00H,NXT12
	MOV R4,#30H
	CALL WRLCDDATA        	; It was data, write it to Lcd 
	AJMP K22
NXT12:	CJNE A,#12H,K22		;Button for Search
	MOV A,COUNT
	CJNE A,#01H,KJK1
	CALL WARNING1		;Display Enter the Ic Number
	CALL DELAY
	CALL IC_TITLE
	MOV COUNT,#00H
	JMP KEYBOARD
KJK1:	MOV COUNT,#00H
	CALL SEARCH
	MOV NUMB1,#0FFH		;Reset the datas for ket pressed
	MOV NUMB2,#0FFH
	MOV NUMB3,#0FFH
	MOV NUMB4,#0FFH
	MOV NUMB5,#0FFH
	CLR NUMB
	MOV RELAYS,#00H		;Clear Relays during startup
	CLR RELAY1	
	CLR RELAY2
	CLR RELAY3
	JMP KEYBOARD
K22:	JB NUMB,DFFD1
	CALL WARNING
	CALL DELAY
	CALL IC_TITLE
	MOV COUNT,#00H
	JMP KEYBOARD
DFFD1:	MOV R0,COUNT
	CJNE R0,#01H,VBV1
	MOV NUMB1,KEY
	JMP KEYBOARD
VBV1:	CJNE R0,#02H,VBV2
	MOV NUMB2,KEY
	JMP KEYBOARD
VBV2:	CJNE R0,#03H,VBV3
	MOV NUMB3,KEY
	JMP KEYBOARD
VBV3:	CJNE R0,#04H,VBV4
	MOV NUMB4,KEY
	JMP KEYBOARD
VBV4:	CJNE R0,#05H,VBV5
	MOV NUMB5,KEY
	JMP KEYBOARD
VBV5:	MOV COUNT,#00H
	CALL OVERFLOW
	CALL DELAY
	CALL IC_TITLE
	CLR NUMB
	JMP KEYBOARD

;((((((((((((((((((((((((((((((((
DEALAY:
	MOV R1,#50
REPP2:	NOP
	DJNZ R1,REPP2
	RET
;((((((((((((((((((((((((((((((((	

SEARCH:	MOV R1,NUMB2
	CJNE R1,#04H,DIGIT
	MOV R1,NUMB5
	CJNE R1,#0FFH,DIG1
	MOV R1,NUMB4
	MOV A,NUMB3
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH			;Database search for 7400 to 7499
	RET
DIGIT:	CALL WARNING
	CALL DELAY
	CALL IC_TITLE
	RET
DIG1:	MOV R1,NUMB3
	CJNE R1,#01H,DIG2
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH1			;Database search for 74100 to 74199
	RET
DIG2:	MOV R1,NUMB3
	CJNE R1,#02H,DIG3
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH2			;Database search for 74200 to 74299
	RET
DIG3:	MOV R1,NUMB3
	CJNE R1,#03H,DIG4
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
;	CALL DATABASE_SEARCH3			;Database search for 74300 to 74399
	RET
DIG4:	MOV R1,NUMB3
	CJNE R1,#04H,DIG5
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH4			;Database search for 74400 to 74499
	RET
DIG5:	MOV R1,NUMB3
	CJNE R1,#05H,DIG6
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH5			;Database search for 74500 to 74599
	RET
DIG6:	MOV R1,NUMB3
	CJNE R1,#06H,DIG7
	MOV R1,NUMB5
	MOV A,NUMB4
	SWAP A
	ORL A,R1
	CALL DATABASE_SEARCH6			;Database search for 74600 to 74699
	RET
DIG7:	CALL NOTIN_DATABASE			;Display not in Database
	CALL DELAY
	CALL IC_TITLE
	RET


;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DATABASE_SEARCH:				;Database search for 7400 to 7499
	MOV R1,A
	CJNE R1,#00H,ICS0			;IC 7400
	CALL ICNM00
ICX0:	MOV RELAYS,#01H
	CALL PROGRESS_BAR			
	CALL IC7400_1_3_24_26			;Call for Database
	MOV GATES,#04H				;Number of Gates
	CALL ANALYSE
	RET
ICS0:	CJNE R1,#01H,ICS1			;IC 7401
	CALL ICNM01
	AJMP ICX0
ICS1:	CJNE R1,#02H,ICS2			;IC 7402
	CALL ICNM02
ASD2:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7402_28
	MOV GATES,#04H
	CALL ANALYSE
	RET
ICS2:	CJNE R1,#03H,ICS3			;IC 7403
	CALL ICNM03
	AJMP ICX0
ICS3:	CJNE R1,#04H,ICS4			;IC 7404
	CALL ICNM04
ICX1:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7404_5_6_14_16_19
	MOV GATES,#06H
	CALL ANALYSE
	RET
ICS4:	CJNE R1,#05H,ICS5			;IC 7405
	CALL ICNM05
	AJMP ICX1
ICS5:	CJNE R1,#06H,ICS6			;IC 7406
	CALL ICNM06
	AJMP ICX1
ICS6:	CJNE R1,#07H,ICS7			;IC 7407
	CALL ICNM07
ASD1:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7407_17_34_35
	MOV GATES,#06H
	CALL ANALYSE
	RET
ICS7:	CJNE R1,#08H,ICS8			;IC 7408
	CALL ICNM08
ICX2:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7408_9_126_130_426
	MOV GATES,#04H
	CALL ANALYSE
	RET
ICS8:	CJNE R1,#09H,ICS9			;IC 7409
	CALL ICNM09
	AJMP ICX2
ICS9:	CJNE R1,#10H,ICS10		;IC 7410
	CALL ICNM10
ICX3:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7410_12
	MOV GATES,#03H
	CALL ANALYSE
	RET
ICS10:	CJNE R1,#11H,ICS11	;IC 7411
	CALL ICNM11
ICX4:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7411_15
	MOV GATES,#03H
	CALL ANALYSE
	RET
ICS11: CJNE R1,#12H,ICS12			;IC 7412
	CALL ICNM12
	AJMP ICX3
ICS12:	CJNE R1,#13H,ICS13		;IC 7413
	CALL ICNM13
ICX5:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7413_18_20_22_40_140
	MOV GATES,#02H
	CALL ANALYSE
	RET
ICS13: CJNE R1,#14H,ICS14			;IC 7414
	CALL ICNM14
	AJMP ICX1
ICS14: CJNE R1,#15H,ICS15			;IC 7415
	CALL ICNM15
	AJMP ICX4
ICS15: CJNE R1,#16H,ICS16			;IC 7416
	CALL ICNM16
	AJMP ICX1
ICS16: CJNE R1,#17H,ICS17			;IC 7417
	CALL ICNM17
	AJMP ASD1
ICS17: CJNE R1,#18H,ICS18			;IC 7418
	CALL ICNM18
	AJMP ICX5
ICS18: CJNE R1,#19H,ICS19			;IC 7419
	CALL ICNM19
	AJMP ICX1
ICS19: CJNE R1,#20H,ICS20			;IC 7420
	CALL ICNM20
	AJMP ICX5
ICS20:	CJNE R1,#21H,ICS21		;IC 7421
	CALL ICNM21
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7421
	MOV GATES,#02H
	CALL ANALYSE
	RET
ICS21: CJNE R1,#22H,ICS23			;IC 7422
	CALL ICNM22
	AJMP ICX5
ICS23: CJNE R1,#24H,ICS24			;IC 7424
	CALL ICNM24
	AJMP ICX0
ICS24: CJNE R1,#25H,ICS25			;IC 7425
	CALL ICNM25
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7425
	MOV GATES,#02H
	CALL ANALYSE
	RET
ICS25: CJNE R1,#26H,ICS26			;IC 7426
	CALL ICNM26
	AJMP ICX0
ICS26:	CJNE R1,#27H,ICS27		;IC 7427
	CALL ICNM27
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7427
	MOV GATES,#03H
	CALL ANALYSE
	RET
ICS27: CJNE R1,#28H,ICS28			;IC 7428
	CALL ICNM28
	AJMP ASD2
ICS28:	CJNE R1,#30H,ICS30		;IC 7430
	CALL ICNM30
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7430
	MOV GATES,#01H
	CALL ANALYSE
	RET
ICS30:	CJNE R1,#32H,ICS32		;IC 7432
	CALL ICNM32
ASD5:	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7432_125_425
	MOV GATES,#04H
	CALL ANALYSE
	RET
ICS32: CJNE R1,#33H,ICS33			;IC 7433
	CALL ICNM33
	AJMP ASD2
ICS33: CJNE R1,#34H,ICS34			;IC 7434
	CALL ICNM34
	AJMP ASD1
ICS34: CJNE R1,#35H,ICS35			;IC 7435
	CALL ICNM35
	AJMP ASD1
ICS35:	CJNE R1,#36H,ICS36		;IC 7436
	CALL ICNM36
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7436
	MOV GATES,#04H
	CALL ANALYSE
	RET
ICS36: CJNE R1,#37H,ICS37			;IC 7437
	CALL ICNM37
	AJMP ICX0
ICS37: CJNE R1,#38H,ICS38			;IC 7438
	CALL ICNM38
	AJMP ICX0
ICS38: CJNE R1,#39H,ICS39			;IC 7439
	CALL ICNM39
	MOV RELAYS,#01H
	CALL PROGRESS_BAR
	CALL IC7439
	MOV GATES,#04H
	CALL ANALYSE
	RET
ICS39: CJNE R1,#40H,ICS40			;IC 7440

⌨️ 快捷键说明

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