Un programa ensamblador que implementa la función de conteo de 0 a 99 a través del contador de tiempo dentro del microcontrolador.
SEGUNDO EQU 30H
COUNT EQU 31H
ORG 00H
INICIO LJMP
ORG 0BH temporizador 0; entrada de interrupción
LJMP INT_T0
INICIO: MOV SECOND,#00H
MOV COUNT,#00H
MOV DPTR,#TABLE ; Primera dirección de la tabla de códigos de segmento
MOV P0,#3FH ;Inicialización de la pantalla del tubo digital
MOV P2,#3FH
MOV TMOD,#01H ;Establecer sincronización Modo de funcionamiento del dispositivo 0
MOV TH0,#(65536-50000)/256; Temporización 50 milisegundos
MOV TL0,#(65536-50000) MOD 256
SETB TR0 ;Iniciar temporizador/contador 0
MOV IE,#82H ;Habilitar interrupción
LJMP $ ;Esperar interrupción
INT_T0: MOV TH0,# ( 65536-50000)/256 ;Tiempo 50 milisegundos
MOV TL0,#(65536-50000) MOD 256
INC COUNT ;Valor de conteo más 1
MOV A,COUNT
CJNE A,#20,I2 ;Si se cuenta 1 segundo
MOV COUNT,#00H
INC SECOND
MOV A,SECOND
CJNE A,#60,I1 ;Si se han contado 60 segundos
MOV SECOND,#00H
I1: MOV A ,SECOND
MOV B,#10
DIV AB ;Separa las decenas y las unidades del valor de conteo
MOVC A,@A+DPTR p>
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A ;Mostrar valor de conteo
I2: RETI; retorno de interrupción
TABLA: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH p>
FIN