Vous êtes sur la page 1sur 3

// -------------------Primera prctica de PI-----------------------------// Mostra diferents numeros al '5x7 Dot matrix' segons el boto que s'ha polsat

// ----------------------------------------------------------------------// Autors: Antonio B Martnez y Ruben Ruiz-----------------// Fecha: Julio 2004


// Comentaris: Aquest Firmware esta dissenyat per la placa 'Development Board EZ
-USB ABMV-RR ESAII 2004'
//
// Incloure les llibreries necessaries:
// EZUSB.H conte:
Definicio de constants, macros, tipus de dades i variabl
es globals, i tamb
//
els prototips de les funcions que s'util
itzaran
// EZREGS.H conte:
Declaracio de registres i mascares de bits
#include <C:\Cypress\USB\Target\Inc\ezusb.h>
#include <C:\Cypress\USB\Target\Inc\ezregs.h>
// Definim els noms de l'adrea
#define
COL_ADDR
#define
ROW_ADDR
// Definim els noms de l'adrea
#define
BUT_ADDR

I2C dels I/O port on esta el '5x7 Dot matrix'


0x21
// Direccio de les columnes
0x22
// Direccio de les files
I2C dels botons
0x20
// Direccio dels botons

// Prototip de la funcio Escriu ha d'estar abans del main!


void Escriu(BYTE *);
// Definim les variables a fer servir
/*BYTE xdata Un[] = { 0x00, 0x00, 0x7F, 0x00, 0x00 };
BYTE xdata Dos[] = { 0x42, 0x61, 0x51, 0x49, 0x46 };
BYTE xdata Tres[] = { 0x22, 0x41, 0x49, 0x49, 0x36 };
BYTE xdata Quatre[] = { 0x10, 0x18, 0x14, 0x12, 0xFF };
BYTE xdata Cinc[] = { 0x4F, 0x49, 0x49, 0x49, 0x31 };
BYTE xdata Sis[] = { 0x3E, 0x49, 0x49, 0x49, 0x32 };
*/
BYTE xdata Un[] = { 0x00, 0x00, 0x7F, 0x00, 0x00 };

BYTE xdata clic[] = { 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,0x00, 0x00, 0x1F
, 0x01, 0x01, 0x1F, 0x10, 0x10, 0x1F, 0x00, 0x00, 0x1F, 0x01, 0x01, 0x1F, 0x01,
0x01, 0x1F, 0x00, 0x00, 0x02, 0x06, 0x0A, 0x1F, 0x02, 0x02, 0x00, 0x00, 0x00, 0x
1F, 0x10, 0x10, 0x1F, 0x01, 0x01, 0x1F, 0x00, 0x00, 0x1F, 0x10, 0x10, 0x1F, 0x11
, 0x11, 0x1F, 0x00, 0x00 };

BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE

xdata
xdata
xdata
xdata
xdata
xdata
xdata

Dos[] = { 0x42, 0x61, 0x51, 0x49, 0x46 };


Tres[] = { 0x22, 0x41, 0x49, 0x49, 0x36 };
Quatre[] = { 0x10, 0x18, 0x14, 0x12, 0xFF };
Cinc[] = { 0x4F, 0x49, 0x49, 0x49, 0x31 };
Sis[] = { 0x3E, 0x49, 0x49, 0x49, 0x32 };
Todas = 0xFF;
buttons, oldbuttons,derouler=0;

// PROGRAMA PRINCIPAL
main()

{
EZUSB_InitI2C();
while(1) {
EZUSB_ReadI2C(BUT_ADDR,0x01,&buttons); // Llegim l'estat del bo
tons
if(buttons != oldbuttons) {

// Si ha

canviat...
oldbuttons = buttons;
if(buttons==0xFD)
{
if(derouler<42)
derouler++;
}
if(buttons==0xF7)
{ if(derouler>0)
derouler--;
}
// Guardem el nou estat
/*
switch(buttons) {
reak;

case 0xfe:

for(i=0;i<3;i++) Escriu(Tres); b

case 0xfd:

for(i=0;i<3;i++) Escriu(Un); bre

case 0xfb:

for(i=0;i<3;i++) Escriu(Dos); br

case 0xf7:

for(i=0;i<3;i++) Escriu(Cinc); b

case 0xef:

for(i=0;i<3;i++) Escriu(Sis); br

case 0xdf:

for(i=0;i<3;i++) Escriu(Quatre);

default:

break;

// Dreta

ak;

// Esquerra

eak;

// Amunt

reak;

// Abaix

eak;

// Boto dret

break; // Boto esquerra


// Cas per defecte no fem res
}*/
}
Escriu(clic);
}
}
void Escriu(BYTE *Buffer){
BYTE data i;
BYTE xdata row,b;

for(i=0;i<7;i++)
{
row=(0x01<<i);
EZUSB_WriteI2C(ROW_ADDR, 0x01, &row);

b=~Buffer[i+derouler];
EZUSB_WriteI2C(COL_ADDR, 0x01, &b);
EZUSB_Delay(1);
EZUSB_WriteI2C(COL_ADDR, 0x01, &Todas);
}
}