Actividad Práctica sobre MC9S08SH8 Utilizando EBDM y CodeWarrior 10.1 Ing. Gerardo Sager Pantalla Inicial 16/08/2013 Introducción a la Programación en C sobre uC 9S08 de Freescale -SASE 2013- FI-UNLP [email protected].
Download ReportTranscript Actividad Práctica sobre MC9S08SH8 Utilizando EBDM y CodeWarrior 10.1 Ing. Gerardo Sager Pantalla Inicial 16/08/2013 Introducción a la Programación en C sobre uC 9S08 de Freescale -SASE 2013- FI-UNLP [email protected].
Slide 1
Actividad Práctica
sobre MC9S08SH8
Utilizando EBDM y
CodeWarrior 10.1
Slide 2
Ing. Gerardo Sager
Pantalla Inicial
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
FI-UNLP
[email protected]
2
Slide 3
Ing. Gerardo Sager
Macros #define
for(k=0 ; k<10000 ; k++)
{
suma=suma+k;
}
#define LIMITE 10000
for(k=0 ; k< LIMITE ; k++)
{
suma=suma+k;
}
FI-UNLP
[email protected]
#define LIMITE 5
for(k=0 ; k< LIMITE ; k++)
{
suma=suma+k;
}
for(k=0 ; k< LIMITE ; k++)
{
if(k%2==0)
{
suma=suma+k;
}
suma=suma+k;
}
for(k=0 ; k< LIMITE ; k++)
{
if(k%2==1)
{
suma=suma+k;
}
}
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
3
Slide 4
Como acceder a los
puertos
Ing. Gerardo Sager
FI-UNLP
[email protected]
Los registros de los periféricos están
mapeados en memoria.
No es fácil acordarse de las direcciones
Queremos un sistema mejor.
Nos convendría que los registros se vieran
como variables.
CW nos da esto resuelto, usando macros en el
archivo mc9s08sh8.h
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
4
Slide 5
Ing. Gerardo Sager
archivo mc9s08sh8.h
FI-UNLP
[email protected]
extern volatile PTBDSTR _PTBD @0x00000002;
#define PTBD
_PTBD.Byte
#define PTBD_PTBD0
_PTBD.Bits.PTBD0
#define PTBD_PTBD1
_PTBD.Bits.PTBD1
#define PTBD_PTBD2
_PTBD.Bits.PTBD2
#define PTBD_PTBD3
_PTBD.Bits.PTBD3
#define PTBD_PTBD4
_PTBD.Bits.PTBD4
#define PTBD_PTBD5
_PTBD.Bits.PTBD5
#define PTBD_PTBD6
_PTBD.Bits.PTBD6
#define PTBD_PTBD7
_PTBD.Bits.PTBD7
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
5
Slide 6
Ing. Gerardo Sager
Placa de Prueba
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
FI-UNLP
[email protected]
6
Slide 7
Ing. Gerardo Sager
FI-UNLP
Placa de LEDS
16/08/2013
B
G
G
Y
b7
b6
R
R
b5
R
b4
R
R
B
b3
R
b2
R
b1
R
b0
[email protected]
Y
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
R
R
7
Slide 8
Ing. Gerardo Sager
Encendido / Apagado de los
leds conectados al puerto B:
FI-UNLP
[email protected]
Encendido del bit 0
PTBD_PTBD0=1;
Apagado bit 0
PTBD_PTBD0=1;
Si quiero trabajar con todo el puerto junto, por ejemplo todos los bits
pares.
PTBD=0x55 (01010101);
si quiero invertirlos ( bits impares)
PTBD=~PTBD;
o bien
PTBD=PTBD^ 0xFF;
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
8
Actividad Práctica
sobre MC9S08SH8
Utilizando EBDM y
CodeWarrior 10.1
Slide 2
Ing. Gerardo Sager
Pantalla Inicial
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
FI-UNLP
[email protected]
2
Slide 3
Ing. Gerardo Sager
Macros #define
for(k=0 ; k<10000 ; k++)
{
suma=suma+k;
}
#define LIMITE 10000
for(k=0 ; k< LIMITE ; k++)
{
suma=suma+k;
}
FI-UNLP
[email protected]
#define LIMITE 5
for(k=0 ; k< LIMITE ; k++)
{
suma=suma+k;
}
for(k=0 ; k< LIMITE ; k++)
{
if(k%2==0)
{
suma=suma+k;
}
suma=suma+k;
}
for(k=0 ; k< LIMITE ; k++)
{
if(k%2==1)
{
suma=suma+k;
}
}
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
3
Slide 4
Como acceder a los
puertos
Ing. Gerardo Sager
FI-UNLP
[email protected]
Los registros de los periféricos están
mapeados en memoria.
No es fácil acordarse de las direcciones
Queremos un sistema mejor.
Nos convendría que los registros se vieran
como variables.
CW nos da esto resuelto, usando macros en el
archivo mc9s08sh8.h
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
4
Slide 5
Ing. Gerardo Sager
archivo mc9s08sh8.h
FI-UNLP
[email protected]
extern volatile PTBDSTR _PTBD @0x00000002;
#define PTBD
_PTBD.Byte
#define PTBD_PTBD0
_PTBD.Bits.PTBD0
#define PTBD_PTBD1
_PTBD.Bits.PTBD1
#define PTBD_PTBD2
_PTBD.Bits.PTBD2
#define PTBD_PTBD3
_PTBD.Bits.PTBD3
#define PTBD_PTBD4
_PTBD.Bits.PTBD4
#define PTBD_PTBD5
_PTBD.Bits.PTBD5
#define PTBD_PTBD6
_PTBD.Bits.PTBD6
#define PTBD_PTBD7
_PTBD.Bits.PTBD7
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
5
Slide 6
Ing. Gerardo Sager
Placa de Prueba
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
FI-UNLP
[email protected]
6
Slide 7
Ing. Gerardo Sager
FI-UNLP
Placa de LEDS
16/08/2013
B
G
G
Y
b7
b6
R
R
b5
R
b4
R
R
B
b3
R
b2
R
b1
R
b0
[email protected]
Y
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
R
R
7
Slide 8
Ing. Gerardo Sager
Encendido / Apagado de los
leds conectados al puerto B:
FI-UNLP
[email protected]
Encendido del bit 0
PTBD_PTBD0=1;
Apagado bit 0
PTBD_PTBD0=1;
Si quiero trabajar con todo el puerto junto, por ejemplo todos los bits
pares.
PTBD=0x55 (01010101);
si quiero invertirlos ( bits impares)
PTBD=~PTBD;
o bien
PTBD=PTBD^ 0xFF;
16/08/2013
Introducción a la Programación en C sobre uC
9S08 de Freescale
-SASE 2013-
8