单片机与DSP中的PIC单片机16F84的内部硬件资源(三)
I/O口 单片机作为一个控制器件必定有数据输入和输出。输入量可能是温度、压力、转速等,而输出量可能是开关量和数据,以保证受控过程在规定的范围内运行。数据的输入和输出都需通过单片机内部有关电路,再与引脚构成输入/输出(I/O)端口。PIC16F84单片机芯片有两个I/O端口(PROTA和PORTB)。端口A为5位口,端口B为8位口,共占用13位引脚。每个端口由一个锁存器(即数据存储器中的特殊功能寄存器05H、06H单元)、一个输出驱动器和输入缓冲器等组成。当把I/O口作输出时,数据可以锁存;作输入口时,数据可以缓冲。 16F84 PORTA口中的RA4是斯密特触发输入、漏极开路输出。而其它的 单片机,特别是 PIC16F84,是微控制器的一种,它包含了处理各种控制任务所需的集成硬件资源。本文主要讨论了 PIC16F84 的内部I/O端口,这是单片机进行数据交互的关键部分。 I/O口是单片机与外部世界通信的桥梁。它们用于接收传感器如温度、压力、转速等的输入数据,以及向执行机构发送开关信号和数据,以确保系统运行在预设范围内。在 PIC16F84 中,有两个I/O端口,分别是PORTA和PORTB。PORTA是一个5位端口,PORTB则是一个8位端口,两者合计使用了13个引脚。每个端口包含一个锁存器(存储在05H和06H单元的特殊功能寄存器)、一个输出驱动器和输入缓冲器。I/O口既能作为数据的输出端,通过锁存器存储数据;也能作为输入端,通过缓冲器接收数据。 具体到16F84的PORTA,其中的RA4引脚是特别的,它具有斯密特触发输入和漏极开路输出特性,而其他RA口引脚则是TTL电平输入和全CMOS驱动输出。这意味着RA4能够处理更复杂的输入信号,并且其输出可以直接驱动低阻抗负载。PORTB则是一个八位双向可编程I/O口,可以灵活配置为输入或输出,但其电路配置可能因功能差异而略有不同。 在操作I/O口时,数据方向由数据方向位(如TRISA寄存器)决定。当TRISA的某位为1时,相应的输出驱动器关闭,端口定义为输入;反之,如果TRISA的位为0,那么该端口定义为输出,输出锁存器的电平就决定了I/O口的输出电平。写入PORTA或PORTB寄存器的过程是一个“读-修改-写”操作,先读取当前I/O电平,然后根据需要修改,最后写入锁存器。 需要注意的是,当一个I/O口频繁改变输入和输出状态时,输出可能会出现不确定性。同时,输出驱动电路是CMOS互补推挽型,不能直接并联多个输出,以防电流过载损坏单片机。此外,为了保证数据稳定,写操作后紧接着的读操作之间应插入NOP指令以延迟。 在程序执行中,堆栈是一个至关重要的概念。它是一个保存临时数据的栈区,主要用于在调用子程序或处理中断时保存返回地址。当调用子程序或中断发生时,单片机自动将下一条指令的地址压栈,当子程序或中断服务结束时,再从栈顶弹出地址返回到主程序的下一条指令。在PIC16F84中,有一个8级的13位硬件堆栈,不占用程序或数据存储空间,确保了程序执行的连贯性和正确性。 了解单片机的I/O端口和堆栈机制对于有效利用PIC16F84进行系统设计和编程至关重要,这些硬件资源的充分利用能实现高效、可靠的控制应用。
- 粉丝: 4
- 资源: 910
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0