Programación de un microcontrolador de 8 bits
Esta actividad está pensada para aprender a programar un microcontrolador (en este caso un PIC16F84A) a través de dos idiomas de programación: Ensamblador y C. Se realizará una programación básica del mismo, configurando un LED a la salida del puerto "Rb7", haciendo que este prenda y apague de manera alternada cada 200ms aproximadamente, usando un clock de cristal de 4MHz. Esto es conocido en el mundo de los sistemas embebidos (uC) como "Hola Mundo". Para esto, hay que tener conocimiento previo del pinout del uC, el Master Clear (reset) y el reloj del sistema (clock); y el uso de los programas a utilizar.
Realización de la actividad
- Esquemático del circuito realizado en KiCad:
- Resolución del programa solicitado en idioma Ensamblador:
Luego de lo aprendido sobre el idioma Ensamblador, se puede pasar a la programación del microcontrolador. Para esto, usamos el programa MPLAB. Este programa se encarga de transcribir el código escrito (dígase las distintas instrucciones y directivas) al idioma que luego será leído y reconocido por el microcontrolador. Como se puede ver en la imagen de lo escrito en el MPLAB, se va explicando cada paso realizado a través de comentarios, los cuales deben ir escritos luego de un ";".
;========================================================================
; Programa realizado para lograr que un LED parpadee al ser conectado al microcontrolador
;========================================================================
LIST p=PIC16F84A ; Declaro el microcontrolador que voy a usar
INCLUDE <p16F84A.inc>
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
ERRORLEVEL -302
;========================================================================
; Variables
;========================================================================
CBLOCK 0x0C
var1
var2
ENDC
;========================================================================
; Marco el inicio al programa
;========================================================================
ORG 0x000 ;Vector de Reset
Inicio
bsf STATUS,RP0 ; Cambio al Bank 1
bcf TRISB,7 ; Configuro el bit 7 del PORTB comos salida
bcf STATUS,RP0 ; Cambie al Bank 0
;========================================================================
; Programa principal
;========================================================================
Loop
; Enciendo el LED
bcf PORTB,7
call delay_200ms
; Apago el LED
bsf PORTB,7
call delay_200ms
goto Loop
;========================================================================
; Subrutinas
;========================================================================
; Creo una subrutina para retado de 200ms del LED
delay_200ms
decfsz var1,F
li
decfsz var2,f
goto li
return ; Termina la subrutina
;========================================================================
END ; Finalizo el programa
Realización del programa solicitado en idioma C:
Luego de lo aprendido sobre el idioma C, nos dirigimos a la programación del microcontrolador en este idioma. Para esto, utilizaremos el programa CCS. Este programa se encarga de transcribir el código escrito ( ejemplo: directivas las cuales van detras de un "#", parametros, que se colocan entre "()" y por ultimo, funciones, las cuales van entre "{}" ) al idioma que luego será leído por el microcontrolador. Para ello se debe crear un programa principal, el nombrado void main, en el cual ingresamos todos los pasos que deberá realizar el microcontrolador en relación con el LED.
#include "D:\Led_84c_1\Led_84c_1.h"
void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
// TODO: USER CODE!!
while (TRUE)
{
output_high (PIN_B7);
delay_ms (200);
output_low (PIN_B7);
delay_ms (200);
}
}
No hay comentarios:
Publicar un comentario