Red de conocimiento informático - Conocimiento sistemático - Programa de cronómetro de programación en lenguaje ensamblador

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

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' ;