gpt4 book ai didi

microcontroller - 读取 PIC18 上输入引脚的状态

转载 作者:行者123 更新时间:2023-12-02 07:42:05 24 4
gpt4 key购买 nike

我已经能够让我的 PIC 上的输出正常工作,并且可以在我将各种输出锁存器设置为高/低时让一堆 LED 跳动。但是,我在大头针状态下阅读时遇到很多困难。

请参阅下面的代码。我设置了我的配置,并将 TRISC 定义为输入,将 TRISB 定义为输出。在无限循环中,我检查 RC6 是高电平还是低电平,并根据结果将整个 B 锁存器设置为高电平或低电平。

#include <htc.h>

__CONFIG(1, FOSC_IRC & FCMEN_OFF & IESO_OFF);
__CONFIG(2, PWRTEN_OFF & BOREN_OFF & WDTEN_OFF);
__CONFIG(3, MCLRE_OFF);
__CONFIG(4, STVREN_ON & LVP_OFF & DEBUG_OFF);
__CONFIG(5, 0xFFFF);
__CONFIG(6, 0xFFFF);
__CONFIG(7, 0xFFFF);

void main(void)
{
TRISC = 0xFF; // input
TRISB = 0x00; // output

while (1)
{
if (PORTCbits.RC6 == 0)
LATB = 0b00000000;
else
LATB = 0b11111111;
}

return;
}

代码编译正常,没有警告或错误。如果我的代码逻辑只是将锁存器设置为高电平和低电平,那么它工作正常,但我无法成功读取引脚的状态。

有什么想法吗?

我正在使用 PIC18F14K50 和 MPLAB v8.43 以及 HiTech ANSI C 编译器。

我的连接是 +5V 到 VDD(引脚 1),VSS(引脚 20)到地。我有 +5V 到 C6(引脚 8),一个 100K 电阻和从 B7(引脚 10)接地的 LED。要切换 RC6,我连接/断开 C6 的电线。

     ┌────────┐
+5v -│ 01 20 │- gnd
-│ 02 19 │-
-│ 03 18 │-
-│ 04 17 │-
-│ 05 16 │-
-│ 06 15 │-
-│ 07 14 │-
+5v -│ 08 13 │-
-│ 09 12 │-
led -│ 10 11 │-
└────────┘

最佳答案

遗憾的是,PIC 上的 ADC 引脚在上电时被配置为模拟输入。您需要禁用该引脚上的 ADC 功能才能将其用作数字输入。

清除 ANSELH 的位 0 会将 RC6 设置为数字输入。然后您的代码将起作用。

这在第 9.4 节的数据表中有记录:端口模拟控制

PIC18F/LF1XK50 Datasheet

关于microcontroller - 读取 PIC18 上输入引脚的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020506/

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