Skip to content

Instantly share code, notes, and snippets.

@RITIK-12
Created December 3, 2020 12:57
Show Gist options
  • Save RITIK-12/da189a3b72e8654e726d7d835f3db3f4 to your computer and use it in GitHub Desktop.
Save RITIK-12/da189a3b72e8654e726d7d835f3db3f4 to your computer and use it in GitHub Desktop.
.ORG 0000H
JMP MAIN
.ORG 0034H
JMP RST6.5
;RET
.ORG 003CH
JMP RST7.5
;RET
.ORG 1000H
MAIN: DI
LXI SP,0FFFFH
XRA A
MVI A,08AH ;Configures the 8255 for PortA-Output, PortB-INPUT, PCH-INPUT, PCL-OUTPUT
OUT 003H
LCDINIT: MVI C,030H ;INITIALIZATION
CALL COMMANDOUT
MVI C,038H ;8 BIT, 2-LINES, 5*7 DOTS
CALL COMMANDOUT
MVI C,006H ;Increment, No shifting of display
CALL COMMANDOUT
MVI C,00EH ;Display On, Cursor On, Blink On
CALL COMMANDOUT
MVI C,001H ;CLEAR DISPLAY
CALL COMMANDOUT
MVI C,054H ;T
CALL DATAOUT
MVI C,049H ;I
CALL DATAOUT
MVI C,04DH ;M
CALL DATAOUT
MVI C,045H ;E
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,043H ;C
CALL DATAOUT
MVI C,4FH ;O
CALL DATAOUT
MVI C,055H ;U
CALL DATAOUT
MVI C,04EH ;N
CALL DATAOUT
MVI C,054H ;T
CALL DATAOUT
MVI C,0C0H ;NEXT LINE
CALL COMMANDOUT
MVI C,030H ;0
CALL DATAOUT
MVI C,039H ;9
CALL DATAOUT
MVI C,03AH ;COLON
CALL DATAOUT
MVI C,033H ;3
CALL DATAOUT
MVI C,030H ;0
CALL DATAOUT
MVI C,03AH ;COLON
CALL DATAOUT
MVI C,030H ;0
CALL DATAOUT
MVI C,030H ;0
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,030H ;0
CALL DATAOUT
MVI C,030H ;0
CALL DATAOUT
START: MVI C, 01EH
MVI B, 009H
MVI E, 000H
MVI D, 000H
MOV A,B
STA 08001H ;B HRS
MOV A,C
STA 08002H ;C MIN
MOV A,D
STA 08003H ;D SEC
MVI A,000H
STA 0800CH ;FLAG SET
STA 08000H ;COUNTER
LXI H, 08FFFH
EI
AGAIN: MVI A, 018H ; 24 HZ FREQ
CMP E
JNZ SKIP
MVI E, 000H ; RESET E
INR D ;INCREMENT SECOND
MOV A,D
STA 08003H
CALL SHOW
JMP MINUTE
SKIP: JNC AGAIN
INR D ; INCREMENT SECOND
MOV A,D
STA 08003H
CALL SHOW
MVI A, 018H
SUB E
CMA
INR A
MOV E,A
MINUTE: MVI A, 03CH
CMP D
JNZ AGAIN
INR C ; INC MINUTE
MOV A,C
STA 08002H
MVI D, 000H ;RESET SECOND
MOV A, D
STA 08003H
CALL SHOW
JMP HOUR
HOUR: MVI A, 03CH
CMP C
JNZ AGAIN
MVI C, 000H ;RESET MINUTE
MOV A,C
STA 08002H
INR B ; INC HOUR
MOV A,B
STA 08001H
CALL SHOW
JMP AGAIN
SHOW: PUSH PSW
PUSH B
MVI C,001H ;CLEAR DISPLAY
CALL COMMANDOUT
MVI C,054H ;T
CALL DATAOUT
MVI C,049H ;I
CALL DATAOUT
MVI C,04DH ;M
CALL DATAOUT
MVI C,045H ;E
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,043H ;C
CALL DATAOUT
MVI C,04FH ;O
CALL DATAOUT
MVI C,055H ;U
CALL DATAOUT
MVI C,04EH ;N
CALL DATAOUT
MVI C,054H ;T
CALL DATAOUT
MVI C,0C0H ;NEXT LINE
CALL COMMANDOUT
CALL CONVERSION_B
LDA 08004H ; B KI FIRST DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
LDA 08005H ; B KI SECOND DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
MVI C,03AH ;COLON
CALL DATAOUT
CALL CONVERSION_C
LDA 08006H ; C KI FIRST DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
LDA 08007H ; C KI SECOND DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
MVI C,03AH ;COLON
CALL DATAOUT
CALL CONVERSION_D
LDA 08008H ; D KI FIRST DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
LDA 08009H ; D KI SECOND DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
MVI C,020H ;SPACE
CALL DATAOUT
CALL CON_COUNT
LDA 0800AH ; COUNT KI FIRST DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
LDA 0800BH ; COUNT KI SECOND DIGIT
ADI 030H
MOV C,A
CALL DATAOUT
POP B
POP PSW
RET
RST7.5: INR E
EI
RET
RST6.5: PUSH D
PUSH H
PUSH PSW
PUSH B
MVI A,00BH ; MASK 6.5, 5.5
SIM
EI
LXI H, 08000H ; COUNTER VALUE LOCATION
MVI A, 08AH ; 8255 PA OUTPUT, PB INPUT, PCL OUTPUT, PCU INPUT
OUT 003H
IN 001H ;READ PB0
ANI 001H
JNZ CHECKPB1 ; PB0 IS SET, CHECK PB1 NOW
IN 001H ; PB0 NOT SET, PB1 IS SET
ANI 001H ; READ PB0
JNZ TWOTOONE ;IF PB0 ALSO SET, PROCESS INTERRUPT
MVI D, 0FFH
DELAY1: MVI E, 0FFH ; DELAY COUNT
READPB0: IN 001H ; READ PB0 AGAIN
ANI 001H
JNZ TWOTOONE ; IF SET, PROCESS
DCR E
JNZ READPB0
DCR D
JNZ DELAY1
POP B
POP PSW
POP H
POP D
MVI A, 008H ; UNMASK 6.5,5.5
SIM
EI
RET
CHECKPB1: IN 001H ; READ PB1
ANI 002H
JNZ ONETOTWO ;IF SET, PROCEED
MVI D, 0FFH
DELAY2: MVI E, 0FFH ; DELAY COUNT
READPB1: IN 001H
ANI 002H
JNZ ONETOTWO
DCR E
JNZ READPB1
DCR D
JNZ DELAY2
POP B
POP PSW
POP H
POP D
MVI A, 008H ; UNMASK 6.5,5.5
SIM
EI
RET
ONETOTWO: INR M
CALL SHOW
POP B
POP PSW
POP H
POP D
MVI A, 008H ; UNMASK 6.5,5.5
SIM
EI
RET
TWOTOONE: DCR M
CALL SHOW
POP B
POP PSW
POP H
POP D
MVI A, 008H ; UNMASK 6.5,5.5
SIM
EI
RET
DATAOUT: PUSH PSW
PUSH B
MOV A,C ;DATA OUT
OUT 000H
MVI A,001H ;BSR RS = 1
OUT 003H
MVI A,003H ;BSR EN = 1
OUT 003H
MVI A,002H ;BSR EN = 0
OUT 003H
MVI B,0FFH
CALL DELAY
POP B
POP PSW
RET
COMMANDOUT: PUSH PSW
PUSH B
MOV A,C ;COMMAND OUT
OUT 000H
MVI A,000H ;BSR RS = 0
OUT 003H
MVI A,003H ;BSR EN = 1
OUT 003H
MVI A,002H ;BSR EN = 0
OUT 003H
MVI B,0FFH
CALL DELAY
POP B
POP PSW
RET
DELAY: DCR B ;Decrement B
JNZ DELAY
RET
CONVERSION_B: PUSH PSW
PUSH H
LXI H,08001H
MOV A,M
LXI H,08004H
MVI M,0FFH
NXT: INR M
SUI 00AH
JNC NXT
ADI 00AH
INX H
MOV M,A
POP H
POP PSW
RET
CONVERSION_C: PUSH PSW
PUSH H
LXI H,08002H
MOV A,M
LXI H,08006H
MVI M,0FFH
NXT1: INR M
SUI 00AH
JNC NXT1
ADI 00AH
INX H
MOV M,A
POP H
POP PSW
RET
CONVERSION_D: PUSH PSW
PUSH H
LXI H,08003H
MOV A,M
LXI H,08008H
MVI M,0FFH
NXT2: INR M
SUI 00AH
JNC NXT2
ADI 00AH
INX H
MOV M,A
POP H
POP PSW
RET
CON_COUNT: PUSH PSW
PUSH H
LXI H,08000H
MOV A,M
LXI H,0800AH
MVI M,0FFH
NXT3: INR M
SUI 0AH
JNC NXT3
ADI 0AH
INX H
MOV M,A
POP H
POP PSW
RET
.END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment