打印

PIC24FV16KM202 IO引脚输入高电平却读不到1

[复制链接]
1709|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengf|  楼主 | 2021-9-12 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC24FV16KM202 IO引脚输入高电平却读不到1;
_TRISB9=1;
Nop();
tempj=PORTBbits.RB9;
tempj=LATBbits.LATB9;
RB9引脚电压有4.6V的正脉冲,却不论是PORTBbits.RB9还是LATBbits.LATB9都始终读不到1。

使用特权

评论回复
沙发
pangb| | 2021-9-12 10:16 | 只看该作者
读取IO用PORTBbits.RB9,记得关闭模拟配置;输出用LAT

使用特权

评论回复
板凳
songqian17| | 2021-9-12 10:18 | 只看该作者
检查该引脚是否和模拟功能复用,作为数字输入,必须设置为数字引脚。

使用特权

评论回复
地板
dengdc| | 2021-9-12 10:24 | 只看该作者
并且禁止复用该引脚的其他数字外设

使用特权

评论回复
5
dengdc| | 2021-9-12 10:26 | 只看该作者
作为数字输入,读PORT寄存器即可。LAT寄存器用于输出。

使用特权

评论回复
6
pengf|  楼主 | 2021-9-12 10:27 | 只看该作者
只设置过其它引脚的AD。// Analog Port Selection
ANSBbits.ANSB13=1;
ANSBbits.ANSB14=1;
要特意将RB9设为ANSBbits.ANSB9=0;?
另外有想设为输入捕捉,有影响?担也禁止了捕捉模块。

使用特权

评论回复
7
pengf|  楼主 | 2021-9-12 10:30 | 只看该作者
要特意将RB9设为ANSBbits.ANSB9=0;似乎有用,但读tempj=LATBbits.LATB9;似乎不起作用还是读不到1,而tempj=PORTBbits.RB9;能读到1。

使用特权

评论回复
8
wyjie| | 2021-9-12 10:40 | 只看该作者
LAT是输出,读状态读PORT寄存器,还有输入时是高阻态,最高把IO拉到一个确定的电平再检测

使用特权

评论回复
9
pengf|  楼主 | 2021-9-12 10:42 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
10
pengf|  楼主 | 2021-9-12 10:44 | 只看该作者

要高八位在一个字节,直接用移位指令移两位就行了,够简单了,你想要整复杂的算法吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