?? 工業順序控制1.asm
字號:
PORTA EQU 1FFFH ;8255A口地址
PORTB EQU 3FFFH ;8255B口地址
PORTC EQU 5FFFH ;8255C口地址
CADDR EQU 7FFFH ;8255控制字地址
ORG 00H
JMP MAIN
ORG 0BH
LJMP INTT0
ORG 13H
LJMP INTX1
MAIN: MOV SP,#60H
MOV A,#80H ;方式0
MOV DPTR,#CADDR
MOVX @DPTR,A ;設置8255工作方式
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0AFH
SETB ET0
SETB EX1
SETB EA
MOV P1,#00H
JB P3.4,$ ;等待開始
L1: SETB P1.1 ;合模
MOV A,#0 ;顯示“0"
MOV R0,#0FEH ;選通第一位
CALL DIS ;顯示
CALL DELAY1 ;延時
CLR P1.1
SETB P1.2 ;注射
MOV A,#1
MOV R0,#0FDH
CALL DIS
CALL DELAY1
CLR P1.2
SETB P1.3 ;延時
MOV R1,#06H
MOV A,#2
MOV R0,#0FBH
CALL DIS
L2: CALL DELAY1
DJNZ R1,L2
CLR P1.3
SETB P1.4 ;開模
MOV A,#3
MOV R0,#0F7H
CALL DIS
CALL DELAY1
CLR P1.4
SETB P1.5 ;產伸
MOV A,#4
MOV R0,#0EFH
CALL DIS
CALL DELAY1
CLR P1.5
SETB P1.6 ;產退
MOV A,#5
MOV R0,#0DFH
CALL DIS
CALL DELAY1
CLR P1.6
JMP L1
;------------延時子程序--------------------------------------
DELAY1: MOV R5,#4
D3: MOV R6,#250
D2: MOV R7,#250
D1: NOP
DJNZ R7,D1
DJNZ R6,D2
DJNZ R5,D3
RET
;------------數字顯示子程序--------------------------------------
DIS: MOV DPTR,#TAB_NU ;查表取顯示數據
MOVC A,@A+DPTR
;CPL A
MOV DPTR,#PORTA
MOVX @DPTR,A ;顯示碼送PA口
MOV A,R0
CPL A
MOV DPTR,#PORTB
MOVX @DPTR,A ;PB口顯示
RET
;------------T0中斷服務程序----------------------------------------------
INTT0:
MOV TH0,#0DCH ;賦計時初值
MOV TL0,#0AFH
DJNZ 38H,T0_RET ;T0中斷夠20次?
MOV 38H,#20
DJNZ 40H,T0_RET ;顯示秒數為零?
SETB 01H ;設6秒顯示完畢標志位
T0_RET: RETI
;------------外部中斷服務程序--------------------------------------------
INTX1: PUSH P1
PUSH ACC
MOV A,R0
PUSH ACC
MOV P1,#00H
MOV A,#0AH
MOV R0,#0BFH
CALL DIS
POP ACC
MOV R0,A
POP ACC
POP P1
RETI
;---------------------------------------------------------------------
TAB_NU: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,86H ;0-9-E
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -