首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pic16f818 -将trisa寄存器设置为这些位的数字输入: RB5 RB6 RB7

Pic16f818 -将trisa寄存器设置为这些位的数字输入: RB5 RB6 RB7
EN

Stack Overflow用户
提问于 2017-03-29 20:05:04
回答 2查看 133关注 0票数 0

我正在尝试在我的PIC16F818微控制器上将RB0 -7设置为数字输入。为了做到这一点,我使用了以下配置:

代码语言:javascript
复制
void config() {
    //cmcon = 0x07;     // Sets all IO pins to digital 
    trisa = 0xFF;       // Set porta as inputs
    trisb = 0x00;       // Set portb as outputs
    adcon1 = 0x07;  // For PIC16F84A comment the line above and uncomment this statement
    portb = 0x00;       // Reset value of portb (portb = 0)
    _CONFIG  & _CP_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF & _MCLR_OFF & _INTRC_IO & _WRT_ENABLE_OFF  & _PWRTE_OFF;

}

我通过将我的端口A (8位开关块)映射到端口B (8位led块)来测试此设置,开关0-4工作正常,但开关5-7没有响应,但是位由一些其他PIC函数内部设置并输出:(b5)0 (b6)0 (b7)1。

EN

回答 2

Stack Overflow用户

发布于 2017-04-01 02:45:21

这是人们在使用Microchip控制器时经常遇到的问题。在stackexchange上有很多地方的咒语是:“写LATx,读PORTx”

PORTx为您提供端口的当前状态。

LATX是输出锁存器。

在初始化过程中,应为每个端口设置TRISx、ANSELx (模拟选择)、CNPUx/CNPDx (上拉/下拉)的值。

票数 1
EN

Stack Overflow用户

发布于 2017-03-30 20:05:09

我建议使用Latch将数据输出到端口。

所以在你的例子中使用"latb“代替"portb”。

请注意,根据您使用的编译器,"latb“的定义可能会有所不同。

如果它解决了问题,请告诉我。

此外,有关闩锁和端口使用之间的差异的更多信息,请参阅此链接

Difference between PORT and LATCH on PIC

在这种情况下,他询问了PIC18F家庭,但给出的答案对于一般的图片编程非常好(无论是什么家庭),所以你也会从中受益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43093030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档