Created
December 3, 2020 12:57
-
-
Save RITIK-12/da189a3b72e8654e726d7d835f3db3f4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.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