Download as pdf or txt
Download as pdf or txt
You are on page 1of 6

Contador de clientes EEPROM

En C
Introducción a microcontroladores

3CM15
Luis Diego Jiménez Delgado
18 de noviembre de 2021

Luis Diego Jimenez Delgado 1

Descripción
En un supermercado se ha determinado premiar a cada cliente múltiplo de 6.
1. Desarrolle un sistema basado en un AVR, el cual debe detectar al cliente
número 6 y generar un tono de 440 Hz (aproximadamente), por 5 segundos,
cuando eso ocurra.
2. Los clientes deben presionar un botón para ser considerados ( lancos de
bajada).
3. Al temporizador 2 para generar el tono de 440 Hz y al temporizador 1 para
el conteo de 5 segundos, considerar la frecuencia del microcontrolador de 1
MHz.
4. Mostrar en un display BCD la cuenta descendente (5-0)
5. Contar el número de ganadores y guardarlo en la EEPROM

Algoritmo

Luis Diego Jimenez Delgado 2

Código
#include<avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>

void sonar(void){
int i = 0;
for(i = 0; i < 200; i++){
PORTA = 0x01;
_delay_ms(2);
PORTA = 0x00;
_delay_ms(2);
}
}

void config_io(void){
DDRA = 0x01;
DDRB = 0b11111010;
PORTB = _BV(PB0);
PORTB = _BV(PB2);
DDRC = 0x0F;
DDRD = 0xFF;
while(!eeprom_is_ready()){
_delay_ms(10);
}
eeprom_write_byte(0x00,0x00);
}

int main(void){
config_io();
unsigned char cta = 0, wins = 0;
while(1){
switch(PINB){
/*case (5):
Ambos botones sin presionar
break;
*/
case (4):
/*Boton en pin0 presionado*/
cta++;
if(cta == 6){
PORTC = cta;
wins++;
sonar();
while(!eeprom_is_ready()){
//Si la memoria no esta lista para escritura,
esperamos
_delay_ms(10);
}
//Ya esta lista
eeprom_write_byte(0x00,wins);
cta = 0;
}

break;
case (1):
/*Boton en pin2 presionado*/

Luis Diego Jimenez Delgado 3

wins = 0;
while(!eeprom_is_ready()){
//Si la memoria no esta lista para escritura, esperamos
_delay_ms(10);
}
//Ya esta lista
eeprom_write_byte(0x00,wins);
break;
}
_delay_ms(200);
PORTC = cta;
PORTD = eeprom_read_byte(0x00);
}
}

Simulación

Luis Diego Jimenez Delgado 4

Luis Diego Jimenez Delgado 5

Conclusiones
Con el desarrollo de esta práctica implementamos algunas de las
funcionalidades y facilidades que nos proporciona el lenguaje C al momento de
programar el microcontrolador ATMEGA8535 basado en un ejercicio desarrollado
anteriormente.
Se implementaron las instrucciones equivalentes en C con las que ya
conocíamos en ensamblador, sin embargo, existen algunas diferencias como en
cualquier lenguaje de programación que lo identi ica en sintaxis.

Luis Diego Jimenez Delgado 6


You might also like