0% encontró este documento útil (0 votos)
41 vistas16 páginas

MICROPROCESADORES

El informe presenta la práctica de programación de microcontroladores en lenguaje PIC 877, donde se verificó el comportamiento de programas y se cargaron en la tarjeta QL200-H-DRAGON. Se realizaron simulaciones utilizando MPLAB X IDE y se implementaron códigos para controlar LEDs y un teclado matricial. Además, se exploró la organización y el datasheet de los microcontroladores utilizados en el laboratorio.

Cargado por

pc.ronald31
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
41 vistas16 páginas

MICROPROCESADORES

El informe presenta la práctica de programación de microcontroladores en lenguaje PIC 877, donde se verificó el comportamiento de programas y se cargaron en la tarjeta QL200-H-DRAGON. Se realizaron simulaciones utilizando MPLAB X IDE y se implementaron códigos para controlar LEDs y un teclado matricial. Además, se exploró la organización y el datasheet de los microcontroladores utilizados en el laboratorio.

Cargado por

pc.ronald31
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad “Mayor de San Andrés”

FACULTAD DE INGENIERÍA

INFORME N° 15

PROGRAMACIÓN DE MICROCONTROLADORES

EN LENGUAJE PIC 877


ESTUDIANTES: Univ. Callisaya Uchani Marco Antonio
Univ. Poma Catari Ronald
Carrera: Ingeniería Electrónica
Docente: Ing. Marcelo Ramírez M.
Grupo: V4
Fecha: 18 de mayo de 2024

La Paz – Bolivia

1.- OBJETIVOS:
 Verificar el correcto comportamiento de los programas otorgados en la guía de
laboratorio.
 Cargar los programas que se presentan en la guía de laboratorio, en la tarjeta
de entrenamiento QL200 – H-DRAGON (el dragón).
 Estudiar la organización, información y datasheet de los microcontroladores
específicos que se cuentan en el laboratorio.

2.- RESUMEN
En la presente práctica se estudió y aplicó los programas otorgados en la guía de
laboratorio, como también se tiene un preámbulo al manejo de los
microcontroladores, introduciéndonos en el manejo del lenguaje de programación
adecuado. Poniendo en práctica en los microcontroladores como QL200
H_DRAGON y el PIC877, estudiando el material entregado sobre el DATASHEET
PIC16F877, QL200 PIC DEVELOPMENT BOARD 6806620 y las guías de usuario
de los diferentes dispositivos.

3.- PROCEDIMIENTO|
Se cargó los códigos de programas que se tienen en la guía para la realización del
laboratorio que se simulo en el programa MPLAB X IDE y su simulador del cual si el
programa realiza la compilación completa sin errores, después de realizar unas
correcciones en la sintaxis en los diferentes códigos que así lo necesitaban, los archivos
que se podrán cargar a la tarjeta Dragon tiene la extensión “.hex” el cual se carga en el H-
Dragón mediante el programa QL.PROG.exe para que el código entre en funcionamiento.
CODIGO 1:
Parpadeo del led RB7 del puerto B.
PROCESSOR 16F877A ;Microcontrolador a utilizar
#include <xc.inc> ;Incluye al compilador XC8
; Configuración inicial del microcontrolador
CONFIG FOSC = XT ; Selección del oscilador (XT oscilador de 4MHz)
CONFIG WDTE = OFF ; Inhabilita Watchdog Timer
CONFIG PWRTE = OFF ; Inhabilita Power-up Timer
CONFIG BOREN = ON ; Habilita Brown-out Reset (Restablecimiento por caida
de tensión)
CONFIG LVP = OFF ; Inhabilita Low-Voltage (referente a comunicación serial)
CONFIG CPD = OFF ; Inhabilita protección de datos de la EEPROM Memory
CONFIG WRT = OFF ; Inhabilita la protección de escritura de la Flash Program
Memory
CONFIG CP = OFF ; Inhabilita la protección de código de la Flash Program Memory
;Reserva espacios de memoria
PSECT udata
r_conta: ;nombre de la variable 1
DS 1 ;reserva 1 byte para r_conta
r_contb: ;nombre de la variable 2
DS 1 ;reserva 1 byte para r_contb
r_contc: ;nombre de la variable 3
DS 1 ;reserva 1 byte para r_contc
;Espacio de memoria para el programa
PSECT PROGRAMA,class=CODE,delta=2
programa: ;generación de programa
PAGESEL principal ;selecciona la página principal
goto principal
PSECT code ;"code" debe estar anotado con letras minúsculas

