You are on page 1of 5

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

en Lenguaje C Proyectos: USO DE LA MEMORIA EEPROM INTERNA
/* * Nombre del Proyecto: P7a_eeprom.c * Nombre del Autor: (c) Mikroelektronika, 2009. * Description: (Explicación del ejercicio) * Test configuration: MCU: PIC16F887 Oscillator: HS, 08.0000 MHz SW: mikroC PRO for PIC */

on PORTC Delay_ms(1000). } } // 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 descripción correspondiente. Delay_ms(250). dos en la dirección uno. Empezando con cero en la dirección cero. ii < 32. PORTC = 0. PORTB = 0x00. 3) Modifique el ejercicio para que se graben todas las posiciones de memoria EEPROM en incrementos de a dos. Delay_ms(1000). PORTC = 0xFF. EEPROM_Write(0x50. Delay_ms(1000). 4) Modifique el programa para que grabe las localidades A0 hasta AF de la memoria EEPROM con el número correspondiente a su dirección. ii++) EEPROM_Write(0x80+ii. PORTC = 0x00. for(ii = 0. PORTB = 0. C2ON_bit = 0. ii). C1ON_bit = 0.0x55). PORTB PORTC = EEPROM_Read(0x50)./*Header******************************************************/ char ii. Delay_ms(1000). for(ii = 0. 2) Qué direcciones de la memoria EEPROM son grabados y con qué valores.0xAA). void main(){ ANSEL = 0. TRISC = 0. ii < 32. ANSELH = 0. ii++) { PORTD = EEPROM_Read(0x80+ii). . PORTD = 0. PORTB = EEPROM_Read(0x02). TRISB = 0. cuatro en la dirección tres y así sucesivamente. EEPROM_Write(0x02. PORTB = 0xFF. TRISD = 0.

2009.0000 MHz SW: mikroC PRO for PIC * NOTES: Para que el ejemplo trabaje correctamente se deberá incluir el archivo mask.CONTADOR BCD DE DOS DIGITOS /* * Nombre del Proyecto: P7b_2d_cnt. de la siguiente manera: #include “mask.c” */ CONEXIÓN PARA IMPLEMENTACIÓN PRÁCTICA .c * Nombre del Autor: (c) Mikroelektronika. * Description: (Explicación del ejercicio) * Test configuration: MCU: PIC16F887 Oscillator: HS.c en el programa principal. 08.

INTE. } void main() { OPTION_REG = 0x80. digit_no = 0. PORTC = digit1. digit_no = 1. INTCON = 0x20.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 . TRISA = 0. TMR0 = 0.CONEXIÓN PARA SIMULACIÓN /*Header******************************************************/ unsigned short mask(unsigned short num). i. unsigned short digit_no. i++) { digit = i % 10u. do { for (i = 0.RBIE. void interrupt() { if (digit_no==0) { PORTA = 0. PORTC = digit10. T0IE=1 // Set timer TMR0 // // // // // Disable interrupt PEIE. PORTC = 0. TRISC = 0. PORTA = 1. } else { PORTA = 0. INTCON = 0xA0. digit10. } TMR0 = 0. PORTA = 2. // 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. digit. digit1. PORTA = 0. i<=99.

case 4 : return 0x66. } } RESPONDER: 1) Analice cada una de las instrucciones del programa coloque luego en la cabecera la descripción correspondiente. } } while (1). case 6 : return 0x7D. case 2 : return 0x5B. case 5 : return 0x6D. // Prepare mask for displaying ones digit = (char)(i / 10u) % 10u. case 1 : return 0x06. case 3 : return 0x4F. // Prepare mask for displaying tens Delay_ms(1000). case 7 : return 0x07. 2) Realice el mismo ejercicio para DISPLAYS de ANODO COMUN .digit1 = mask(digit). case 9 : return 0x6F. } // Endless loop mask.c file: /*Header******************************************************/ unsigned short mask(unsigned short num) { switch (num) { case 0 : return 0x3F. digit10 = mask(digit). case 8 : return 0x7F.