Uso Del S08SH8
Uso Del S08SH8
Uso Del S08SH8
com/500/manejo-de-puertos-de-es-parte-1/ **************** creando proyectos para S08SH8 ********************************** Ahora pongamos todo esto en prctica. Primero debemos crear un proyecto nuevo en C odewarrior 10.2. Para esto podemos seguir los videos que se encuentran en el pos t anterior. Seleccionamos el micro MC9S08SH8 y luego de esto eligimos simulacin p or software (P&E Full Chip Simulation). En la siguiente ventana podemos elegir el lenguaje, que en este caso es Absolute Assembly. Y esto es todo lo que configuraremos por ahora. A la izquierda podemos encontrar una lista de nuestros proyectos. Navegamos hast a la carpeta Sources y abrimos el archivo main.asm. Esta es la plantilla para cr ear nuestro programa. Lo primero que haremos ser modificar la siguiente lnea: ASM | 1 ORG RAMStart Por: ASM | 1 ORG Z_RAMStart Luego debemos configurar los puertos de entrada/salida con el siguiente cdigo: ASM | 1 ******************************************** 2 *Configuracin de puertos de entrada/salida* 3 ******************************************** 4 bset 0,PTBDD 5 mov #%11111111,PTADD ;Configuro todo el registro PTADD como salida ;Configuro el bit 0 del registro PTBDD como salida copy code | ? copy code | ? copy code | ?
Por ltimo observemos la etiqueta mainLoop. Lo que hace es indicar el comienzo del programa principal. Este ser el lugar en dnde escribiremos nuestro cdigo, que al t erminarlo con la instruccin: ASM | 1 bra mainLoop ;Salta siempre al inicio del programa principal copy code | ?
se crear un bucle infinito que ejecutar nuestro cdigo una y otra vez. En este caso escribiremos el siguiente cdigo: ASM | 1 bset 0,PTBD 2 bclr 0,PTBD 3 bset 3,PTAD 4 bclr 3,PTAD ;Pongo en 0 el bit 3 del puerto A ;Pongo en 1 el bit 3 del puerto A ;Pongo en 0 el bit 0 del puerto B ;Pongo en 1 el bit 0 del puerto B copy code | ?
Ya estamos listos para probar nuestro programa. Primero debemos compilarlo hacie ndo click en Build. Si todo est bien, no aparecer ningn error. Luego hacemos click en Debug. Con la tecla F5 podemos hacer avanzar nuestro programa instruccin por i nstruccin y as ver como se van modificando los registros en la parte superior dere cha de la pantalla. Nuevamente, para ms detalles pueden seguir los videos que se encuentran en el post anterior. ********* ******************************************************************* 02 ;* This stationery serves as the framework for a user application. * 03 ;* For a more comprehensive program that demonstrates the more * 04 ;* advanced functionality of this processor, please see the * 05 ;* demonstration applications, located in the examples *
19 ; 20 ; variable/data section
36 ******************************************** 37 bset 0,PTBDD ;Configuro el bit 0 del puerto B como salida 38 mov #%11111111,PTADD ;Configuro todo el puerto A como salida 39 bclr 2,PTCDD ;Configuro el bit 5 del puerto C como salida 40
41 mainLoop: 42 bset 0,PTBD ;Pongo en 1 el bit 0 del puerto B 43 bclr 0,PTBD ;Pongo en 0 el bit 0 del puerto B 44 bset 3,PTAD ;Pongo en 1 el bit 3 del puerto A 45 bclr 3,PTAD ;Pongo en 0 el bit 3 del puerto A 46 NOP 47
56 spurious: ; placed here so that security value 57 NOP ; does not change all the time. 58 RTI 59
64 ORG $FFFA 65
En este nuevo ejemplo aprenderemos a configurar el reloj interno del microcontro lador y a seguir aplicando lo que aprendimos en el post anterior. Configuraremos el microcontrolador para que cuando presionemos un pulsador se en cienda y apague un LED a una velocidad de aproximadamente 300ms, y que deje de p arpadear luego de soltarlo. Utilizaremos el reloj interno del micro, por lo que no hace falta agregar ningn o scilador externo. Por default, el reloj est funcionando a 32Mhz y la frecuencia d e reloj del bus a 8Mhz. Para modificarlo debemos configurar el registro ICSC1(In ternal Clock Source Control Register 1). Este es un registro de 8 bits y en la s iguiente imagen se puede ver su estructura.Para obtener una frecuencia de bus de 2Mhz, haremos lo siguiente. Los bits 7 y 6 que seleccionan la fuente del reloj, los dejaremos en 00. Los bits 5 al 3 son para elegir el valor por el que se div ide el reloj, entonces los pondremos en 010 para dividir por 4 (32Mhz/4=8Mhz). E l bit 2 lo pondremos en 1 para seleccionar la referencia de reloj interna. Y por ltimo, los bits 1 y 0 los dejaremos en 0. De esta manera, obtenemos una frecuencia de reloj de 8Mhz. En la familia HCS08, la frecuencia de reloj del bus es la frecuencia de reloj dividido 2, por lo que en este caso obtendramos una frecuencia de 4Mhz, pero en el registro ICSC2 podrem os seleccionar el divisor que por default viene en 2, obteniendo as una frecuenci a de bus de 2Mhz. Por lo que no deberemos modificar el registro ICSC2. El cdigo en asembler para esto sera: En la prxima parte veremos un programa un poco ms completo, tanto en lenguaje asse mbler como en C. *************** Manejo de puertos de E/S Parte 2
En este nuevo ejemplo aprenderemos a configurar el reloj interno del microcontro lador y a seguir aplicando lo que aprendimos en el post anterior.
Configuraremos el microcontrolador para que cuando presionemos un pulsador se en cienda y apague un LED a una velocidad de aproximadamente 300ms, y que deje de p arpadear luego de soltarlo. Utilizaremos el reloj interno del micro, por lo que no hace falta agregar ningn o scilador externo. Por default, el reloj est funcionando a 32Mhz y la frecuencia d e reloj del bus a 8Mhz. Para modificarlo debemos configurar el registro ICSC1(In ternal Clock Source Control Register 1). Este es un registro de 8 bits y en la s iguiente imagen se puede ver su estructura.Para obtener una frecuencia de bus de 2Mhz, haremos lo siguiente. Los bits 7 y 6 que seleccionan la fuente del reloj, los dejaremos en 00. Los bits 5 al 3 son para elegir el valor por el que se div ide el reloj, entonces los pondremos en 010 para dividir por 4 (32Mhz/4=8Mhz). E l bit 2 lo pondremos en 1 para seleccionar la referencia de reloj interna. Y por ltimo, los bits 1 y 0 los dejaremos en 0. De esta manera, obtenemos una frecuencia de reloj de 8Mhz. En la familia HCS08, la frecuencia de reloj del bus es la frecuencia de reloj dividido 2, por lo que en este caso obtendramos una frecuencia de 4Mhz, pero en el registro ICSC2 podrem os seleccionar el divisor que por default viene en 2, obteniendo as una frecuenci a de bus de 2Mhz. Por lo que no deberemos modificar el registro ICSC2. El cdigo en asembler para esto sera: