Memoria

Solo disponible en BuenasTareas
  • Páginas : 5 (1024 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de diciembre de 2010
Leer documento completo
Vista previa del texto
MEMORIA LE2 MODUL 3//esta es la memoria que yo hice piyando cosas de las otras que te he copiado. Esta todo bien y funciona pero hay cosas hechas “a mi manera” del plan chapuzilla así que no pongas copiar y pegar!! xD Un besito hipa! nkd//

La memòria d’aquest darrer mòdul l’hem estructurat de la següent manera:
Primer hem adjuntat els esquemes que hem dissenyat (esquema general, esquema deles tecles del comandament, l’esquema d’algunes funcions implantades...)
Després hem explicat la distribució del projecte en fitxers, és a dir, que trobem dins dels diferents arxius de suports: timers.h, timers.c, ports.h...
Hem inclòs els codis de Timers.c i Ports.c tots dos comentats.
Hem inclòs el codi de Robot.c comentat i amb un comentari general al final.
Finalment hemintentat desenvolupar algunes de les funcions opcionals del mòdul (emmagatzemar i reproduir).

ESQUEMA DEL FUNCIONAMENT GENERAL

INICIALITZAR

TECLA REBUDA?

IDENTIFICACIÓ DE LA TECLA

INICIALITZEM VARIABLES
INICIALITZAEM PORTS
INICIALITZEM TIMERS

MOURE ROBOT
obrir_pinca
tancar_pinca
gir_horari
pujar
gir_antihorari
baixar
enrere
endevant


NO

ESQUEMA TECLES

2
TANCAR1
OBRIR
3
A
B
6
5
BAIXAR
4
PUJAR
C
9
8
ENDAVANT
7
ENRERE
D
#
0
GIR HOR.
*
GIR A.H.

ESQUEMA MOTORS POSICIÓ INICIAL

Comprobar que no ens trobem ja a l’inici.

CRIDAR A LA FUNCIO “inici()”

MOTORS EN POSICIÓ INICIAL

CRIDEM A
“Retard ()”

PARAR MOTORS

ESQUEMA PROCÉS MOURE ROBOT

IDENTIFICACIÓ DE LA TECLA
TECLA REBUDA
INTERRUPCIONS JA HABILITADES
INTRODUIRLES DADES REBUDES EN LA VARIABLE LOCAL
CRIDAR A LA FUNCIÓ “moure_motor()”
Port2
MOURE MOTOR
Retard (40)  INTRODUIM UN RETARD DE 40ms.
Durant un temps d’espera queden inhabilitades les interrupcions i no es poden rebre noves instruccions.
PARAR MOTOR
SetP2(0xFF)
PODEM REBRE NOVES INSTRUCCIONS

DISTRIBUCIÓ DEL PROJECTE EN FITXERS:
Expliquem breument el contingut dels diferents fitxers desuport que usarem en el projecte:
Ports.h  Capçalera amb els prototips i les variables de ports.c
Ports.c  Inclou les inicialitzacions dels ports..
Timers.h  Capçalera amb els prototips i les variables de timers.c
Timers.c  Inclou les inicialitzacions y las interrupcions dels “timers”
Robot.h  Capçalera amb els prototips i les variables de robot.c
Robot.c  És el nuclide l’aplicació, aquí és on trobem el main i les crides a les funcions.

TIMERS.C (comentaris al final del codi)

#include <embedded.h>
#include "typedefs.h"
#include "int.h"
#include "register.h"
#include "timers.h"//funcions de control dels temporitzadors

// Variables globals
int iTick;//control del pas per la RSI de la base de temps

// Inicialització dels temporitzadorsvoid IniTimers(void)
{
BYTE far *pbyReg;//punter a un registre

//substituir el vector d'interrupció de la base de temps
disable();//no permetre cap interrupció
setvect(INTBASETEMPS, RSIBaseTemps);
enable();

//crear el punter al registre de control del processador PRC
pbyReg = (BYTE far *)MK_FP(RSEG, PRC);

//modificar el registre PRC per a una int cada 2.05 ms
*pbyReg =0x04;//RAM interna deshabilitada
//Freqüència clk de 4 MHz

//apuntar al registre TBIC
pbyReg = (BYTE far *)MK_FP(RSEG, TBIC);
*pbyReg &= 0xBF;//activar interrupcions BT

}

// Retorna després d'un retard de 'iTemps' ticks de la base de temps.
void Retard(int iTemps)
{
//modificar el valor de la variable de control
disable();
iTick = iTemps;
enable();

//esperar 'iTemps'while(iTick != 0)
enable();
}

// Servei d'interrupció de la base de temps
void interrupt RSIBaseTemps(void)
{
enable();//permetre altres interrupcions.

if(iTick > 0)
--iTick;//marcar la passada
FINT;
}

Comentaris de Timers.c  Estem configurant el registre PRC per tal d’aconseguir una interrupció cada 2,5 ms i d’aquesta manera, aconseguir treballar a una freqüència de...
tracking img