Circuitos Digitales - contador de 0-60

 
Vista:

contador de 0-60

Publicado por liz ortiz (1 intervención) el 12/05/2008 23:46:58
hola, necesito que me hagan el favor y me ayuden a hacer un contador de 0 a 60 es algo urgente es en mplab para un pic 16f877a por fa es algo urgente agradezco que me ayuden lo antes posible.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Contador de 0 a 60 con PIC 16F877A en MPLAB

Publicado por Alejandro (117 intervenciones) el 28/08/2023 17:36:45
¡Por supuesto, Liz! Aquí tienes un ejemplo de cómo podrías hacer un contador ascendente de 0 a 60 utilizando un PIC 16F877A en MPLAB. Este código está escrito en lenguaje ensamblador para el PIC 16F877A. Asegúrate de tener configurado correctamente el entorno de desarrollo y la configuración del PIC antes de cargar el código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <P16F877A.INC>
 
; Definir los registros
COUNT equ 0x20
STATUS equ 0x03
 
; Definir bits de STATUS
RP0 equ 5
TO equ 4
 
; Configuración
org 0x00
goto Start
 
org 0x04
goto ISR
 
Start:
    ; Configurar registros
    banksel COUNT
    clrf COUNT
    banksel STATUS
    bsf STATUS, RP0 ; Seleccionar banco 1
    bcf STATUS, TO ; Limpiar bandera de desborde
    banksel COUNT
    movlw b'00100000' ; Configurar T0CS y prescaler en 1:32
    movwf OPTION_REG
 
    ; Configurar puertos
    banksel PORTB
    clrf PORTB
    banksel TRISB
    clrf TRISB
 
    ; Configurar interrupciones
    banksel INTCON
    bsf INTCON, GIE ; Habilitar interrupciones globales
    bsf INTCON, T0IE ; Habilitar interrupción del timer0
 
Loop:
    goto Loop ; Bucle infinito
 
ISR:
    banksel COUNT
    incf COUNT, F ; Incrementar contador
 
    movlw d'61' ; Cargar 61 para comparar
    subwf COUNT, W ; Comparar con COUNT
    btfss STATUS, Z ; Salto si no es igual a 61
    call ResetCount ; Reiniciar contador
 
    retfie ; Retornar de la interrupción
 
ResetCount:
    banksel COUNT
    clrf COUNT ; Reiniciar contador
    return
 
end

Este código configura el Timer0 para generar interrupciones cada vez que se desborde, lo que permite contar hasta 61 para lograr un contador de 0 a 60. Cuando el contador llega a 61, se llama a la rutina `ResetCount` para reiniciar el contador a 0.

Recuerda que este es solo un ejemplo y puede requerir ajustes según tus necesidades específicas. Asegúrate de haber configurado adecuadamente los bits de configuración y las conexiones físicas en tu circuito. También es importante verificar la compatibilidad con tu versión de MPLAB y del PIC 16F877A.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar