Está en la página 1de 15

PROGRAMACIN BSICA DE MICROCONTROLADORES MICROCHIP PIC Y MOTOROLA FREESCALE JENNY VANESSA ARCE MATEUS jennyvam87@hotmail.

com GRUPO 309696_41 Universidad Nacional Abierta y a Distancia UNAD

I.

SECUENCIAS Y CONTROL DE LEDS. 2. CODIGO FUENTE:

1. PSEUDOCDIGO O ALGORITMO: INICIO DEFINIR RPS, RPG VARIABLES DE CONTEOS, CONSTANTE QUE ES EL TIEMPO Y MACROS. CONFIGURAR EL PUERTO B COMO SALIDA (CAMBIO DE BANCO) DEFINIR SECUENCIA 1 DEFINIR SECUENCIA 2 DEFINIR SECUENCIA 3 DEFINIR SECUENCIA 4 DEFINIR SECUENCIA 5 DEFINIR SECUENCIA 6 DEFINIR SECUENCIA 7 DEFINIR SECUENCIA 8 SALTAR A INICIO FIN Realizado por: Jenny Vanessa Arce Mateus ECBTI TITLE "PIC16F84A EEPROM PROGRAM" LIST P=16F84A,F=INHX32 #INCLUDE <P16F84A.INC> ;ESTUDIANTE JENNY VANESSA ARCE MATEUS ;ENCENDIDO INTERMITENTE DE UN LED (PARA EFECTOS PRACTICOS SE INCORPORA UN RETARDO) ;PINES DE SALIDA LEDS ==> B0 ;PINES DE ENTRADA ==> "NINGUNO" ;---------------------------------------------------------------------------------------------;REGISTROS DE PROPOSITO ESPECIAL INDF EQU 00H ;REGISTRO PARA DIRECCIONAMIENTO INDIRECTO TMR0 EQU 01H ;REGISTRO TIMER 0 PCL EQU 02H ;PROGRAM COUNTER PARTE BAJA STATUS EQU 03H ;REGISTRO DE ESTADO DEL PIC FSR EQU 04H ;REGISTRO UTILIZADO COMO APUNTADOR EN DIR. INDIRECTO PTA EQU 05H ;PUERTO A DEL PIC PTB EQU 06H ;PUERTO B DEL PIC