;Configuración inicial del microcontrolador


principal:
;En Banco 1 se configura los puertos de entrada y salida
bcf STATUS,6 ;selecciona Banco 1
bsf STATUS,5
movlw 0x06 ;inhabilita los puertos analógicos
movwf ADCON1
movlw 0 ;configura puerto B como salida
movwf TRISB
bcf STATUS,5 ;selecciona Banco 0
movlw 0 ;inicializa todo el puerto B en 0 (leds apagados)
movwf PORTB
bucle:
bsf PORTB,7 ;enciende led RB7
call RETARDO_1S ;retardo de 1 segundo
bcf PORTB,7 ;apaga led RB7
call RETARDO_1S ;retardo de 1 segundo
goto bucle ;encierra proceso
retardo_1s: ;subrutina de retardo de 1 segundo
movlw 10 ;10 -> 1seg , 20 -> 2seg , etc
retardo_1decima:
movwf r_contc
r1decima_bucleexterno2:
movlw 100
movwf r_contb
r1decima_bucleexterno:
movlw 249
movwf r_conta
r1decima_bucleinterno:
nop
decfsz r_conta,1
goto r1decima_bucleinterno
decfsz r_contb,1
goto r1decima_bucleexterno
decfsz r_contc,1
goto r1decima_bucleexterno2
return ;retorno de subrutina
END programa ;fin de programa

VARIACIÓN DEL CÓDIGO DE PARPADEO


Se ampliará el parpadeo a tres leds, de los tres puertos de salida A, B y C de la siguiente
manera:
Puerto C: led RC5 1 segundo prendido y 1 segundo apagado
Puerto B: led RB5 2 segundo prendido y 2 segundo apagado
Puerto A: led RA5 3 segundo prendido y 3 segundo apagado
La secuencia de parpadeo seguirá el orden anteriormente mencionado en cada puerto de
salida.
PROCESSOR 16F877A ;Microcontrolador a utilizar
#include <xc.inc> ;Incluye al compilador XC8
; Configuración inicial del microcontrolador
CONFIG FOSC = XT ; Selección del oscilador (XT oscilador de 4MHz)
CONFIG WDTE = OFF ; Inhabilita Watchdog Timer
CONFIG PWRTE = OFF ; Inhabilita Power-up Timer
CONFIG BOREN = ON ; Habilita Brown-out Reset (Restablecimiento por
caida de tensión)
CONFIG LVP = OFF ; Inhabilita Low-Voltage (referente a comunicación
serial)
CONFIG CPD = OFF ; Inhabilita protección de datos de la EEPROM
Memory
CONFIG WRT = OFF ; Inhabilita la protección de escritura de la Flash
Program Memory
CONFIG CP = OFF ; Inhabilita la protección de código de la Flash
Program Memory
;Reserva espacios de memoria
PSECT udata
r_conta: ;nombre de la variable 1
DS 1 ;reserva 1 byte para r_conta
r_contb: ;nombre de la variable 2
DS 1 ;reserva 1 byte para r_contb
r_contc: ;nombre de la variable 3
DS 1 ;reserva 1 byte para r_contc
;Espacio de memoria para el programa
PSECT PROGRAMA,class=CODE,delta=2
PROGRAMA: ;generación de programa
PAGESEL principal ;selecciona la página principal
goto principal
PSECT code ;"code" debe estar anotado con letras minúsculas
;Configuración inicial del microcontrolador
principal:
;En Banco 1 se configura los puertos de entrada y salida
bcf STATUS,6 ;selecciona Banco 1
bsf STATUS,5
movlw 0x06 ;inhabilita los puertos analógicos
movwf ADCON1
movlw 0
movwf TRISA ;configura puerto A como salida
movwf TRISB ;configura puerto B como salida
movwf TRISC ;configura puerto C como salida
bcf STATUS,5 ;selecciona Banco 0
movlw 0
movwf PORTA ;inicializa todo el puerto A en 0 (leds apagados)
movwf PORTB ;inicializa todo el puerto B en 0 (leds apagados)
movwf PORTC ;inicializa todo el puerto C en 0 (leds apagados)

