c-我如何反转并使代码从LED7开始,也就是最左边的led,而不是LED1,然后从左向右移动



我对c语言编程和一般使用Keil uVision非常陌生,我收到了一个练习,我必须反转下面的代码,使其从最左边的LED7开始,然后一点一点地向右移动,然后返回,依此类推。

当前代码从右边开始,循环到左边。当我尝试将一些代码反转(例如,将for(i=1;i>1;i++)转换为i=7;i>7;i--(并运行它时,它会将右侧的第一个led闪烁0.5秒,然后停止。

它以随机间隔重新启动。我该怎么办?

void Init_Device(void);
void main(void)
{
U8 port=0x01,i;
bit direction=0;
Init_Device();
initSYS();
LCD_setTextSize(3);
LCD_setCursor(80, 100);
printf("P1 = ");
while(1)
{
for(i=1;i>1;i++)
{
LCD_setCursor(160, 100);
LCD_printNumb(port);
printf(" = %d  ", (int)port);
P1=~port;
delay_ms(500);
if(!direction)
port<<=1;
else
port>>=1;
}
direction=~direction;
}
}

按照您描述的方式执行代码。然而,这并不是显示的代码。

通过执行以下两项更改来编辑工作代码。

初始化port到MSB 0x80(标识"最左边的LED"(而不是LSB 0x01(标识"右边的LED"(
direction初始化为~0,即0之外的另一个;这使得代码开始在另一个方向上移位。

最新更新