EEDATA EQU 08H ;DATO IN/OUT EN EEPROM EEADR EQU 09H ;DIRECCION DE IN/OUT DE EEPROM PCLATCH EQU 0AH ;CERROJO PARTE ALTA DEL PROGRAM COUNTER INTCON EQU 0BH ;REGISTRO DE INTERRUPCIONES OPCION EQU 81H ;OPCIONES DE CONFIGURACION INT TMP PULLUP PREESCALER TRISAEQU 85H ;/RA7-RA6RA5=NOP/RA4=RXRS(CABLESCL)/RA3=TEST SENSORES/RA2RA1-RA0=TECLD TRISBEQU 86H ;/RB7=TXRS232/RB6=CLK2/RB 5=CLK1/RB4-RB3-RB2RB1=(MULTIPLX-'D')/RB0=INT/ EECON1 EQU 88H ;B4=EEIF/FIN WR/*B3=WRERR/ERROR WR/*B2=WREN/PERMISO WR/*B1/WR/*B0/RD/ EECON2 EQU 89H ;REG SEGURIDAD PROCESO EEPROM ;---------------------------------------------------------------------------------------------;DEFINICION REGISTROS DE PROPOSITO GENERAL TMP1 EQU 0CH ;REGISTRO TEMPORAL 1 SIRVE AL CICLO MAS EXTERNO DEL RETARDO TMP2 EQU 0DH ;REGISTRO TEMPORAL 2 SIRVE AL CICLO INTERMEDIO DEL RETARDO TMP3 EQU 0EH ;REGISTRO TEMPORAL 3 SIRVE AL CICLO MAS INTERNO DEL RETARDO ;---------------------------------------------------------------------------------------------;DEFINICION DE BITS W EQU 0 ;REGISTRO DE TRABAJO F EQU 1 ;REGISTRO C EQU 0 ;FLAG DE CARRY Z EQU 2 ;FLAG DE CERO

RD EQU 0 ;RD=1 CICLO DE LECTRURA DE LA EEPROM WR EQU 1 ;WR=1 CICLO DE ESCRITURA DE LA EEPROM WREN EQU 2 ;WREN=1 AUTORIZA PERMISO DE ESCRITURA EN LA EEPROM B0 EQU 0 ;BIT 0 B1 EQU 1 ;BIT 1 B2 EQU 2 ;BIT 2 B3 EQU 3 ;BIT 3 B4 EQU 4 ;BIT 4 B5 EQU 5 ;BIT 5 B6 EQU 6 ;BIT 6 B7 EQU 7 ;BIT 7 ;---------------------------------------------------------------------------------------------;DEFINICION DE CONSTANTES VAL1 EQU 20H ;CONSTANTE DE RETARDO RECARGA AL REGISTRO TMP1 VAL2 EQU 30H ;CONSTANTE DE REATRDO RECARGA AL REGISTRO TMP2 VAL3 EQU 40H ;CONSTANTE DE RETARDO RECARGA AL REGISTRO TMP3 ;---------------------------------------------------------------------------------------------;MACROS #DEFINE BANK1 BSF STATUS, 5 ;ENCARGADO DE PASAR AL BANCO DE MEMORIA CERO #DEFINE BANK0 BCF STATUS, 5 ;ENCARGADO DE PASAR AL BANCO DE MEMORIA UNO ;---------------------------------------------------------------------------------------------;INICIO DEL PROGRAMA ;---------------------------------------------------------------------------------------------ORG 00H ;---------------------------------------------------------------------------------------------;CONFIGURACION DE PUERTOS

Realizado por: Jenny Vanessa Arce Mateus ECBTI

;---------------------------------------------------------------------------------------------BANK1 MOVLW 00H ;SALIDA DE DATOS POR LOS PINES B7 B6 B5 B4 B3 B2 B1 B0 MOVWF TRISB MOVLW 1FH ;ENTRADA DE DATOS A4 A3 A2 A1 A0 MOVWF TRISA BANK0 ;---------------------------------------------------------------------------------------------;PROGRAMA DE INICIO ;---------------------------------------------------------------------------------------------INICIO CLRF PTB ;BORRADO DEL PUERTO B SEC1 MOVLW B'10000000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL PRIMER LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'01000000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL SEGUNDO LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00100000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL TERCER LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00010000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL CUARTO LED

CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00001000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL QUINTO LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00000100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL SEXTO LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00000010' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL SEPTIMO LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00000001' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL OCTAVO LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC2 MOVLW B'10000000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL PRIMER LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11000000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1 Y 2 LED

Realizado por: Jenny Vanessa Arce Mateus ECBTI

CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11100000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1, 2 Y 3 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11110000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1, 2, 3 Y 4 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11111000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1, 2, 3, 4 Y 5 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11111100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1, 2, 3, 4, 5 Y 6 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11111110' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE 1, 2, 3, 4, 5, 6 Y 7 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11111111' ;PASAR AL REGISTRO DE TRABAJO

MOVWF PTB ;ENCIENDE TODOS LOS LEDS CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC3 MOVLW B'11000000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 1 Y 2 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00110000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 3 Y 4 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00001100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 5 Y 6 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00000011' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 7 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC4 MOVLW B'11110000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 1, 2, 3 Y 4 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00001111' ;PASAR AL REGISTRO DE TRABAJO

Realizado por: Jenny Vanessa Arce Mateus ECBTI

MOVWF PTB ;ENCIENDE EL 5, 6, 7 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC5 MOVLW B'10101010' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 1, 3, 5 Y 7 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'01010101' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 2, 4, 6 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC6 MOVLW B'10000001' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 1 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'01000010' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 2 Y 7 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00100100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 3 Y 6 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00011000' ;PASAR AL REGISTRO DE TRABAJO

MOVWF PTB ;ENCIENDE EL 4 Y 5 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC7 MOVLW B'00011000' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 4 Y 5 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'00100100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 3 Y 6 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'01000010' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 2 Y 7 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'10000001' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 1 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED SEC8 MOVLW B'00111100' ;PASAR AL REGISTRO DE TRABAJO MOVWF PTB ;ENCIENDE EL 3, 4, 5 Y 6 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED MOVLW B'11000011' ;PASAR AL REGISTRO DE TRABAJO

Realizado por: Jenny Vanessa Arce Mateus ECBTI

MOVWF PTB ;ENCIENDE EL 1, 2, 7 Y 8 LED CALL RET ;LLAMAR A RETARDO PARA VISUALIZAR ESTADO DE LED GOTOINICIO ;SALTAR A LA RUTINA DE INICIO

;---------------------------------------------------------------------------------------------END ;----------------------------------------------------------------------------------------------

3. EVIDENCIAS:

;---------------------------------------------------------------------------------------------;RUTINA DE CALL RETARDO ;---------------------------------------------------------------------------------------------RET MOVLW VAL1 ;MOVER A W EL VALOR DE VAL1 MOVWF TMP1 ;MOVER A REGISTRO TMP1 LO ALMACENADO EN W UNO MOVLW VAL2 ;MOVER A W EL VALOR DE VAL2 MOVWF TMP2 ;MOVER A REGISTRO TMP2 LO ALMACENADO EN W DOS MOVLW VAL3 ;MOVER A W EL VALOR DE VAL3 MOVWF TMP3 ;MOVER A REGISTRO TMP3 LO ALMACENADO EN W TRES DECFSZ TMP3,F ;DECREMENTAR TMP3 SI ES CERO SALTAR A TRES GOTOTRES DECFSZ TMP2,F ;DECREMENTAR TMP2 SI ES CERO SALTAR A DOS GOTODOS DECFSZ TMP1,F ;DECREMENTAR TMP1 SI ES CERO SALTAR A UNO GOTOUNO RETURN ;TMP1=TMP2=TMP3=0 SE TERMINA LA RUTINA RET

Realizado por: Jenny Vanessa Arce Mateus ECBTI

II.

SECUENCIA DE LEDS CONTROLADA POR UN PULSADOR.

1. PSEUDOCDIGO ALGORITMO:

INICIO DECLARAR VARIABLES CONFIGURACION DE ENTRADAS Y SALIDAS NO

WHILE (1) SI

NO RB0==0 SI MOSTRAR SECUENCIAS

FIN

Realizado por: Jenny Vanessa Arce Mateus ECBTI

2. CODIGO FUENTE: // secuencia de leds con switch case #include <p18cxxx.h> #include "GenericTypeDefs.h" #include <delays.h> /** Cconfiguration Bits***********************************/ #pragma config WDTEN = OFF //WDT disabled (enabf by SWDTEN bit) #pragma config PLLDIV = 3 //Divide by 3 (12 MHz oscillator input) #pragma config STVREN = ON //stack overflow/underflow reset enabled #pragma config XINST = OFF //Extended instruction set disabled #pragma config CPUDIV = OSC1 //No CPU system clock divide #pragma config CP0 = OFF //Program memory is not codeprotected #pragma config OSC = HSPLL //HS oscillator, PLL enabled, HSPLL used by USB #pragma config T1DIG = OFF //Sec Osc clock source may not be selected, unless T1OSCEN = 1 #pragma config LPT1OSC = OFF //high power Timer1 mode #pragma config FCMEN = OFF //Fail-Safe Clock Monitor disabled #pragma config IESO = OFF //Two-Speed Start-up disabled #pragma config WDTPS = 32768 //1:32768 #pragma config DSWDTOSC = INTOSCREF //DSWDT uses INTOSC/INTRC as clock #pragma config RTCOSC = INTOSCREF //RTCC uses INTRC as clock #pragma config DSBOREN = OFF //Zero-Power BOR disabled in Deep Sleep #pragma config DSWDTEN = OFF //Disabled

