私はCプログラミングの初心者ですし、次のコードといくつかの問題を抱えて:アトメルメーカーAtTiny104 - シンプルなコード
私のプロジェクトは単純です: 入力がハイまたはi3の高またはI4(アナログ値)をI2ながら< 700 i1が が続いO1が エルスO1が高い低い高い場合 その後、出力o1が エルス高いです
マイコード:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include "iomacros.h"
int main(void) {
// Change to 8MHz clock speed (Clock Division = 1)
CCP = 0xD8;
CLKPSR = 0x00;
// Define pins
#define OUTPUT_1 1,A
#define INPUT_1 2,A
#define INPUT_2 3,A
#define INPUT_3 4,A
// Set up the ADC
ADCSRA |= (1 << ADEN) | (1 << ADPS2); // Enable ADC = 16
ADMUX |= (1 << MUX1) | (1 << MUX0); // Connect ADC3 input on PA6
DIDR0 |= (1 << ADC3D); // Power saving feature
out(OUTPUT_1); // set OUTPUT_1 as an output
inp(INPUT_1); // set INPUT_1 as an input
pullup(INPUT_1); // activate pullup for INPUT_1
inp(INPUT_2); // set INPUT_1 as an input
pullup(INPUT_2); // activate pullup for INPUT_2
inp(INPUT_3); // set INPUT_1 as an input
pullup(INPUT_3); // activate pullup for INPUT_3
on(OUTPUT_1);
// forever loop
while (1) {
ADCSRA |= (1 << ADSC); // start single conversion
while (ADCSRA & (1 << ADSC)) {} // wait until conversion is done
uint16_t INPUT_4 = ADCL | (ADCH << 8); // Store in INPUT_4
if (get(INPUT_2) == 1 || get(INPUT_3) == 1 || INPUT_4 > 800) {
on(OUTPUT_1);
} else {
if (get(INPUT_1) == 1) {
off(OUTPUT_1);
} else {
on(OUTPUT_1);
}
}
_delay_ms(100);
}
}
何らかの理由で、if(get(INPUT_2)== 1 || get(INPUT_3)== 1 || INPUT_4> 800)は真です。助けてくれた人もいます。ありがとうございました!
場合(取得(INPUT_1)== 1 {
あるべき:
化合物のブール式を使ったShtap。 'get(INPUT_2)== 1'などの結果には、tempブール値を使用します。次に、if文でtempsを一緒に使用します。次に、デバッガで実行します。それから、真実ではないはずのブール値を見てください。 –