打印
[PIC®/AVR®/dsPIC®产品]

疑惑:PIC24FJ256GA110 I/O口简单输出问题

[复制链接]
1858|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Uchar13|  楼主 | 2014-4-27 15:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家好,第一次发帖,请多指教。

是这样的,最近刚接触PIC24单片机,没想到却卡在了最基本的I/O输出问题上。
我的电路图很简单,如图

LED端口定义如下

即我的板子上是I/O端口直接接一个电阻连上发光二极管的。我的主函数如下图:

即使得所有LED灯都熄灭,此时程序下载到板子上完全没有问题,当我把while(1)循环里面换成LED1=1;LED2=1;LED3=1;LED4=1;LED5=1;LED6=1;LED7=1;LED8=1;下载进板子后发现LED灯并不是全部熄灭,而是有几个是亮的!用万用表去测试那几个亮着的LED灯发现其输出为0.4V左右,但是在MPLAB SIM仿真器WATCH窗口里面却看到明明各个PORT输出的值都正常,是不能用#define去定义PORT管脚的某个位麽?求指教!

主函数.jpg (9.88 KB )

主函数.jpg
沙发
Uchar13|  楼主 | 2014-4-27 15:44 | 只看该作者
刚刚看了一下汇编代码,发现原因了,⊙﹏⊙b汗!

使用特权

评论回复
板凳
Uchar13|  楼主 | 2014-4-27 15:51 | 只看该作者
是这样的,当我的while(1)循环里面用的是LED1=1;这种写法时,相应的汇编代码是

这时,由于连续用了两个读-修改-写指令,根据器件速度以及IO容性负载的情况就出现了意外IO输出(详见PIC24系列datasheet第12章IO PORTS12.2.2).
而当用另外一种写法时,就不会出现这种情况。

normal.jpg (23.12 KB )

normal.jpg

使用特权

评论回复
地板
闲来玩玩| | 2014-4-27 20:01 | 只看该作者
不是说输出用LAT。
#define LED 后跟PORT还是LAT我也搞不清,干脆不定义,用”_位名称“
请高手指点,现用DSPIC30F2010玩变频。

使用特权

评论回复
5
zhimagod| | 2014-4-27 20:27 | 只看该作者
有LAT的输出肯定要用啊,没有的就只能用PORT了

使用特权

评论回复
6
Uchar13|  楼主 | 2014-4-27 21:16 | 只看该作者
zhimagod 发表于 2014-4-27 20:27
有LAT的输出肯定要用啊,没有的就只能用PORT了

就是说有LAT就用,优先级高于PORT,是这么样麽?多谢指教!

使用特权

评论回复
7
闲来玩玩| | 2014-4-28 07:20 | 只看该作者
LAT是专门应对读修改写而生个,反正记住读I0用PORT,写I0用LAT就是了,

使用特权

评论回复
8
zhimagod| | 2014-4-28 07:58 | 只看该作者
Uchar13 发表于 2014-4-27 21:16
就是说有LAT就用,优先级高于PORT,是这么样麽?多谢指教!

这个锁存的读取值与IO的高低电平没有关系,只与上次写入的值有关(读取的话读到的是上次写入的值)
这点数据手册上应该有明确的表述……

使用特权

评论回复
9
Uchar13|  楼主 | 2014-4-28 10:21 | 只看该作者
zhimagod 发表于 2014-4-28 07:58
这个锁存的读取值与IO的高低电平没有关系,只与上次写入的值有关(读取的话读到的是上次写入的值)
这点 ...

那岂不是还是应该用PORT,既然是上次锁存的值,那不会影响输出麽?

使用特权

评论回复
10
Uchar13|  楼主 | 2014-4-28 10:22 | 只看该作者
闲来玩玩 发表于 2014-4-28 07:20
LAT是专门应对读修改写而生个,反正记住读I0用PORT,写I0用LAT就是了,

嗯嗯,感谢,明白了~

使用特权

评论回复
11
Uchar13|  楼主 | 2014-4-28 10:23 | 只看该作者
zhimagod 发表于 2014-4-28 07:58
这个锁存的读取值与IO的高低电平没有关系,只与上次写入的值有关(读取的话读到的是上次写入的值)
这点 ...

我理解了。。。读IO用PORT,写IO用LAT。。。3Q~

使用特权

评论回复
12
Uchar13|  楼主 | 2014-4-29 09:44 | 只看该作者
昨天用LAT替换了PORT,果然不会出现意外IO的情况了~

使用特权

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

本版积分规则

2

主题

14

帖子

0

粉丝