#pragma config DSWDTPS = 8192 //1:8,192 (8.5 seconds) #pragma config IOL1WAY = OFF //IOLOCK bit can be set and cleared #pragma config MSSP7B_EN = MSK7 //7 Bit address masking #pragma config WPFP = PAGE_1 //Write Protect Program Flash Page 0 #pragma config WPEND = PAGE_0 //Start protection at page 0 #pragma config WPCFG = OFF //Write/Erase last page protect Disabled #pragma config WPDIS = OFF //WPFP[5:0], WPEND, and WPCFG bits ignored

/******************************************** ************/ /*------- Espacio para declaracion de constantes ------*/ /******************************************** ************/

/******************************************** ************/ /*--- Espacio para declaracion de variables globales --*/ /******************************************** ************/ #pragma udata char i=0 ; char {0,1,2,4,8,16,32,64,128};

leds1[9]=

/******************************************** ************/ /******************************************** ************/ /*-------------- Espacio para funciones --------------*/ /******************************************** ************/ #pragma code extern void _startup (void);

Realizado por: Jenny Vanessa Arce Mateus ECBTI

case 1 : /******************************************** ************/ /******************************************** ************/ /*------------ Espacio de codigo principal -------------*/ /******************************************** ************/ #pragma code void main(void) { unsigned char puerto; ANCON0 = 0xFF; // Configura todos los pines como digital LATB = 0x00; // Cero por el puerto B TRISB = 0x03; // Configura B0 y B1 como entrada LATD = 0x00; // Cero por el puerto D TRISD = 0x00; // Configura como salida el puerto D for(;;){ puerto= PORTB&3; switch(puerto) { case 3: PORTD=0b10101010; Delay1KTCYx(16000); //Demora 2 SEGUNDOS PORTD=0b01010101; Delay1KTCYx(16000); //Demora 2 SEGUNDOS break; case 2 : for(i=1;i<=8;i++) { Delay1KTCYx(500); //Demora 500 milisegundos PORTD=leds1[i]; } break; for(i=7;i>=1;i--) { Delay1KTCYx(500); //Demora 500 milisegundos PORTD=leds1[i]; } break; case 0 : PORTD=0b11110000; Delay1KTCYx(16000); //Demora 2 SEGUNDOS PORTD=0b00001111; Delay1KTCYx(16000); //Demora 2 SEGUNDOS break; } } }//end main

