剎車程序一直沒弄好,測量了下輸出口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(); //按鍵掃描
}
} |