我想在第一次完成时反转代码。例如,引脚 1-引脚 2-引脚 3-引脚 4(已完成)现在应作为引脚 4-引脚 3-引脚 2-引脚 1 运行。
我编写了这段代码,但它不能以相反的顺序工作。请以这种方式指导我。
#include<htc.h>
__CONFIG(1,OSCSDIS & HSPLL);
__CONFIG(2,BORDIS & PWRTDIS &WDTDIS);
__CONFIG(3,CCP2RC1);
__CONFIG(4,LVPDIS & STVREN);
__CONFIG(5,UNPROTECT);
__CONFIG(6,WRTEN);
__CONFIG(7,TRU);
define _XTAL_FREQ 40000000
void delay_sec(unsigned char seconds) // This function provides delay in terms of seconds
{
unsigned char i,j;
for(i=0;i<seconds;i++)
for(j=0;j<100;j++)
__delay_ms(10);
}
void led_display(char a)
{
switch(a)
{
case 0: PORTB=0x01;PORTD=0x08; break;
case 1: PORTB=0x02;PORTD=0x04; break;
case 2: PORTB=0x04;PORTD=0x02; break;
case 3: PORTB=0x08;PORTD=0x01; break;
}
}
void main()
{
TRISB=0x00; TRISD=0x00; char a,b;
while(1) {
led_display(a);
a++;
delay_sec(1);
if(a==4) {
a--;
}
}
}
最佳答案
为此,您必须记住运行的顺序(相反或不相反)。因此,您将有一个变量指示顺序是否相反,并在到达计数器的末端(0 和 3)时更改它
您可以通过使用 1 和 -1 作为记住顺序的变量并将其添加到 a 来优化代码。
您的代码在 main 中将如下所示:
int reverse = 1,
char a = 0;
while(1)
{
led_display(a);
delay_sec(1);
if(a==3)
{
reverse=-1;
}
if(a==0)
{
reverse=1;
}
a+=reverse;
}
问候。
关于c++ - 我想以相反的顺序闪烁 LED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669227/