0% encontró este documento útil (0 votos)
4 vistas6 páginas

Programación de LEDs con PIC 16F84A

El documento describe un trabajo práctico sobre la programación del microcontrolador PIC 16F84A utilizando Mikro C, enfocado en el control de 8 LEDs conectados a los puertos A y B. Se detalla la creación de un proyecto en Mikro C, la programación en lenguaje ensamblador y C para encender los LEDs en secuencia, así como la implementación de botones para controlar la dirección del encendido. Además, se incluye información sobre la configuración del entorno de desarrollo y la estructura del código necesario para llevar a cabo las tareas propuestas.

Traducido por

ScribdTranslations
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas6 páginas

Programación de LEDs con PIC 16F84A

El documento describe un trabajo práctico sobre la programación del microcontrolador PIC 16F84A utilizando Mikro C, enfocado en el control de 8 LEDs conectados a los puertos A y B. Se detalla la creación de un proyecto en Mikro C, la programación en lenguaje ensamblador y C para encender los LEDs en secuencia, así como la implementación de botones para controlar la dirección del encendido. Además, se incluye información sobre la configuración del entorno de desarrollo y la estructura del código necesario para llevar a cabo las tareas propuestas.

Traducido por

ScribdTranslations
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 PDF, TXT o lee en línea desde Scribd

TP Iniciación a la programación del µC PIC 16F84A

en Mikro C
I) Objectifs :
El presente TP tiene como objetivo la programación de los puertos de entrada y salida A y B. En primer lugar

Lugares donde veremos el encendido en secuencia de 8 leds conectados al puerto B, luego introduciremos la

programación de microcontroladores con el lenguaje C para permitir encendido en


secuencia de 8 leds conectados al puerto B de abajo hacia arriba y viceversa utilizando botones para ambos.
También se presentará el software Mikro C para la creación de proyectos.

II) Manipulaciones

Primera parte: Encendido en secuencia de 8 leds conectados al puerto B


Escribir en MPLAB el programa siguiente en lenguaje ensamblador
Con Proteus, esquematice sus circuitos y cargue el archivo generado en *.hex en el
PIC

Segunda parte: Encendido en secuencia de 8 leds conectados al puerto B de abajo hacia arriba
o viceversa mediante botones para ambos.
Escribir en mikroC el siguiente programa en lenguaje C
Con Proteus, esquematiza tus circuitos y carga el archivo generado en *.hex
en el PIC

III) Presentación del software Mikro C.8-2 para la creación de proyectos


El mikroC PRO para PIC organiza aplicaciones en proyectos, compuesto de uno solo
archivo de proyecto (extensión .mcppi) con uno o varios archivos de fuente (extensión).
La mejor manera de crear un proyecto es con la ayuda del asistente de nuevo proyecto.
(menú Proyecto> Nuevo Proyecto) o haciendo clic en el ícono nuevo proyecto desde la
barra de herramientas del proyecto.
1
Comience por dar un nombre en Nombre del Proyecto, en nuestro caso TP 1.

2
A continuación, especifica la ubicación donde se guardará tu proyecto.
En la ventana de descripción, puedes añadir una descripción del proyecto a
realizar.
En la sección DISPOSITIVO seleccione el tipo de microcontrolador en el que
usted trabaja, también debe ingresar el valor de la frecuencia del oscilador 4MHZ
(Oscilador XT, y el WDT si es necesario)
Última etapa - Haga clic en ok para crear su nuevo proyecto
En este punto, se abre una nueva ventana vacía para que puedan allí
introduzca su programa

3
ENCENDIDO 8 LED EN SECUENCIA

RADIX DIC
INCLUIR [Link]
ORG
COUNT_1 EQU 0C ;Contador
CONTAR_2 EQU 0D Contador
SALIDA EQU 0E
CARGAR EQU 00 Bit de acarreo

4
ALLUMAGE 8 LEDS EN SEQUENCE AVEC 2 BOUTTONS
radix hex

INCLUIR "[Link]"

COUNT_1 EQU 0C ;Compteur


COUNT_2 EQU 0D ;Compteur
PIC84 EQU 03FF ;

LLEVAR EQU 00
SORTIE EQU 0E
ORG PIC84
GOTO INIT ;ir a INIT

INICIAR ORG 0000H


MOVLW 00 ;En W, nombre 0
TRIS PORTB ; Puerto B configurado como salida
MOVLW 0FF
TRIS PORTA ;Puerto A configurado como entrada
MOVLW 0FF ;En W, nombre 255
MOVWF COUNT_1 ;COUNT_1 en W
MOVLW 0FF
MOVWF COUNT_2
MOVLW 01
MOVWF SORTIE ;SORTIE = 1

Programa principal

MOVF SORTIE,1 ;En W, salida


MOVWF PORTB ;Salida en PORT_B
LLAMAR RETARDO ;Rutina de retraso
MAIN BTFSS PORTA,3 ;¿Botón P1 presionado?
LLAME ARRIBA ;Si sí, la rutina ARRIBA
BTFSS PORTA,5 ;¿Botón P2 presionado?
LLAMAR ABAJO ;Si oui, la routine ABAJO
CALL DELAY
clrwdt
IR A PRINCIPAL

UP BCF 0PTION,CARRY ;La remise à zéro du bit carry C


RLF PORTB ; tourner à gauche
BTFSS STATUS,CARRY ;¿Es esta la última posición?
RETURN ;Si no, regresa
RRF PORTB ;Si oui, la condition initiale
RETURN ;Return

ABAJO BCF ESTADO,PORTAR ;La remise à zéro del bit carry C


RRF PORTB ;tournar a la derecha
BTFSS STATUS,CARRY ;¿Es esta la última posición?
RETURN ;Si no, regresa
RLF PORTB ;Si oui, la condition initiale
RETURN ;Return

Rutina de retraso

DELAY DECFSZ COUNT_1,1 ;Decrementa COUNT_1


GOTO DELAY ;Si no tenemos 0, ir a DELAY
MOVLW 0FF
MOVWF COUNT_1 ;Recargar COUNT_1
DECFSZ COUNT_2,1 ;Décremente COUNT_2
GOTO DELAY ;Si no tenemos 0, ir a DELAY
MOVLW 0FF
MOVWF COUNT_1 ;Recargar COUNT_1
MOVLW 0FF
MOVWF COUNT_3 ;Recargar COUNT_2
DEVOLVER ; ir al programa principal
Final

void main()
{
unsigned char J = 1;
TRISB = 0; // PORTB está configurado en
ENCENDIDO 8 LEDS EN SECUENCIA

ENCENDIDO 8 LEDS EN SECUENCIA CON 2 BOTONES


void main()
{

unsigned char J = 1;

unsigned char a = 0x80;

TRISB = 0; // PORTB está configurado como salida

for(;;) // Bucle sin fin

mientras(PORTA.f0=1)

PORTB = J; // Enviar J al PORTB

Delay_ms(100); // Pausa 100 ms

J = J << 1; // Décalage a la izquierda J

si(J == 0) J = 1;

mientras(PORTA.f1=1)

PORTB = a; // Enviar J al PORTB

Delay_ms(100); // Pausa 100 ms

a = a >> 1; // Décalage a la izquierda J

si(a == 0x00 ) a = 0x80;


} // Si la última LED, encender la 1ª LED

También podría gustarte