Hace un tiempo hice un codigo (el primero y gracias a ustedes), el programa encendia un led y cuando este prendia y apagaba una cantidad de veces prendia otro led , bueno este fin de semana se me ocurrio dejarlo funcionando todo el dia, y por la noche desconectarlo, al otro dia volvi a hacer lo mismo pero al energizarlo (conectarle la fuente) no arranco, lo desconecte lo volvi a conectar y si arranco esto me lo hizo dos veses hasta ahora.
Saben si debo colocar alguna linea que me resetee el micro antes de comenzar o asi esta bien o la falla podria estar por otro lado ( la fuente que utilizo es una switching de 5 Volt 1 Amp, de las que estan armadas con enchufe para enchufar directamante a 220Vac)
Me llamo la atencion pues parecia que todo andaba bien cuando hice el codigo funciono lo mas bien pero, supomgo que al dejarlo funcinando todo el dia y luego desconectarlo, el programa se detiene en cualqueer lugar, es por eso que pregunto si me esta faltando alguna linea que resetee el micro al energizarlo.
El micro es el MC9S08SH8.
Aca les dejo el codigo, para que no lo busquen:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
void delay(void) { //Retardo de aprox. 100ms
char cont;
cont=5;
asm {
loop: nop
nop
nop
nop
nop
dbnz cont,loop
}
}
void main(void) {
int i, cuenta;
cuenta=0;
SOPT1 = 0x02; //Deshabilito watchdog
PTBDD_PTBDD1=1; //Configuro el bit 1 del puerto B como salida
PTBDD_PTBDD0=1; //Configuro el bit 0 del puerto B como salida
PTAPE_PTAPE0=1; //Configuro la resistencia pull-up de PTAD0
EnableInterrupts;
for(;;) {
for(i=60000;i;i--){ //enciende un led1
PTBD_PTBD1=1 ;
delay();
}
for(i=30000;i;i--){ //apaga led1
PTBD_PTBD1=0;
delay();
}
cuenta+=1;
if (cuenta==20) //si se apaga y prende led1 20 veses
PTBD_PTBD0=1; // prendo led2
for(i=100;i;i--){
delay();
}
if (cuenta==22){ //pregunto si la variable "cuenta" alcanzo 22 encendidas y apagadas del led 1
PTBD_PTBD0=0; //si llego apaga led2
cuenta=0 ;
}
}
}
Gracias, salu0010