có bác nào biết cách sử dụng watchdog trong keil ,su dung 89s5X không ?
bác BẰC HẢI có thể giúp em không ?
bác BẰC HẢI có thể giúp em không ?
//----------------------------------------------------
// thghi watchdog se tran sau khoang 17ms neu khong duoc xoa lai tu dau.
#include <Treg52.h>
#include <Tdelay.h>
void HdelayWDT_ms(unsigned int ms)
{
unsigned char btam;
while(ms--)
{
btam = 120;
//reset watchdog timer
WDTRST = 0x1E;
WDTRST = 0xE1;
//delay khoang 1000us
while(btam--){}
}
}
void main (void)
{
//Gia tri ban dau cho watchdog timer
WDTRST = 0x1E;
WDTRST = 0xE1;
while(1)
{
P0 ++;
HdelayWDT_ms(500);
//mach se chay binh thuong do da reset watchdog timer
//trong ham delay
//Neu nhan p37, reset lai vdk
if (P37 == 0)
{
Hdelay_ms(20);
//do delay qua lau 20ms > 17mm => watchdog timer tran
//mach se tu reset lai
}
if(!P36)
{
HdelayWDT_ms(20);
P0--;
HdelayWDT_ms(500);
}
//Reset lai watchdog timer, o cho no tran
WDTRST = 0x1E;
WDTRST = 0xE1;
}
}
#include <AT89x51.h>
#define LED P1;
void tre();
void tre(void)
{
unsigned int i;
for (i=0;i<36000;i++)
{;}
}
main()
{
unsigned char P1=128;
for (;;)
{
P1=P1|(P1>>1);
if(P1==255)
{
tre();
P1=128;
}
tre();
}
}
Comment