📄 8255asm.asm
字号:
;;;8255 PORT DEFINATION
PORTA1 EQU 97FCH
PORTB1 EQU 97FDH
PORTC1 EQU 97FEH
PORTCON1 EQU 97FFH
PORTA2 EQU 0C7F3H
PORTB2 EQU 0C7F7H
PORTC2 EQU 0C7FBH
PORTCON2 EQU 0C7FFH
CONSTATUS EQU 80H
ISPORTA EQU 41H ;PORT A
ISPORTB EQU 42H ;PORT B
ISPORTC EQU 43H ;PORT C
WP BIT P2.3
USERNUM EQU 30H
RELAYSTATUS BIT 00H ;0->UP,1->DOWN ALSO IS 8255 SELECT
ORG 0000H
LJMP MAIN
ClearPorts:
PUSH ACC
MOV DPTR,#PORTCON1
MOV A,#CONSTATUS
MOVX @DPTR,A
MOV DPTR,#PORTA1
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#PORTCON2
MOV A,#CONSTATUS
MOVX @DPTR,A
MOV DPTR,#PORTA2
CLR A
MOVX @DPTR,A
MOV DPTR,#PORTB2
MOVX @DPTR,A
MOV DPTR,#PORTC2
MOVX @DPTR,A
POP ACC
ret
WR8255: ;RELAYSTATUS: 0->IS82551,1->IS82552; R0->PORT; R1->DATA
ACALL ClearPorts
JB RELAYSTATUS,IS82552 ;IS 82551
MOV DPTR,#PORTA1
CJNE R0,#ISPORTA,IS82551NA ;IS 82551A
MOVX @DPTR,A
SJMP PDWAN
IS82551NA:
CJNE R0,#ISPORTB,IS82551NB ;IS 82551B
INC DPTR
MOVX @DPTR,A
SJMP PDWAN
IS82551NB:
MOV DPTR,#PORTC1 ;IS 8255C
MOVX @DPTR,A
SJMP PDWAN
IS82552: ;IS 82552
MOV DPTR,#PORTA2
CJNE R0,#ISPORTA,IS82552NA ;IS 82552A
MOVX @DPTR,A
SJMP PDWAN
IS82552NA:
CJNE R0,#ISPORTB,IS82552NB ;IS 82552B
INC DPTR
MOVX @DPTR,A
SJMP PDWAN
IS82552NB:
MOV DPTR,#PORTC2
MOVX @DPTR,A
PDWAN: RET
operaterelay: ;USERNUM; RELAYSTATUS: 0->SHANGDIAN,1->DUANDIAN
MOV A,USERNUM
DEC A
RL A
MOV R1,A
MOV DPTR,#USER_SELECT
MOVC A,@A+DPTR
MOV R0,A ;R0->PORT
MOV A,R1
INC A
MOVC A,@A+DPTR ;A->DATA
ACALL Wr8255
RET
MAIN: ;;TEST
MOV PSW,#00H
ACALL ClearPorts
MOV R3,#1
MOV R4,#15
lo: MOV USERNUM,R3
CLR RELAYSTATUS
ACALL operaterelay
SETB RELAYSTATUS
ACALL operaterelay
INC R3
DJNZ R4,lo
;user_select table
USER_SELECT: DB 41H,08H,41H,20H,42H,04H,41H,10H,41H,40H ;1~5hu
DB 42H,08H,41H,04H,41H,80H,42H,10H,41H,02H ;6~10hu
DB 42H,01H,42H,20H,41H,01H,42H,02H,42H,40H ;11~15hu
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -