打印

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

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

使用特权

评论回复
沙发
pengf|  楼主 | 2022-10-14 23:43 | 只看该作者
读取IO用PORTBbits.RB9,记得关闭模拟配置;输出用LAT

使用特权

评论回复
板凳
jiajs| | 2022-10-14 23:45 | 只看该作者
检查该引脚是否和模拟功能复用,作为数字输入,必须设置为数字引脚。

使用特权

评论回复
地板
chuxh| | 2022-10-14 23:47 | 只看该作者
并且禁止复用该引脚的其他数字外设

使用特权

评论回复
5
huwr| | 2022-10-14 23:49 | 只看该作者
作为数字输入,读PORT寄存器即可。LAT寄存器用于输出。

使用特权

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

使用特权

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

使用特权

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

使用特权

评论回复
9
stly| | 2022-10-15 08:18 | 只看该作者
要高八位在一个字节,直接用移位指令移两位就行了,够简单了,你想要整复杂的算法吗?

使用特权

评论回复
10
supernan| | 2022-10-15 08:22 | 只看该作者
怎么做才最简单

使用特权

评论回复
11
Henryko| | 2022-11-5 19:43 | 只看该作者
直接用移位指令移两位就行了

使用特权

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

本版积分规则

718

主题

10129

帖子

3

粉丝