超易学单片机入门(三)输入输出

    在PIC系列单片机入门并不难(2)中讲的是两个指令如何控制管脚电平的高低。前提是所有管脚已经被定义成输出了(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输出生效,原来定义成输入的脚的电平,不会受该句影响

永不止步步 发表于02-13 10:03 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号