Está en la página 1de 6

ESCOLA POLITCNICA SUPERIOR

UNIVERSITAT DE LES ILLES BALEARS


Enginyeria Tcnica Industrial
(esp. Electrnica Industrial)
B.O.E. 6-Mar-2001
Asignatura:
Imparticin:
Curso:
Profesores:
4683 InIormatica Industrial (9 creditos) En Extincion
2 Curso-Anual
2012-2013
Javier Antich
!"#$%& (" ")*+",%-
./ (" ")"+0 (" 12.3 4#0)50#%*0+6% %)*6#67%(%8
3. (" 9%:0 (" 12.3 4#0)50#%*0+6% 0+(6)%+6%8
#09;)6 #%#6 <) % *+%5=& ("
;) >;& 6 1# :
"? 6 )*"+!%@ +&A 131
Se pretende utilizar un microcontrolador 8051 para analizar los numeros que un usuario
escribe por un teclado. En concreto, el analisis consiste en determinar si cada numero
introducido es o no capica. Ademas, en el caso de que sea capicua, el correspondiente
numero debe ser almacenado en una memoria EEPROM 24LC64 de Microchip.
Conexionado
Tal y como muestra la Iigura 1, el microcontrolador (C) tiene dos dispositivos conectados
a el: un teclado y una memoria EEPROM 24LC64. La conexion del teclado se lleva
a cabo via un interIaz serie RS-232. Por otro lado, la memoria se conecta al C a traves de
un enlace I2C conIigurado en modo estndar.
Figura 1
Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich
Interaccin con el teclado
En el Pinnacle 52, para simular la conexion RS-232 del teclado con el C debeis seguir
los siguientes pasos:
1. Acceder a Project Project Options Serial Port Simulation, y en la opcion
Main UART seleccionar Term Window.
2. Acceder a View UARTS UART Terminal Emulation y os aparecera la ventana
de la Iigura 2. Cualquier pulsacion que hagais sobre ella con vuestro teclado
provocara el envio al 8051 del codigo ASCII en version de 8 bits asociado con
la tecla pulsada. Dicho codigo quedara almacenado en el registro SBUF del C.
3. En la seccion de inicializaciones de vuestro programa, debeis conIigurar el interIaz
RS-232 en modo 0 shift register, habilitar la recepcion de datos SCON.4/REN,
y activar la interrupcion vinculada al puerto serie. De esta manera, la pulsacion
de cualquier tecla causara la ejecucion de la rutina de servicio de interrupcion
del puerto serie (en el texto que sigue, esta rutina se denomina RSI
serial
).
Como Iuncion principal, RSI
serial
debe ir acumulando los digitos del numero
que este siendo actualmente introducido por el usuario mediante el teclado
(notar que se debera ignorar cualquier pulsacion de tecla que no se corresponda con
ningun digito numerico, con la unica excepcion del espacio en blanco). Una vez
el numero ha sido completamente escrito (el Iin de un numero viene dado por
la pulsacion del caracter espacio en blanco), RSI
serial
ha de:
Comprobar que el numero es capicua.
Comprobar que el numero no esta Iormado por mas de 8 digitos.
Si el numero no es capicua o esta Iormado por mas de 8 digitos, entonces
se descarta. En caso contrario, el numero se debe almacenar en la memoria
EEPROM 24LC64.
En la memoria EEPROM 24LC64 solo se podran almacenar
los 5 ultimos numeros capicua introducidos por el usuario (por simplicidad,
cada numero capicua ocupara 8 posiciones de memoria de la EEPROM,
es decir, se utilizara una posicion de memoria de la EEPROM por cada
posible digito del numero capicua; ademas, notar que los numeros capicua
deberan ser almacenados en Iormato BIG-ENDIAN, es decir, los digitos mas
signiIicativos del numero ocuparan las posiciones de memoria mas bajas).
La direccion de memoria a partir de la cual se deberan almacenar
los 5 ultimos numeros capicua vendra dada por una constante denominada
EADDRNUMBERS (0000h EADDRNUMBERS 1FFFh).
Mas concretamente:
el ltimo numero capicua introducido ocupara el rango de
direcciones |EADDRNUMBERS0, EADDRNUMBERS7|,
2
Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich
el penltimo numero capicua introducido ocupara el rango de
direcciones |EADDRNUMBERS8, EADDRNUMBERS15|,
el antepenltimo numero capicua introducido ocupara el rango de
direcciones |EADDRNUMBERS16, EADDRNUMBERS23|,
el ante-antepenltimo numero capicua introducido ocupara el rango
de direcciones|EADDRNUMBERS24, EADDRNUMBERS31|,
el ante-ante-antepenltimo numero capicua introducido ocupara el
rango de direcciones |EADDRNUMBERS32, EADDRNUMBERS39|.
Figura 2
A traves del teclado, los siguientes comandos deben poder ser ejecutados:
#M: imprime el mayor de los 5 ultimos numeros capicua introducidos por
el usuario.
#m: imprime el menor de los 5 ultimos numeros capicua introducidos por
el usuario.
#Ld
1
,.., d
n
donde 1 n 4 y 0 d
i
9 para todo i 1 i n: de
los 5 ultimos numeros capicua introducidos por el usuario, imprime aquellos
que contienen los digitos d
1
,.., d
n
. Por ejemplo, suponiendo que
los 5 ultimos numeros capicua son 7412147, 202, 515, 23032, y 1,
#L0,2 imprime 202 y 23032,
#L1 imprime 7412147, 515, y 1,
#L4,5,7,8 no imprime ningun numero.
Para poder implementar los comandos previamente especiIicados,
haremos uso de un display tipo LCD que posee el teclado simulado.
Cualquier dato que reciba el teclado por el interIaz serie sera representado
automaticamente sobre dicho display. En consecuencia, el C debe
simplemente escribir el dato deseado en el registro SBUF para que este
sea visualizado. En el Pinnacle 52, el LCD del teclado queda deIinido
de nuevo por la ventana de la Iigura 2.
3
Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich
Interaccin con la memoria
En el Pinnacle 52, para simular la conexion I2C de la memoria con el C debeis seguir
los siguientes pasos:
1. Acceder a Project Project Options I2C Bus Configuration. Os aparecera la
ventana de la Iigura 3 desde donde podreis conIigurar las lineas de los puertos de
E/S del C que representaran las lineas SDA y SCL del bus I2C. Aunque se pueden
simular dos buses denominados 1 y 2, realizar unicamente la conIiguracion para el
primero de ellos.
Figura 3
2. Acceder a Project Project Options Serial I2C EEPROM 24LC64.
Os aparecera la ventana de la Iigura 4 desde donde podreis asignar una direccion
al dispositivo esclavo conectandolo, ademas, al bus 1 previamente conIigurado.
4
Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich
Figura 4
De acuerdo con el esquema de la Iigura 1, el C actuara como dispositivo maestro
mientras que la memoria lo hara como esclavo. Notar que, en estas circunstancias, NO sera
necesario arbitrar el uso de bus por la imposibilidad de que dos o mas dispositivos maestros
puedan coincidir intentando transmitir. Vuestro programa debera generar la seal de reloj
(SCL) y de datos (SDA) para comunicarse con la memoria de acuerdo con el mencionado
protocolo y el data sheet de la EEPROM que esta disponible en Campus Extens.
Para poder escribir y leer datos sobre el dispositivo 24LC64 debereis programar
dos subrutinas que implementen las operaciones BYTE WRITE y RANDOM READ, que
se encuentran descritas en el data sheet de dicha EEPROM. Ambas operaciones llevan
a cabo la transIerencia de un solo byte de datos a (byte write)/desde (random read)
la memoria. Como principal requisito, la velocidad de estas transferencias deber ser
la mxima permitida por el bus I2C, es decir, 100 Kbps. Adicionalmente,
la generacin de las seales SCL y SDA se har haciendo uso de un nico
temporizador. Por ltimo, debis asumir que la frecuencia de trabajo del C es
de 24 Mhz.
5
Comunicacin a travs de un bus I2C y el interfaz RS-232 Javier Antich
#0)&6 ("+%#6 0)"&
6 970+*%)*"&
ENTREGA DE LA PRACTICA:
Cada grupo debera entregar un nico informe en donde se explique la solucion dada
al problema planteado, y se presente el programa comentado asi como varios resultados de
simulacion obtenidos con el Pinnacle 52 que demuestren la validez de la solucion.
En la primera pgina del inIorme debera constar el nombre de la asignatura,
el ttulo de la prctica, el curso acadmico, el nombre de los autores del informe y,
Iinalmente, el nmero de grupo asignado.
La entrega de la practica se hara por Campus Extens a traves de la opcion
'Entrega Telemtica Prctica - Anticipada o 'Entrega Telemtica Prctica - Ordinaria
segun sea el caso. Ambas opciones estaran disponibles hasta las 23h 54` 59 del dia
de vencimiento del plazo de entrega especiIicado en la primera pagina de este documento.
Se os permitira enviar un nico fichero en formato comprimido (.RAR o .ZIP) que
debera contener dos carpetas, una con el inIorme (.ODT, .DOC, o .PDF) y otra con
los Iicheros Iuente del programa (.ASM). Adicionalmente, debereis dejar una copia
impresa del informe en el casillero del proIesor. Para ello, tendreis como margen de
tiempo tres dias habiles contando a partir de la Iecha de Iinalizacion del plazo.
IMPORTANTE:
El alumno que no siga las indicaciones arriba apuntadas ser penalizado con
hasta 0.5 puntos menos sobre la nota final de la prctica.
No se aceptar ninguna prctica despus del plazo de entrega establecido.
EVALUACION:
Tras la entrega de la practica, el proIesor propondra a sus alumnos un dia y una hora para
la defensa oral de la misma, que consistira en preguntas concretas sobre ciertos aspectos de
los programas desarrollados. La nota Iinal de la practica, siempre que la defensa se haya
superado de forma satisfactoria, se calculara de la siguiente manera:
25 InIorme
75 Solucion a los problemas
IMPORTANTE:
El alumno que no supere la defensa oral de la prctica suspender la misma
con independencia del resto de notas que haya obtenido.
Ante copias totales o parciales de prcticas se aplicar el procedimiento
sancionador estipulado en el reglamento acadmico de la universidad.
6

También podría gustarte