以上的程序在上电复位时总是LED灯闪一下,初始化为低电平,但上电复位时总有高电平输出。请大神帮看看是不是程序初始化有问题呀?谢谢
#include <STC8.H>
#define u8 uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long uint32_t;
/********端口引脚定义*****/
sbit LED1=P3^0;
sbit LED2=P3^1;
sbit LED3=P3^2;
sbit LED4=P3^3;
sbit KEY=P5^4;
sbit LED5=P5^5;
/******延时函数声明******/
void delay(u16 Count);
/******主函数区******/
void main(void)
{
u8 num=0;
P3M0=0xff; //设P3口为推挽输出
P3M1=0x00;
RSTCFG=0xef; //设P5.4为IO口
P5M0=0xef; //设P5.4为准双向口
P5M1=0xef;
P5M0=0x20; //设P5.5为推挽输出
P5M1=0xdf;
P3=0x00; //初始化P3口为低电平
//LED1=0,LED2=0,LED3=0,LED4=0;
LED5=1; //P5.5为高电平
//KEY=0;
while(1)
{
if(KEY==1) //如P5.4为高电平
{
LED5=0; //P5.5输出低电平
delay(200);
P3=0x00;
//LED1=LED2=LED3=LED4=0;
delay(200);
LED1=1,LED2=0,LED3=0,LED4=0; //LED灯流水点亮
delay(200);
LED1=1,LED2=1,LED3=0,LED4=0;
delay(200);
LED1=1,LED2=1,LED3=1,LED4=0;
delay(200);
LED1=1,LED2=1,LED3=1,LED4=1;
delay(200);
}
{
if(KEY==0)
{
P3=0x00;
delay(2000);
LED5=1;
}
}
}
}
/************延时3秒****/
void delay(u16 Count)
{
u8 i,j;
while(Count--)
{
for(i=0;i<50;i++)
for(j=0;j<20;j++);
}
}
|