本帖最后由 yj96923 于 2019-3-28 14:10 编辑
如下程序 刚开始是灯全亮 我想用操纵杆上下左右的时候分别控制1个灯灭 然后按键控制所有灯的亮灭 但是现在是程序写进去运行就像跑马灯一样。搞不懂 所以求解
#include <iostm8s208sb.h>
#include <stdint.h>
/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
void Delay(uint32_t nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
void main(void)
{
PH_DDR|=0x0F; /*设置PH.0 PH.1 PH.2 PH.3为推挽输出*/
PH_CR1|=0x0F;
PH_CR2|=0x00;
PB_DDR|=0xEF; /*设置PB.4为上拉输入*/
PB_CR1|=0x10;
PB_CR2|=0x00;
PB_DDR|=0xDF; /*设置PB.5为上拉输入*/
PB_CR1|=0x20;
PB_CR2|=0x00;
PB_DDR|=0xBF; /*设置PB.6为上拉输入*/
PB_CR1|=0x40;
PB_CR2|=0x00;
PB_DDR|=0x7F; /*设置PB.7为上拉输入*/
PB_CR1|=0x80;
PB_CR2|=0x00;
PD_DDR|=0x7F; /*设置PD.7为上拉输入*/
PD_CR1|=0x80;
PD_CR2|=0x00;
while (1)
{
if(PD_IDR_IDR7==0)
PH_ODR&=0xF0; /*输出低电平*/
else
PH_ODR|=0x0F;/*输出高电平*/
Delay(5000);
if(PB_IDR_IDR4==0)
PH_ODR&=0xFE; /*输出低电平*/
else
PH_ODR|=0x0F;/*输出高电平*/
Delay(5000);
if(PB_IDR_IDR5==0)
PH_ODR&=0xFD; /*输出低电平*/
else
PH_ODR|=0x0F;/*输出高电平*/
Delay(5000);
if(PB_IDR_IDR6==0)
PH_ODR&=0xFB; /*输出低电平*/
else
PH_ODR|=0x0F;/*输出高电平*/
Delay(5000);
if(PB_IDR_IDR7==0)
PH_ODR&=0xF7; /*输出低电平*/
else
PH_ODR|=0x0F;/*输出高电平*/
Delay(5000);
}
}
|