Está en la página 1de 5

PRACTICA 7 EEPROM Y CONTADORES DE DOS DIGITOS OBJETIVOS: Familiarizarse con el manejo de la memoria EEPROM interna y contadores de dos dgitos

s en Lenguaje C Proyectos: USO DE LA MEMORIA EEPROM INTERNA


/* * Nombre del Proyecto: P7a_eeprom.c * Nombre del Autor: (c) Mikroelektronika, 2009. * Description: (Explicacin del ejercicio) * Test configuration: MCU: PIC16F887 Oscillator: HS, 08.0000 MHz SW: mikroC PRO for PIC */

/*Header******************************************************/

char ii; void main(){ ANSEL = 0; ANSELH = 0; C1ON_bit = 0; C2ON_bit = 0; PORTB = 0; PORTC = 0; PORTD = 0; TRISB = 0; TRISC = 0; TRISD = 0; for(ii = 0; ii < 32; ii++) EEPROM_Write(0x80+ii, ii); EEPROM_Write(0x02,0xAA); EEPROM_Write(0x50,0x55); Delay_ms(1000); PORTB = 0xFF; PORTC = 0xFF; Delay_ms(1000); PORTB = 0x00; PORTC = 0x00; Delay_ms(1000); PORTB = EEPROM_Read(0x02); PORTB PORTC = EEPROM_Read(0x50); on PORTC Delay_ms(1000); for(ii = 0; ii < 32; ii++) { PORTD = EEPROM_Read(0x80+ii); Delay_ms(250); } }

// loop variable // Configure AN pins as digital I/O // Disable comparators

// Fill data buffer // Write data to address 0x80+ii // Write some data at address 2 // Write some data at address 0150 // Blink PORTB and PORTC LEDs // to indicate reading start

// Read data from address 2 and display it on // Read data from address 0x50 and display it

// Read 32 bytes block from address 0x80 // and display data on PORTD

RESPONDER: 1) Analice cada una de las instrucciones del programa coloque luego en la cabecera la descripcin correspondiente. 2) Qu direcciones de la memoria EEPROM son grabados y con qu valores. 3) Modifique el ejercicio para que se graben todas las posiciones de memoria EEPROM en incrementos de a dos. Empezando con cero en la direccin cero, dos en la direccin uno, cuatro en la direccin tres y as sucesivamente. 4) Modifique el programa para que grabe las localidades A0 hasta AF de la memoria EEPROM con el nmero correspondiente a su direccin.

CONTADOR BCD DE DOS DIGITOS


/* * Nombre del Proyecto: P7b_2d_cnt.c * Nombre del Autor: (c) Mikroelektronika, 2009. * Description: (Explicacin del ejercicio) * Test configuration: MCU: PIC16F887 Oscillator: HS, 08.0000 MHz SW: mikroC PRO for PIC * NOTES: Para que el ejemplo trabaje correctamente se deber incluir el archivo mask.c en el programa principal, de la siguiente manera: #include mask,c */

CONEXIN PARA IMPLEMENTACIN PRCTICA

CONEXIN PARA SIMULACIN

/*Header******************************************************/ unsigned short mask(unsigned short num); unsigned short digit_no, digit10, digit1, digit, i; void interrupt() { if (digit_no==0) { PORTA = 0; PORTC = digit1; PORTA = 1; digit_no = 1; } else { PORTA = 0; PORTC = digit10; PORTA = 2; digit_no = 0; } TMR0 = 0; INTCON = 0x20; } void main() { OPTION_REG = 0x80; TMR0 = 0; INTCON = 0xA0; PORTA = 0; TRISA = 0; PORTC = 0; TRISC = 0; do { for (i = 0; i<=99; i++) { digit = i % 10u; // Count from 0 to 99

// Turn off both displays // Set mask for displaying ones on PORTD // Turn on display for ones (LSD) // Turn off both displays // Set mask for displaying tens on PORTD // Turn on display for tens (MSD) // Reset counter TMRO // Bit T0IF=0, T0IE=1

// Set timer TMR0 // // // // // Disable interrupt PEIE,INTE,RBIE,T0IE Turn off both displays All port A pins are configured as outputs Turn off all display segments All port D pins are configured as outputs

digit1 = mask(digit); // Prepare mask for displaying ones digit = (char)(i / 10u) % 10u; digit10 = mask(digit); // Prepare mask for displaying tens Delay_ms(1000); } } while (1); } // Endless loop

mask.c file: /*Header******************************************************/ unsigned short mask(unsigned short num) { switch (num) { case 0 : return 0x3F; case 1 : return 0x06; case 2 : return 0x5B; case 3 : return 0x4F; case 4 : return 0x66; case 5 : return 0x6D; case 6 : return 0x7D; case 7 : return 0x07; case 8 : return 0x7F; case 9 : return 0x6F; } }

RESPONDER: 1) Analice cada una de las instrucciones del programa coloque luego en la cabecera la descripcin correspondiente. 2) Realice el mismo ejercicio para DISPLAYS de ANODO COMUN

También podría gustarte