bucle:
bsf PORTC,5 ;enciende led RC5
call RETARDO_1S ;retardo de 1 segundo
bcf PORTC,5 ;apaga led RC5
call RETARDO_1S ;retardo de 1 segundo
bsf PORTB,5 ;enciende led RB5
call RETARDO_1S ;retardo de 1 segundo
call RETARDO_1S ;retardo de 1+1=2 segundos
bcf PORTB,5 ;apaga led RB5
call RETARDO_1S ;retardo de 1 segundos
call RETARDO_1S ;retardo de 1+1=2 segundos
bsf PORTA,5 ;enciende led RA5
call RETARDO_1S ;retardo de 1 segundo
call RETARDO_1S ;retardo de 1+1=2 segundos
call RETARDO_1S ;retardo de 1+1+1=3 segundos
bcf PORTA,5 ;apaga led RA5
call RETARDO_1S ;retardo de 1 segundo
call RETARDO_1S ;retardo de 1+1=2 segundos
call RETARDO_1S ;retardo de 1+1+1=3 segundos
goto bucle ;encierra proceso

RETARDO_1S: ;subrutina de retardo de 1 segundo


movlw 10 ;10 -> 1seg , 20 -> 2seg , etc

retardo_1decima:
movwf r_contc
r1decima_bucleexterno2:
movlw 100
movwf r_contb
r1decima_bucleexterno:
movlw 249
movwf r_conta
r1decima_bucleinterno:
nop
decfsz r_conta,1
goto r1decima_bucleinterno
decfsz r_contb,1
goto r1decima_bucleexterno
decfsz r_contc,1
goto r1decima_bucleexterno2
return ;retorno de subrutina
END PROGRAMA ;fin de programa

CODIGO 2. Programa para rotar un led a la derecha o a la izquierda pulsando RA0 o


RA1.
PROCESSOR 16F877a
#include <xc.inc>
; PIC16F877A Configuration Bit Settings
; Assembly source line config statements
; CONFIG
CONFIG FOSC = XT ; Oscillator Selection bits (HS oscillator)
CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)
CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial
CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits
CONFIG CP = OFF ; Flash Program Memory Code Protection bit
(Code protection off)
;VARIABLES
PSECT udata
r_conta:
DS 1
r_contb:
DS 1
r_contc:
DS 1
;"delta flag" indica memoria de programa de 2Bytes
PSECT programa,class=CODE,delta=2
programa:
PAGESEL principal ;selecciona la página principal
goto principal
PSECT code ;"code" debe estar anotado con letras minúsculas
principal:
bcf STATUS,6 ;configuraciones de registros de Banco 1
bsf STATUS,5
movlw 0x06 ;entradas analógicas desactivadas
movwf ADCON1
clrf TRISB ;configura puerto B como salida
bsf TRISA,0 ;configura RA0 como entrada
bsf TRISA,1 ;configura RA1 como entrada
bcf STATUS,5 ;configuraciones de registros de Banco 0
movlw 0X01 ;puerto B con un bit encendido
movwf PORTB ;limpia bandera C
bcf STATUS,0
bucle:
btfss PORTA,0 ;si se presiona RA0 rota a la izquierda
call rota_izquierda
btfss PORTA,1 ;si se presiona RA1 rota a la derecha
call rota_derecha
goto bucle
rota_derecha: ;rotación a la derecha
call retardo_1ms
rrf PORTB,1
aun_presiona2: ;espera a que se deje de presionar ra0
btfss PORTA,1
goto aun_presiona2
return
rota_izquierda: ;rotación a la izquierda
call retardo_1ms
rlf PORTB,1
aun_presiona1: ;espera a que se deje de presionar ra1
btfss PORTA,0
goto aun_presiona1
return
retardo_1ms: ;retardo de 1 ms
movlw 1
retardo_1decima:
movwf r_contc
r1decima_bucleexterno2:
movlw 100
movwf r_contb
r1decima_bucleexterno:
movlw 249
movwf r_conta
r1decima_bucleinterno:
nop
decfsz r_conta,1
goto r1decima_bucleinterno
decfsz r_contb,1
goto r1decima_bucleexterno
decfsz r_contc,1
goto r1decima_bucleexterno2
return
END programa

