; Contador Binario: Por el puerto B mostrar los códigos del 0 al 255 en binario.
; Los leds encendidos deberán de apagarse durante 200 ms antes de mostrar el siguiente
; incremento.
; Solución: (Se utiliza un microcontrolador pic16f877a, pero puede utilizar cualquier otro)
; Bits de configuración para el pic16f877a:
__config _CP_OFF & _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF
; _HS_OSC : si OSC >= 4MHZ
; _XT_OSC : si OSC <= 4MHZ
; OBSERVACIÓN: Si utliza otro microcontrolador, los bits de configuración podrian variar.
; Revisar datasheet. Por ejemplo para un pic16f84a, puede utilizar:
; __config _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_OFF
; OJO: _XT_OSC si utiliza un cristal de 4MHZ o menor. Si utiliza uno de mayor valor asegúrese
; que el microcontrolador lo soporte. En ese caso utilizar _HS_OSC.
; Para este programa,en la subrutina de retardo se consideró OSC=20MHZ
list p=16f877a ; Cambie aquí si utiliza otro uC
include <p16f877a.inc> ; Cambie aquí si utiliza otro uC
cblock 0x20 ; A partir de esta dirección es la memoria RAM del usuario (Banco-0)
VDelay0 ; Si utiliza otro uC revise datasheet y verique a partir de que dirección es
VDelay1 ; la memoria RAM del usuario. Por ejemplo para un pic16f84a, ésta comienza
endc ; en la dirección 0x0C.
ORG 0x00
bcf STATUS,RP1
bsf STATUS,RP0 ; Acceso banco 1
clrf TRISB ; Todo puerto B config como salidas
bcf STATUS,RP0 ; Acceso banco 0
Inicio:
clrf PORTB
Principal:
call delay_200ms
incf PORTB,f ; OBS: Si PORTB=255 --> PORTB+1 = 0
goto Principal
; Subrutina de retardo:
delay_200ms:
movlw .156
movwf VDelay0
movlw .213
movwf VDelay1
nop
goto $+1
decfsz VDelay1,f
goto $-3
decfsz VDelay0,f
goto $-7
goto $+1
nop
return
END

No hay comentarios:
Publicar un comentario
Deja tus dudas, comentarios aquí.