每一个端口的每一个引脚在使用前应该要明确是作为输入还是输出,这可以通过软件设定其方向控制寄存器来实现。PIC单片机的每一个I/O端口PORTx,都有一个对应的方向控制寄存器TRISx,其中x可以是A/B/C/D/E等端口名称,视不同的单片机端口资源而定。
TRISx寄存器中的每一位都对应于端口相应位的输入或输出状态。
●若TRISx中的数据位为0,则对应端口位为输出状态,可以记忆为英文单词Output的首字母O。
●若TRISx中的数据位为l,则对应端口位为输入状态,可以记忆为英文单词Input的首字母I。
从图5-2中可以看到,输入/输出方向的设定结果是被锁存的,一旦确定了一个状态,它将一直保持,直到软件改变方向寄存器的设定值为止。因此,在程序运行过程中的任何时刻都可以通过指令读到端口的当前输入/输出状态设定,即TRISx寄存器的值。需要特别指出的是,PIC单片机的所有I/O引脚在出现任何条件的复位后,将自动回到高阻抗输入状态(TRISx寄存器内数据位全为1)。要想让端口处于输出状态就必须修改TRISx寄存器。
当端口方向位置为输出后,端口输出的内容由PORTx的值来决定。PORTx一般是一个8位的寄存器,与某个端口的8个引脚一一对应。
●当端口某位输出1时,对应引脚输出高电平。
●当端口某位输出0时,对应引脚输出低电平。
【例5-1】编程使PORTD输出全为1。
题意分析
●PORTD要想全工作在输出状态,则其方向端口TRISD的8位应全为0。
●PORTD的输出内容是通过其端口寄存器PORTD来决定的。本题要求输出全为1,则输出数据的二进制形式就是0b11111111。
参考代码
在PICC中,可以用Rxy来代表某个引脚对应的数据位,其中x为A、B、C、D、E中的一个字母,y为0~7之间的整数。例如:(www.daowen.com)
在PICC中,可以用TRISxy来代表某个引脚对应的方向位,其中x为A、B、C、D、E中的一个字母,y为0~7之间的整数。例如:
当端口方向位被置为输入后,就可以从相应端口PORTx读入数据。端口输入的值由PORTx对应引脚的外接电平决定。
●当对应引脚为高电平时,端口某位读到的是1,称为输入1。
●当对应引脚为低电平时,端口某位读到的是0,称为输入0。
【例5-2】PIC单片机的RD~RD7引脚外接数字电路,编程实现读取RD0~RD7的外部状态。
题意分析
●RD0~RD7与PORTD的8位一一对应。想读取RD0~RD7的状态,就从PORTD读取即可。读取动作对于PORTD而言是输入数据,则TRISD的8位应全为1。
●为了使读取到的数据能继续使用,需要设定一个变量来保存读取结果。由于PORTD是8位的寄存器,所以可以通过定义一个字符型变量来保存读取结果。
参考代码
由于设计所限,单片机的输入/输出端口数目是有限的,但是通过硬件电路和软件程序的巧妙配合,能显著提高I/O口的利用效率。本章以发光二极管的控制和数码管的控制为例介绍输出端口的用法。以三按键输入和十六按键输入为例介绍输入端口的用法。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。