CODIGO 3. Programa que lee un teclado matricial 4x4 y muestra en número de


tecla pulsada
en el puerto B.
PROCESSOR 16F877a
#include <xc.inc>
; PIC16F877A Configuration Bit Settings
; Assembly source line config statements
; CONFIG
CONFIG FOSC = XT ; Oscillator Selection bits (HS oscillator)
CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)
CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial
CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits
CONFIG CP = OFF ; Flash Program Memory Code Protection bit
;VARIABLES
PSECT udata
CONT1 EQU 0X20 ;contador1 de la pausa en la dirección 0x20
CONT2 EQU 0X21 ;contador2 de la pausa en la dirección 0x21
CONT3 EQU 0X22 ;contador3 de la pausa en la dirección 0x22
TECLA EQU 0X23 ;número de tecla en la dirección 0x23
;"delta flag" indica que la memoria de programa usa 2 bytes
PSECT programa,class=CODE,delta=2
programa:
PAGESEL principal ;selecciona la página principal
goto principal
PSECT code ;"code" debe estar anotado con letras minúsculas
principal:
bcf STATUS,6 ;configuraciones de registros de Banco 1
bsf S TATUS,5
movlw 0x06 ;entradas analógicas desactivadas
movwf ADCON1
bcf TRISE,4 ;puerto D configurado como I/O de propósito general
clrf TRISB ;puerto B como salida
clrf TRISD ;puerto D como salida
movlw 0XF0 ;RC0 a RC3 como salida y
movwf TRISC ;RC4 a RC7 como entrada
bcf STATUS,5 ;configuraciones de registros de Banco 0
bcf STATUS,2 ;limpia bandera Z
bcf STATUS,0 ;limpia bandera C
clrf PORTB ;puerto B en cero (leds apagados)
clrf PORTC ;puerto C en cero
clrf PORTD ;puerto D en cero
bucle:
clrf CONT1 ;limpia el contador1
clrf CONT2 ;limpia el contador2
movlw 0X03
movwf CONT3 ;carga valor para retardo aproximado de 0.5 seg
bcf PORTD,4 ;limpia indicador de tecla pulsada
sigfila:
clrf TECLA ;tecla actual = 0
bcf S TATUS,2 ;limpia bandera Z
movlw 0X0E
movwf PORTC ;saca 0 a la fila 1, para chequearla
leetecl:
btfss PORTC,4 ;chequea la columna 0 en busca de un '0'
goto numtecla ;si encuentra un 0 muestra el número de tecla pulsada
incf TECLA ;si no encuentra el 0, incrementa el número de tecla
btfss PORTC,5 ;chequea la columna 1 en busca de un '0'
goto numtecla ;si encuentra un 0 muestra el número de tecla pulsada
incf TECLA ;si no encuentra el 0, incrementa el número de tecla
btfss PORTC,6 ;chequea la columna 2 en busca de un '0'
goto numtecla ;si encuentra un 0 muestra el número de tecla pulsada
incf TECLA ;si no encuentra el 0, incrementa el número de tecla
btfss PORTC,7 ;chequea la columna 3 en busca de un '0'
goto numtecla ;si encuentra un 0 muestra el número de tecla pulsada
incf TECLA ;si no encuentra el 0, incrementa el número de tecla
movlw 0x10 ;carga W con el número de teclas +1
subwf TECLA,0 ;y lo compara con el valor actual de tecla
btfsc STATUS,2 ;si se ha llegado a Tecla+1 se acaba el ciclo de filas
goto sigfila ;y no se habrá pulsado ninguna tecla
bsf STATUS,0 ;y se pone a 1 el bit C para que la fila 1 pase a ser
rlf PORTC,1 ;un 1 en la rotación de pilas y el 0 se desplace
goto leetecl
numtecla:
movf TECLA,0
movwf PORTB ;pasa el valor de la tecla a los LED's
bsf PORTD,4 ;y activa el indicador de tecla pulsada
pausa:
decfsz CONT1 ;bucle anidado de 3 niveles
goto pausa ;que retarda aprox. 0.5 segundos
decfsz CONT2
goto pausa
decfsz CONT3
goto pausa
goto bucle
END programa

