Red de conocimiento informático - Conocimiento sistemático - Escribir código de cronómetro electrónico en lenguaje ensamblador

Escribir código de cronómetro electrónico en lenguaje ensamblador

El cronómetro se puede implementar mediante temporizador, por ejemplo:

KEYVAL EQU 30H

DAT EQU 33H

SCANLED EQU 39H

p>

CLK EQU 77H

SEC EQU 78H

SEC1 EQU 79H

SEC2 EQU 7AH

PUNTO BIT 00H< / p>

ORG 0000H

LJMP PRINCIPAL

ORG 0003H

LJMP EXTINT0

ORG 000BH

LJMP T0ISR ;Temporización de 50 ms

ORG 001BH

LJMP T1ISR ;Pantalla de escaneo

ORG 0030H

PRINCIPAL:

MOV SP,#5FH

MOV TMOD,#11H

MOV TH0,#03CH

MOV TL0,#0B0H

MOV TH1,#0ECH

MOV TL1,#078H

MOV KEYVAL,#2

MOV 33H,#10H

MOV 34H , #10H

MOV 35H,#10H

MOV 36H,#10H

MOV CLK,#0

SETB IT0

SETB EX0

CLR TR0

CLR ET0

MOV R2,#0

SETB TR1

SETB ET1

SETB EA

BUCLE:

MOV A,KEYVAL

BUCLE1:

JNZ LOOP2 ;Inicio

SETB TR0

SETB ET0

SJMP LOOP

LOOP2:

DEC A

p>

JNZ LOOP3 ;Pausa

CLR TR0

CLR ET0

SJMP LOOP

LOOP3:

DEC A

JNZ LOOP ;Borrar

MOV 36H,#0

MOV 35H,#0

MOV 34H, #0

MOV 33H,#0

BUCLE SJMP

EXTINT0:

PUSH ACC

INC KEYVAL

MOV A,KEYVAL

CJNE A,#3,EXT00

EXT00:

JC EXT01

MOV KEYVAL,#0

EXT01:

POP ACC

RETI

T0ISR:

PUSH ACC

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

INC CLK

MOV A,CLK

CJNE A,#2,T0ISRE

MOV CLK,#0

INC 36H

MOV A,36H

CJNE A,#10,T0ISRE

MOV 36H,#0

INC 35H

MOV A,35H

CJNE A,#10,T0ISRE

MOV 35H,#0

INC 34H

MOV A,34H

CJNE A,#6,T0ISRE

MOV 34H,#0

INC 33H

MOV A,33H

CJNE A,#10,T0ISRE

MOV 33H,#0

T0ISRE:

POP ACC p>

RETI

T1ISR:

PUSH ACC

CLR TR1

MOV TH1,#0ECH

MOV TL1,#78H

SETB TR1

MOV DPTR,#LEDTAB

T100:

MOV R0,# DAT

MOV A,ESCANEADO

AÑADIR A,R0

MOV R0,A

MOV A,ESCANEADO

JNZ T101

MOV P2,#01H

SETB DOT

SJMP T1DIS

T101:

DEC A

JNZ T102

MOV P2,#02H

CLR DOT

SJMP T1DIS

T102:

p>

DEC A

JNZ T103

MOV P2,#04H

SETB DOT

SJMP T1DIS

T103:

MOV P2,#08H

CLR PUNTO

T1DIS:

MOV A,@ R0

MOVC A,@A+DPTR

JNB DOT,T1DIS1

ORL A,#01H

T1DIS1:

CPL A

MOV P0,A

INC ESCANEADO

MOV A,ESCANEADO

CJNE A,#4, T1END

MOV ESCANEADO,#0

T1END:

POP ACC

RETI

LEDTAB: DB 0FCH ;"0" 00H

DB 60H ; "1" 01H

DB 0DAH ; "2" 02H

DB 0F2H ; >

DB 66H; "4" 04H

DB 0B6H; "5" 05H

DB 0BEH; 7" 07H

DB 0FEH ; "8" 08H

DB 0F6H ; "9" 09H

DB 0EEH ; "A" 0AH

DB 3EH ;"B" 0BH

DB

9CH ;"C" 0CH

DB 7AH ;"D" 0DH

DB 9EH ;"E" 0EH

DB 8EH ;"F" 0FH

DB 00H ;" " 10H

FIN