能否幫我修改一下,特別是那個看門狗程序,不會弄。
#include"intrins.h"
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sfr P5 =0xC8;//P5地址
sbit key = P5^4;
sbit led = P5^5;
/***********************200ms延時函數*****************************/
void Delay200ms() //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
_nop_();
i = 10;
j = 31;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/***********************10ms延時函數*****************************/
void Delay10ms() //@12.000MHz
{
unsigned char data i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
/***********************等待剎車松開函數*****************************/
void fun_Wait_Run(void)
{
while(1)
{
CLRWDT(); //清除看門狗定時器
if(key == 1) //按鍵松開
{
Delay10ms(); //阻塞式延時消抖,10ms
if(key == 1) //按鍵真的松開,不是誤動作
{
break; //跳出等待的循環,運行函數調用處之后的程序
}
}
}
}
/******************主程序**********************/
void main()
{
while(1)
{
if(key == 0) //剎車
{
Delay10ms(); //延時消抖,10ms
if(key == 0)
{ //真剎車。
led = 0; //輸出低電平。
Delay200ms(); //輸出延時。
}
fun_Wait_Run; //等待松開手剎
}
if(key == 1) //松開手剎
{
Delay10ms(); //延時消抖,10ms
if(key == 0) //真松開手剎。
{
led = 0; //輸出低電平。
Delay200ms(); //輸出延時。
led = 0; //再次輸出低電平。
Delay200ms();
}
}
}
} |