打印

新:PIC16F72 I/O口问题

[复制链接]
2311|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenbilin|  楼主 | 2008-6-20 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将RC3设置成输出,且输出高电平,然后
1、将RC3短路到地P沟通场效应管为何不烧坏,且无电流(好像过流保护了)
2、此时将RC3连地线断开,RC3仍然为低电平,不为高电平,且接一电阻到电源
电压就变高了。
这样的电路能设计吗?请教
事实上在I/O口复用时可能会遇到类似的问题

谢谢

沙发
xieyuanbin| | 2008-6-20 10:38 | 只看该作者

看一下IO口输出电流特性

图是16F72数据手册P113页截图,根据此特性可知,在5V电源,25摄氏度时,IO口输出高电平当负载在25mA时输出电压仅2.3V左右,由此可计算出单片机中负责输出高电平的P管的RdsON大概在90Ω左右,此时IO口短路到地时,电流也不过55mA,如果电源吃得消,完全可保证单片机不致复位,但完全不能保证IO口不致损坏。
之所以出现你所说的情况,在短路到地之后输出低电平,是因为程序中对RC口有读-修改-写的过程。比如BSF PORTC,1这种指令,MOVF PORTC,F这种指令,或者你自己程序中将C口读进再写入,当RC3口短路至地时,你执行上面的程序,就会导致RC3口输出低电平,而并不是单片机本身过流保护。此时如果将RC3口强拉至高,再执行读-修改-写指令时,RC3一样也会输出高电平。
注意,PORTC口输入是施密特触发输入,电平的高低有回差。如果你的上面的电阻阻值过大,RC3是不会输出高电平的。

使用特权

评论回复
板凳
wenbilin|  楼主 | 2008-6-20 11:03 | 只看该作者

55mA电流不存在

55mA电流不存在,程序中也未对RC口有读-修改-写的过程(比如BSF PORTC,1这种指令,MOVF PORTC,F这种指令)

使用特权

评论回复
地板
xieyuanbin| | 2008-6-20 11:06 | 只看该作者

55mA电流你看得到么?

你要能看到,单片机早烧掉了。你可否把所有对PORTC口的操作程序贴出来?

使用特权

评论回复
5
wenbilin|  楼主 | 2008-6-20 12:11 | 只看该作者

回xieyuanbin

上电时:
   movlw  0xff
   movwf  PORTC
   bsf    STATUS,RP0
   clrf   TRISC
   clrf   STATUS
   
   bcf     KoreaF
   btfsc     PORTC,0x3
   bsf     KoreaF

MAIN:
    ....
    clrwdt
    goto  MAIN

使用特权

评论回复
6
xieyuanbin| | 2008-6-20 14:40 | 只看该作者

除非,楼主别的程序有BANK切换错误

错误写入PORTC

使用特权

评论回复
7
wenbilin|  楼主 | 2008-6-21 08:08 | 只看该作者

原因找到了,很怪的

上电时:
   movlw  0xff
   movwf  PORTC
   bsf    STATUS,RP0
   clrf   TRISC
   clrf   STATUS

START  
   btfsc    PORTC,2  *
   goto    $+3      *
   bsf    PORTC,2  *
   goto    $+2      *
   bcf    PORTC,2  *

   clrwdt

   goto    START

MAIN:
    ....
    clrwdt
    goto  MAIN

去掉加*的五行,将RC3短路到地,RC3口输出较大电流,将地断开,RC3仍为高
如果不去掉加*的五行,将RC3短路到地,RC3口不输出电流,将地断开,RC3就为低



使用特权

评论回复
8
xieyuanbin| | 2008-6-21 08:16 | 只看该作者

都说你操作了PORTC口

 bsf    PORTC,2  *
这句,如果去掉就不会出现楼主的情况.

使用特权

评论回复
9
wenbilin|  楼主 | 2008-6-21 08:49 | 只看该作者

原因找到了,程序还要改吗?

原因找到了,程序还要改吗?

使用特权

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

本版积分规则

17

主题

48

帖子

1

粉丝