gpt4 book ai didi

c - Atmel Studio AtTiny104 - 简单代码

转载 作者:行者123 更新时间:2023-11-30 19:38:57 24 4
gpt4 key购买 nike

我是 C 编程初学者,对以下代码有一些问题:

我的项目很简单:当输入 i2 高或 i3 高或 i4(模拟值)< 700 时然后输出o1为高电平否则如果 i1 为高那么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) 为 true,i1 也会在高电平时禁用 o1。一些帮助表示赞赏。谢谢!

最佳答案

该行缺少括号:

if (get(INPUT_1)==1{

应该是:

if (get(INPUT_1)==1){

您的代码没有正确缩进,错误不容易被发现。

关于c - Atmel Studio AtTiny104 - 简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com