查看: 1175|回复: 0
打印 上一主题 下一主题

如何控制管脚电平的高低。

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-15 08:05:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们上一次讲的两个指令是是如何控制管脚电平的高低。前提是所有管脚已经被定义成输出了(OUT)如果被定义成了输入,则上次的指令虽然也能运行,但运行后丝毫不能改变管脚电平高低,因为此时管脚是输入状态,电平取决于外部输入,指令无法改变。

在PIC单片机系列中,改变I/O口的输入输出依靠写入寄存器TRIS的值,相应位写0,表示对应管脚被定义成了输出,写1,就是输入。
现在假如预把GP1、GP2管脚定义成输出,其他脚全是输入。那就应该向TRIS 寄存器写入二进制数 11111001,换算成十六进制就是   

F9H.  

依照以前我们学到的知识,在PIC系列单片机里,本来应该用下列的语句来完成我们的设定:

        movlw     0F9H      '常数进W  以字母开头的常数前面必须加0
                movwf    TRISA      '把W内的数复制到TRIS

实际上PIC系列的单片机也都是这么写的,后面加的A,表示第一个8位的口(有的单片机不仅一个口,还有好几个8位的I/O口如TRISB  TRISC  TRISD等等) .

但是,记住了,       PIC12系列的单片机必须改写成为:

        movlw    0F9H      '常数进W  以字母开头的常数前面必须加0
        tris         GPIO      '把W内的数复制到TRIS       以后凡见到这个指令一律理解成 movwf     TRISA

写法不同,意思是一样的.  这样你就又学了一个指令TRIS,不过这个指令的实质还是你曾经学过的movwf 只是写法不同罢了.
在PIC12系列里TRIS作为指令, 在其他系列(PIC16\17\18)里把  TRIS  作为普通寄存器看待.
因为我们现在讲的就是PIC12CE519,所以我们暂时用

        tris    GPIO

    这个格式,等以后进入PIC16C877 我们再写成 movwf    TRISA , 至于理解按照后者进行.
'-----------
如果我们要控制GP1  GP2管脚的输出电平, 其他管脚作为输入.并且让GP1输出低电平,GP2输出高电平.完整的程序如下:

    movlw    0F9H      '常数进W  
            tris     GPIO      '把W内的数复制到TRIS ,GP1  GP2为输出,其他为输入
                    '此行无命令,起到的作用是容易读懂程序
    movlw    04H       '常数4的二进制是 00000100 ,GP1=0  GP2=1
            movwf    GPIO      'W内的数进GPIO 输出生效,原来定义成输入的脚的电平,不会受该句影响
转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表