刹车程序一直没弄好,测量了下输出口P5.5,不知道为什么一直输出了低电平。难道是这个STC15W204S单片机P5.5是默认是输出低电平。刚学,不懂这些。
或是程序错了?
#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 keyscan()
{
while(key!= 0);
if(key == 0) //刹车
{
Delay10ms(); //阻塞式延时消抖,10ms
if(key == 0) //如果真刹车,不是误动作
{
led=0; //输出低电平
Delay200ms(); //输出延时
while(!key); //等待按键松开
}
}
if(key == 1) //按键松开
{
Delay10ms(); //等延时消抖,10ms
if(key == 1) //按键真松开
{
led=0; //输出低电平
Delay200ms(); //输出延时
led=0; //再次输出低电平
Delay200ms(); //输出延时
}
}
}
/******************主程序**********************/
void main()
{
while(1)
{
keyscan(); //按键扫描
}
} |