私はこの基本的な基本的なプログラムを順番に再生するために、どのスイッチを押しますか、私は他のスイッチをトグルして新しいシーケンシングを実行しますが、前のものは実行していないときに、他のシーケンスを実行すると、アクションを中止する必要のある他のプログラムが "loop"遅延や物事では、私はそれぞれの間に行間を置くことは、それを行うだろうと思うが、私はそれが正しい/効率的な方法だとは思わない..ありがとう!変数が変更されたときにどのようにブレークすることができますか?
#include <16f876.h>
#use delay(clock=4M)
#fuses XT,NOWDT
#use standard_io(A)
#use standard_io(B)
int16 t0=2000;
int16 t1=1000;
int16 t2=1000;
int16 t3=500;
void main(){
output_b(0b00000000);
while(TRUE){
if(input(PIN_A0)==0){
output_b(0b00000000);
output_b(0b00011000);
delay_ms(t0);
output_b(0b00100100);
delay_ms(t0);
output_b(0b01000010);
delay_ms(t0);
output_b(0b10000001);
delay_ms(t0);
}
if(input(PIN_A1)==0){
output_b(0b00000000);
output_b(0b00000001);
delay_ms(t1);
output_b(0b00000011);
delay_ms(t1);
output_b(0b00000111);
delay_ms(t1);
output_b(0b00001111);
delay_ms(t1);
output_b(0b00011111);
delay_ms(t1);
output_b(0b00111111);
delay_ms(t1);
output_b(0b01111111);
delay_ms(t1);
output_b(0b11111111);
delay_ms(t1);
}
if(input(PIN_A2)==0){
output_b(0b10000000);
delay_ms(t2);
output_b(0b11000000);
delay_ms(t2);
output_b(0b11100000);
delay_ms(t2);
output_b(0b11110000);
delay_ms(t2);
output_b(0b11111000);
delay_ms(t2);
output_b(0b11111100);
delay_ms(t2);
output_b(0b11111110);
delay_ms(t2);
output_b(0b11111111);
delay_ms(t2);
}
if(input(PIN_A3)==0){
output_b(0b00000000);
output_b(0b00000001);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b00000011);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b00000111);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b00001111);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b00011111);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b00111111);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b01111111);
delay_ms(t3);
output_b(0b00000000);
delay_ms(t3);
output_b(0b11111111);
delay_ms(t3);
}
}
}
同時に複数のライトを点灯することができますか? 3 if文を使用する代わりに、if/elseブランチを使用するとどうなりますか? –
これは一度に1つです。 –