能否帮我修改一下,特别是那个看门狗程序,不会弄。
#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();
}
}
}
} |