PROGRAM 2.docx

(14 KB) Pobierz

;---USTAWIENIE STALYCH---------------------------------------------

START_8255 EQU 10010011B

LED EQU P1.7

 

LJMP START

;---OBSŁUGA PRZERWANIA---------------------------------------------

ORG 13H

MOV R1,#CSIC

MOVX A,@R1

ANL A,#03H

MOVX @R1,A

MOV R1,A

LCALL LCD_CLR

LCALL PRZERWANIE

RETI

 

;---INICJACJA---------------------------------------------------------

ORG 100H

START:

MOV R0,#CS55D

MOV A,#START_8255

MOVX @R0,A

MOV A,#11101111B

MOV R0,#CS55C

MOVX @R0,A

MOV R2,#0

MOV R3,#0

MOV R4,#0

MOV R5,#0

MOV R6,#0

MOV R7,#0

;---CZYSZCZENIE STEROWNIKA---------------------------------------------

MOV R1,#CSIC

MOV A,#00H

MOVX @R1,A

MOV A,#01H

MOVX @R1,A

MOV A,#02H

MOVX @R1,A

MOV A,#03H

MOVX @R1,A

;---WYPISANIE TEKSTU-------------------------------------------------------

LCALL LCD_CLR

MOV DPTR,#TEXT

MOV A,#0

MOVC A,@A+DPTR

LCALL WRITE_TEXT

PUSH ACC

MOV A,#10

LCALL DELAY_100MS

POP ACC

 

;---USTAWIENIE PRZERWAN-----------------------------------------------------

MOV R1,#CSAD

MOVX A,@R1

CLR P1.1

SETB IT1

SETB EA

SETB EX1

 

;---GŁÓWNA PĘTLA-----------------------------------------------------------

PETLAGLOWNA:

CJNE R2,#0,STAN21INK

CJNE R3,#0,STAN22INK

LJMP PETLAGLOWNA

 

;---NALICZANIE W GORE--------------------------------------------------------

STAN21INK:

INC R6

LJMP STAN21

 

;---STAN 2+ -----------------------------------------------------------------------------

STAN21:

CJNE R3,#0,STAN31INK

CJNE R2,#1,STAN21DEC

LJMP STAN21

 

 

STAN31INK:

INC R6

LJMP STAN 31

 

STAN 21DEC:

DEC R6

MOV A,R7

LCALL WRITE_HEX

LJMP PETLA GLOWNA

 

;---STAN 3+ -----------------------------------------------------------------

STAN31:

CJNE R2,#1,STAN41INK

CJNE R3,#1,STAN31DEC

LJMP STAN31

 

STAN41INK:

INC R6

LJMP STAN41

 

STAN31DEC:

DEC R6

LJMP STAN21

 

 

 

;---STAN 4+---------------------------------------------------------------------

STAN41:

CJNE R3,#1,STAN51INK

CJNE R2,#0,STAN41DEC

LJMP STAN41

 

STAN51INK:

INC R6

LJMP STAN51

 

STAN41DEC:

DEC R6

LJMP STAN31

 

;---STAN 5+--------------------------------------------------------------------

STAN51:

INC R7

MOV R6,#5

MOV A,R7

LCALL WRITE_HEX

LJMP PETLAGLOWNA

 

;---NALICZANIE W DOL---------------------------------------------------------

STAN22INK:

INC R6

LJMP STAN22

 

;---STAN 2- -----------------------------------------------------------------------------

STAN22:

CJNE R2,#0,STAN32INK

CJNE R3,#1,STAN22DEC

LJMP STAN22

 

STAN32INK:

INC R6

LJMP STAN32

 

STAN22DEC:

DEC R6

MOV A,R7

LCALL WRITE_HEX

LJMP PETLAGLOWNA

 

;---STAN 3- -------------------------------------------------------------------

STAN32:

CJNE R3,#1,STAN42INK

CJNE R2,#1,STAN32DEC

LJMP STAN32

 

STAN42INK:

INC R6

LJMP STAN42

 

STAN32DEC:

DEC R6

LJMP STAN22

 

;---STAN 4- ---------------------------------------------------------------------

STAN42:

CJNE R2,#1,STAN52INK

CJNE R3,#0,STAN42DEC

LJMP STAN42

 

STAN52INK:

INC R6

LJMP STAN52

 

STAN42DEC:

DEC R6

LJMP STAN32

 

;---STAN 5- -----------------------------------------------------------------------

STAN52:

DEC R7

MOV R6,#5

MOV A,R7

LCALL WRITE_HEX

LJMP PETLAGLOWNA

 

;---PRZERWANIE------------------------------------------------------------------------

PRZERWANIE:

CJNE R1,#2,TE1

LJMP TE2

MOV A,#0

 

;---LAMPKA T1----------------------------------------------------------------

TE1:

MOV ACC,R2

CPL ACC.0

MOV R2,ACC

RET

 

;---LAMPKA T2---------------------------------------------------------------------

TE2:

MOV ACC,R3

CPL ACC.0

MOV R3,ACC

RET

 

TEXT:

DB ‘WELCOME’,0

Zgłoś jeśli naruszono regulamin