// LATDbits.LATD0=!LATDbits.LAT D0; //Saca un cero por el Puerto E0

//******************************************** *********** /******************************************** ************/ /******************************************** ************/ /*----------------- VECTOR DE RESET -------------------*/ /******************************************** ************/ #pragma code _RESET_INTERRUPT_VECTOR = 0x1000 void _reset (void) { _asm goto _startup _endasm } #pragma code

Realizado por: Jenny Vanessa Arce Mateus ECBTI

/******************************************** ************/ /******************************************** ************/ /*-----VECTOR DE INTERRUPCONES DE ALTA PRIORIDAD -----*/ /******************************************** ************/ #pragma code _HIGH_INTERRUPT_VECTOR = 0x1008 void _high_ISR (void) { ; } /******************************************** ************/ /******************************************** ************/ /*-----VECTOR DE INTERRUPCONES DE BAJA PRIORIDAD -----*/ /******************************************** ************/ #pragma code _LOW_INTERRUPT_VECTOR = 0x1018 void _low_ISR (void) { ; } 3. EVIDENCIAS:

Realizado por: Jenny Vanessa Arce Mateus ECBTI

III.

SECUENCIA DE LEDS CON CONTROL DE VELOCIDAD TIPO DE SECUENCIA.

1. PSEUDOCDIGO ALGORITMO:

INICIO DECLARAR VARIABLES CONFIGURACION DE ENTRADAS Y SALIDAS

WHILE (1) SI RB1==0 NO RB0==0 SI MOSTRAR SECUENCIAS SI J==250 NO FIN J=0 J=J+10

2. CODIGO FUENTE: // secuencia de leds con switch case y pulsador de velocidad #include <p18cxxx.h>

#include "GenericTypeDefs.h" #include <delays.h> /** Cconfiguration Bits***********************************/ #pragma config WDTEN = OFF //WDT disabled (enabf by SWDTEN bit) #pragma config PLLDIV = 3 //Divide by 3 (12 MHz oscillator input) #pragma config STVREN = ON //stack overflow/underflow reset enabled #pragma config XINST = OFF //Extended instruction set disabled #pragma config CPUDIV = OSC1 //No CPU system clock divide #pragma config CP0 = OFF //Program memory is not codeprotected #pragma config OSC = HSPLL //HS oscillator, PLL enabled, HSPLL used by USB #pragma config T1DIG = OFF //Sec Osc clock source may not be selected, unless T1OSCEN = 1 #pragma config LPT1OSC = OFF //high power Timer1 mode #pragma config FCMEN = OFF //Fail-Safe Clock Monitor disabled #pragma config IESO = OFF //Two-Speed Start-up disabled #pragma config WDTPS = 32768 //1:32768 #pragma config DSWDTOSC = INTOSCREF //DSWDT uses INTOSC/INTRC as clock #pragma config RTCOSC = INTOSCREF //RTCC uses INTRC as clock #pragma config DSBOREN = OFF //Zero-Power BOR disabled in Deep Sleep #pragma config DSWDTEN = OFF //Disabled #pragma config DSWDTPS = 8192 //1:8,192 (8.5 seconds) #pragma config IOL1WAY = OFF //IOLOCK bit can be set and cleared

