#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include <MC9S08SH8.h>
void delay_100us(void) { //Retardo de aprox. 100ms
char cont;
cont=20;
asm {
loop: nop //1 ciclo
nop
dbnz cont,loop //
}
}
void main(void) {
int i;
unsigned char parpadea=0; //inicialice la varible en cero
unsigned int temp;
SOPT1 = 0x02; //Deshabilito watchdog
ICSC1=0x14; //Reloj interno, divido por 4 (CLK=8Mhz,BUS_CLK=2Mhz)
PTBDD_PTBDD0=1; //Configuro el bit 0 del puerto B como salida
PTADD_PTADD0=0; //Configuro el bit 0 del puerto A como entrada
PTAPE_PTAPE0=1; //Configuro la resistencia pull-up de PTAD0
EnableInterrupts;
for(;;) {
if (!parpadea)
while (PTAD_PTAD0) for (temp=100; temp; temp--); //recopie esta linea aca
parpadea=!parpadea; //recopie esta linea aca
{
PTBD_PTBD0=1; //Pongo el bit 0 del puerto B en 1
for (i=0; i<3000; i++) //Espero aprox. 300ms
{
delay_100us(); //Llamo función de retardo
}
PTBD_PTBD0=0; //Pongo el bit 0 del puerto B en 0
for (i=0; i<3000; i++) //Espero aprox. 300ms
{
delay_100us(); //Llamo función de retardo
}
}
if (PTAD_PTAD0) //Chequeo si el switch está presionado
{
while (PTAD_PTAD0) for (temp=100; temp; temp--);
parpadea=!parpadea;
}
} /* loop forever */
/* please make sure that you never leave main */
}