CODIGO 4 - Programa que realiza la conversión análogo digital en el puerto RA0 y


muestra el valor en binario en los puertos B y C.

PROCESSOR 16F877a
#include <xc.inc>
; PIC16F877A Configuration Bit Settings
; Assembly source line config statements
; CONFIG
CONFIG FOSC = XT ; Oscillator Selection bits (HS oscillator)
CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)
CONFIG PWRTE = ON ; Power-up Timer Enable bit (PWRT disabled)
CONFIG BOREN = OFF ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = OFF ; Low-Voltage (Single-Supply) In-Circuit Serial
Programming Enable
; bit (RB3 is digital I/O, HV on MCLR must be used for
programming)
CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit
; (Data EEPROM code protection off)
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write
protection off
; all program memory may be written to by EECON control)
CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code
protection off)

;VARIABLES
PSECT udata
r_conta: ;nombre de la variable 1
DS 1 ;reserva 1 byte para r_conta
r_contb: ;nombre de la variable 2
DS 1 ;reserva 1 byte para r_contb
r_contc: ;nombre de la variable 3
DS 1 ;reserva 1 byte para r_contc
;"delta flag" indica que la memoria de programa usa 2 bytes
PSECT programa,class=CODE,delta=2
programa:
PAGESEL principal ;selecciona la página principal
goto principal
PSECT code ;"code" debe estar anotado con letras minúsculas
principal:
bcf STATUS,6 ;configuraciones de registros de BANK 1
bsf STATUS,5
clrf TRISC ;puerto C somo salida
clrf TRISB ;puerto B como salida
bsf TRISA,0 ;puerto RA0 como entrada
movlw 0x8E ;ADRESH:ADRESL con justificación derecha, frec. de
movwf ADCON1 ;conversión a Fosc/32 y AN0 activado
bcf STATUS,5 ;configuraciones de registros de BANK 0
movlw 0x81 ;clock de conversión Fosc/32, se selecciona canal AN0,
movwf ADCON0 ;modo espera para iniciar la conversión y módulo ADC activado
bucle:
bsf ADCON0,2 ;inicio de conversión
espera:
btfsc ADCON0,2 ;terminó la conversión?
goto espera ;no, espera
movf ADRESH,0 ;byte alto del valor binario en puerto C
movwf PORTC
bsf STATUS,5 ;cambio al Bank 1
movf ADRESL,0 ;byte bajo del valor binario en puerto B
bcf STATUS,5
movwf PORTB
call retardo_1ms ;retardo de 1 ms
goto bucle
retardo_1ms: ;subrutina de retardo de 1 ms
movlw 1
retardo_1decima:
movwf r_contc
r1decima_bucleexterno2:
movlw 100
movwf r_contb
r1decima_bucleexterno:
movlw 249
movwf r_conta
r1decima_bucleinterno:
nop
decfsz r_conta,1
goto r1decima_bucleinterno
decfsz r_contb,1
goto r1decima_bucleexterno
decfsz r_contc,1
goto r1decima_bucleexterno2
return
END programa

Programas realizados en laboratorio


 Parpadeo
Como su nombre lo indica, el programa enciende y apaga un led en la tarjeta, en este caso
se utilizó el led 0 del puerto B:

Como se puede observar en el código se pone en 1 el bit 0 del puerto B, seguidamente se


ejecuta la subrutina retardo que espera 1 segundo, a continuación, se pone en 0 el bit 0 del
puerto B y se vuelve a ejecutar la subrutina retardo, este proceso se realiza en bucle.

Salida: RB0 del puerto B

 Rotar un led
Este programa rota un led (que está en 1) del puerto B (del módulo de leds) hacia la
izquierda o la derecha, en función del botón presionado del puerto A (RA0 hacia la izquierda,
RA1 hacia la derecha)
Salida: Puerto B

Entrada: RA0 y RA1 del puerto A

 Teclado matricial
El objetivo del programa es mostrar en el puerto B (del módulo de leds) el número
correspondiente a la tecla pulsada en el teclado matricial.
La disposición del teclado es la siguiente:

C 8 4 0
D 9 5 1
E A 6 2
F B 7 3
1
Salida: RB0-RB3 del puerto B

5
F

 Conversor analógico – digital


El microcontrolador 16F877A tiene un conversor A/D de aproximación sucesiva de 10
bits, con lo que la salida se mostrará en los puertos B y C (del módulo de leds),
configurada con justificación a la derecha.

Los bits de control de configuración del conversor A/D son:


Salida: Puerto B y C Entrada: RA0 del puerto A

4.- CONCLUSIONES:

 Existió modificaciones que se realizaron a los diferentes programas, estas


modificaciones fueron arreglos de tabulación y declaraciones reservadas
por el lenguaje ensamblador como ser PORTA, PORTB Y PORTC, los
cuales están reservadas para salidas de puerto A, B Y C. Una vez
arregladas todos estos detalles los programas corrieron sin ningún
problema.
 Para la variante del parpadeo de led, se agrego las variables de salida
PORTA Y PORTC, poniéndolos en cero lógico para su inicio y haciendo
una llamada a la subrutina de un segundo y para agregar un segundo
adicional y dos llamadas a la misma subrutina para agregar dos segundos.
 Se implemento sin mayor dificultad los cuatro programas otorgados en la
guía de laboratorio los cuales son: Parpadeo del Led RB7 del puerto B,
Programa para rotar un led a la derecha o a la izquierda pulsando RA0 o
RA1, Programa que lee un teclado matricial 4x4 y muestra en número de
tecla pulsada en el puerto B y el Programa que realiza la conversión
análogo digital en el puerto RA0 y muestra el valor en binario en los
puertos B y C. En el primer y último programa se pudo observar y corregir
pequeños errores de codificación.
 Para la realización del laboratorio se utilizó el programa MPLAB X IDE
también el simulador para poder compilar los códigos que se tenían en la
guía en el cual si la compilación es completa sin errores se genera el
archivo. hex el cual es el que se cargara en el H-Dragón.
 Después de generado en el archivo. hex el cual se carga en el H-Dragon,
luego se realizó el reconocimiento de las salidas y entradas designadas en
el H-Dragon mediante el código assembler el cual consta de instrucciones
con nemónicos para poder realizar los procedimientos descritos en los
programas que se tienen en la guía de laboratorio.
 En la realización del laboratorio después del reconocimiento de las
entradas y salidas para poder visualizar las salidas es necesario
habilitarlas con los dipswitch tanto para los leds como para los pulsadores
que se utilizaron en cada programa la salida más común que se tenían en
los programas eran el puerto B y C en la parte que conforma los leds en el
H-Dragón.

6.- REFERENCIAS

 Microchip technology Inc (2003). Datasheet PIC16F87XA


 Microchip technology Inc (2003). Assembler Users Guide MPLABXC8PIC
 Ramírez, Marcelo (15 de noviembre de 2022). Guía de laboratorio N°12 Microsex
N°14 Programación de microcontroladores

También podría gustarte