Realizado por: Jenny Vanessa Arce Mateus ECBTI

#pragma config MSSP7B_EN = MSK7 //7 Bit address masking #pragma config WPFP = PAGE_1 //Write Protect Program Flash Page 0 #pragma config WPEND = PAGE_0 //Start protection at page 0 #pragma config WPCFG = OFF //Write/Erase last page protect Disabled #pragma config WPDIS = OFF //WPFP[5:0], WPEND, and WPCFG bits ignored

/******************************************** ************/ /*------- Espacio para declaracion de constantes ------*/ /******************************************** ************/

/******************************************** ************/ /*--- Espacio para declaracion de variables globales --*/ /******************************************** ************/ #pragma udata int j = 50; char i=0 ; char leds1[9]= {0,1,2,4,8,16,32,64,128}; char leds2[9]= {0,1,3,7,15,31,63,127,255}; /******************************************** ************/ /******************************************** ************/ /*-------------- Espacio para funciones --------------*/ /******************************************** ************/ #pragma code extern void _startup (void);

/******************************************** ************/ /******************************************** ************/ /*------------ Espacio de codigo principal -------------*/ /******************************************** ************/ #pragma code void main(void) { ANCON0 = 0xFF; // Configura todos los pines como digital LATB = 0x00; // Cero por el puerto B TRISB = 0x03; // Configura B0 y B1 como entrada LATD = 0x00; // Cero por el puerto D TRISD = 0x00; // Configura como salida el puerto D for(;;){ if(PORTBbits.RB1==0){j=j+10;} if (PORTBbits.RB0==0){

PORTD=0b10101010; Delay1KTCYx(j); //Demora 2 SEGUNDOS PORTD=0b01010101; Delay1KTCYx(j); //Demora SEGUNDOS

for(i=1;i<=8;i++) { Delay1KTCYx(j); //Demora 500 milisegundos PORTD=leds1[i]; }

Realizado por: Jenny Vanessa Arce Mateus ECBTI

for(i=7;i>=1;i--) { Delay1KTCYx(j); //Demora 500 milisegundos PORTD=leds1[i]; }

PORTD=0b11110000; Delay1KTCYx(j); //Demora 2 SEGUNDOS PORTD=0b00001111; Delay1KTCYx(j); //Demora SEGUNDOS

for(i=7;i>=1;i--) { Delay1KTCYx(j); //Demora 500 milisegundos PORTD=leds2[i]; } for(i=1;i<=8;i++) { Delay1KTCYx(j); //Demora 500 milisegundos PORTD=leds2[i]; } if (j==256){j=0;} } }//end main } // LATDbits.LATD0=!LATDbits.LAT D0; //Saca un cero por el Puerto E0 //******************************************** *********** /******************************************** ************/ /******************************************** ************/

/*----------------- VECTOR DE RESET -------------------*/ /******************************************** ************/ #pragma code _RESET_INTERRUPT_VECTOR = 0x1000 void _reset (void) { _asm goto _startup _endasm } #pragma code /******************************************** ************/ /******************************************** ************/ /*-----VECTOR DE INTERRUPCONES DE ALTA PRIORIDAD -----*/ /******************************************** ************/ #pragma code _HIGH_INTERRUPT_VECTOR = 0x1008 void _high_ISR (void) { ; } /******************************************** ************/ /******************************************** ************/ /*-----VECTOR DE INTERRUPCONES DE BAJA PRIORIDAD -----*/ /******************************************** ************/ #pragma code _LOW_INTERRUPT_VECTOR = 0x1018 void _low_ISR (void) { ; }

Realizado por: Jenny Vanessa Arce Mateus ECBTI

3. EVIDENCIAS:

4. ANLISIS DE EXPERIENCIA CONCLUSIONES:

LA Y

Con la elaboracin de estos circuitos y su programacin record varios trminos e instrucciones que no tena presentes. La experiencia fue muy enriquecedora ya que aprend el funcionamiento de los microcontroladores. Esta experiencia abre muchas expectativas para generar o crear proyectos que sirvan a la comunidad

Realizado por: Jenny Vanessa Arce Mateus ECBTI

dando soluciones a inconvenientes por falta de tecnologa en algunas empresas. No fue muy fcil hacer que los circuitos funcionaran ya que arreglaba una cosa y se me descuadraba otra, esto se dio por no tener muy claras las instrucciones al principio.

Realizado por: Jenny Vanessa Arce Mateus ECBTI