Programa de cronómetro de programación en lenguaje ensamblador
Enviártelo directamente
PROCESADOR 16C74
INCLUYE "P16C74B.INC"
SEC EQU 0X23
MSEC EQU 0x24
TEMP1 EQU 0X22
FLAG2 EQU 0X28
ORG 0x00
IR A INICIO
ORG 0x04; Establecer vector de interrupción
BCF STATUS,RP0
BTFSC INTCON,T0IF ; Determinar si el bit de indicador de interrupción TIER0 está establecido
GOTO TMR0_ISR ; , Luego ejecute la subrutina de interrupción TIMER0
RETFIE
INICIO:
CALL PIC_INIT; configure el puerto y el modo de trabajo TIMER0
BSF INTCON; ,GIE
BSF INTCON,T0IE
MAIN_LOOP:
;El cuerpo principal del programa es un bucle infinito
BTFSC FLAG2, 7
PANTALLA DE LLAMADA
GOTO MAIN_LOOP
PIC_INIT:
CLRF INTCON
BCF INTCON,T0IE p>
BSF STATUS,RP0
MOVLW B'00000000' ;B'XXXXXXXX' significa que el número entre comillas simples es dos
MOVWF TRISB
MOVLW B'00000000 '
MOVWF TRISC
BCF STATUS,RP0
MOVLW B'11000000' ;B'XXXXXXXX' significa que el número entre comillas simples es dos
PUERTO MOVWF
MOVLW B'11000000'
PUERTO MOVWF
ESTADO BSF,RP0
MOVLW B '11000100'
MOVWF OPTION_REG; Establece el modo de trabajo TIMER0, divide por 32
BCF STATUS,RP0
MOVLW 0X06
MOVWF TMR0
p>
CLRF SEC
CLRF MSEC
CL
RF TEMP1
CLRF FLAG2
RETORNO
TMR0_ISR:
CLRWDT
BSF FLAG2,7
BCF INTCON,T0IF
MOVLW 0X06
MOVWF TMR0
CLRWDT
INCF TEMP1,1
MOVF TEMP1,0
SUBLW .125 ;125-TEMP
ESTADO BTFSS,2
RETFIE
CLRWDT
CLRF TEMP1
INCF MSEC,1
RETFIE
PANTALLA:
MOVF MSEC,0
SUBLW .10
ESTADO BTFSS,2
IR A SIGUIENTE_1
CLRWDT
CLRF MSEC
INCF SEC,1
MOVF SEC,0
SUBLW .6
ESTADO BTFSS,2
IR A SIGUIENTE_1
CLRF SEC
NEXT_1:
CLRWDT
MOVF MSEC,W
CALL CHAR_CODE
MOVWF PORTC
MOVF SEC,W
LLAMADA CHAR_CODE
MOVWF PORTB
BCF FLAG2,7
RETURN
CHAR_CODE:
ADDWF PCL,1 ;PCL+=W
RETLW B'11000000' ; Código para 0
RETLW B'11111001' ; Código para 1
RETLW B'10100100' ; Código para 2
RETLW B'10110000' ; Código para 3
RETLW B'10011001' ; 4
RETLW B'10010010' ; Código para 5
RETLW B'10000010' ; Código para 6
RETLW B'11111
000' ; Código para 7
RETLW B'10000000' ; Código para 8
RETLW B'10010000' ;