gpt4 book ai didi

c - (ARDUINO) 关于端口操作

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:52 24 4
gpt4 key购买 nike

我正在使用端口操作制作一个带有 8 个 LED 的 16 位十进制到二进制转换器。用户输入十进制,然后程序将其转换为二进制,然后写入 LED。但是我对端口操作有疑问。我将二进制数保留为一种字符串类型,因此我无法将数字写入引脚。我的代码是;

void setup() {
DDRC = B11111111;
Serial.begin(9600);
}
void loop() {
if(Serial.available()>0){
long input = Serial.parseInt();
if (input>=2){
y = input/2;
while (y>0){
r = input % 2;
out = String(r) + out;
y = input/2;
input = y ;
}}
else
out = String(input);
int digits = out.length();

for(int i=0; i<(16-digits); i++){
out = "0" + out;
}
String firstEight = "B" + out.substring(0,8);
String lastEight = "B" + out.substring(8,16);

然后我在代码末尾添加这一行

PORTC = firstEight;

我收到此错误消息:无法在赋值中将“String”转换为“volatile uint8_t {aka volatile unsigned char}”抱歉,如果这实际上是常识,但我找不到它。

这是我的作业,所以我必须使用自己的代码将十进制转换为二进制。这就是为什么我使用字符串。它保留二进制位。

感谢您的帮助。

最佳答案

B* 是 Arduino 库提供的宏,不能按照您尝试的方式使用。您应该做的是获取输入,屏蔽您需要的位,然后将该数字输出到端口。

PORTC = (input >> 8); // 8 leftmost bits in the parsed int

关于c - (ARDUINO) 关于端口操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30415690/

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