61A单片机IOWord文档格式.docx
- 文档编号:15378221
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:12
- 大小:164.28KB
61A单片机IOWord文档格式.docx
《61A单片机IOWord文档格式.docx》由会员分享,可在线阅读,更多相关《61A单片机IOWord文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
IO端口结构
SPCE061A提供了位控制结构的I/O端口,每一位都可以单独用于数据输入或输出。
每个独立的位可通过以下3种控制向量来作设定:
1.数据向量Data
2.属性向量Attribution
3.方向控制向量Direction
每3个对应的控制向量组合在一起,形成一个控制字,用来定义相对应I/O端口位的输入输出状态和方式。
例如,假设需要IOA0是下拉输入引脚,则相对应的Data、Attribution和Direction的值均被设为“0”。
如果需要IOA1是带唤醒功能的悬浮式输入引脚,则Data、Attribution和Direction的值被设为“010”。
与其它的单片机相比,SPCE061A除了每个I/O口可以单独定义其状态外,每个对应状态下的I/O端口性质电路都是内置的,在实际的电路中不需要再外接。
例:
设A口为带下拉电阻的输入端口,在连接硬件时不用再外接下拉电路。
A口和B口的Data、Attribution和Direction的设定值均在不同的寄存器里,用户在进行I/O端口设置时要特别注意这一点。
I/O端口的组合控制设置如表2.1所示:
注:
*:
端口位预设为带下拉电阻的输入引脚;
**:
只有当IOA[7~0]内位的控制字为000,001和010时,相对应位才具有唤醒的功能。
***:
悬浮输入作为ADCIOA[6~0]的输入
P_IOA_Data(读/写)(7000H)
A端口的数据单元,用于向A口写入或从A端口读出数据。
当A口处于输入状态时,读出是读A口引脚电平状态;
写入是将数据写入A端口的数据寄存器。
当A口处于输出状态时,写入输出数据到A端口的数据寄存器。
P_IOA_Buffer(读/写)(7001H)
A端口的数据向量单元,用于向数据向量寄存器写入或从该寄存器读出数据。
当A口处于输入状态时,写入是将A端口的数据向量写入A端口的数据寄存器;
读出则是从A端口数据寄存器内读其数值。
对输出而言,P_IOA_Data与P_IOA_Buffer是一样的.但对输入而言,P_IOA_Data读的是IO的值,P_IOA_Buffer读的是buffer内的值。
假设IOA[0]作为输出,并去接LED阳极(LED阴极接地)。
若P_IOA_Data的IOA[0]为1。
在某些需要较大驱动能力的LED而言,LED会亮,但IOA[0]会被拉到一个很低的值。
此时从P_IOA_Data读回为0,但P_IOA_Buffer则为1。
读回的意义是是方便做其它的IO运算。
P_IOA_Dir(读/写)(7002H)
A端口的方向向量单元,用于用来设置A口是输入还是输出,该方向控制向量寄存器可以写入或从该寄存器内读出方向控制向量。
Dir位决定了端口位的输入/输出方向:
即‘0’为输入,‘1’为输出。
P_IOA_Attrib(读/写)(7003H)
A端口的属性向量单元,用于A端口属性向量的设置。
P_IOA_Latch(读)(7004H)
读该单元以锁存A端口上的输入数据,用于进入睡眠状态前的触键唤醒功能的启动(参见睡眠/唤醒部分)。
并行I/O端口的控制向量组合
方向向量_Dir、属性向量_Attrib和数据向量_Data分别代表三个控制口。
这三个端口中每个对应的字节合在一起,形成一个控制字,来定义相对应I/O端口位的输入/输出状态和方式。
2.1具体表示了如何通过对I/O口的_Dir、_Attrib以及_Data进行编程,来设定端口位的输入/输出状态和方式。
由2.1可以得出以下一些结论:
1._Dir位决定了端口位的输入/输出方向:
2._Attrib位决定了在端口位的输入状态下是为悬浮式输入还是非悬浮式输入:
即‘0’为带上拉或下拉电阻式输入,而‘1’则为悬浮式输入。
在端口位的输出状态下则决定其输出是反相的还是同相的;
‘0’为反相输出,‘1’则为同相输出。
3._Data位在端口位的输入状态下被写入时,与_Attrib字节合在一起形成输入方式的控制字‘00’、‘01’、‘10’、‘11’,以决定输入端口是带唤醒功能的上拉电阻式、下拉电阻式或悬浮式以及不带唤醒功能的悬浮式输入。
_Data位在端口位的输出状态下被写入的是输出数据,不过,数据是经过反相器输出还是经过同相寄存器输出要由_Attrib位来决定。
例如,假设要把A口的B0定义成下拉电阻式的输入口,则A口_Dir、_Attrib和_Data三个向量对应的B0组合应设为‘000’。
如果想把A口的B1定义成具有唤醒功能的悬浮式输入口,只需将_Dir、_Attrib和_Data向量对应的B1组合设置为‘010’即可。
A口的IOA0~IOA7作为唤醒来源,常用于键盘输入。
要启用IOA0~IOA7的唤醒功能,必须先读取P_IOA_Latch单元,以此来锁存IOA0~IOA7引脚上的按键状态。
随后,系统才可通过指令进入低功耗的睡眠状态。
当有按键按下时,IOA0~IOA7的输入状态会与其在进入睡眠前被锁存时的状态不同,从而引起系统的唤醒。
[例2.5]:
设置IO口
设置IOA[3~0]为带下拉电阻的输入口,IOA[7~4]为带上拉电阻的输入口,IOA[11~8]为带数据寄存器的高电平输出口,IOA[15~12]为带数据寄存器的低电平输出口。
R1=0x0FF0;
//设置A端口的数据向量,IOA0~IOA3与IOA12~IOA15置高
[P_IOA_Data]=R1;
//IOA4~IOA7与IOA8~IOA11置低
R1=0xFF00;
//设置A端口的属性向量,IOA0~IOA8置低,IOA12~IOA15
[P_IOA_Attrib]=R1;
//置高
[P_IOA_Dir]=R1;
各端口位对应的向量设置如下表2.2:
从上面的分析我们可以看出,当作为输入口时所读到的数值来自不同的地方,由P_IOA_Data所读到是A口引脚上的当前状态,由P_IOA_Buffer所读到的值来自数据寄存器(见例2.6);
当A端口作为输出端口时,数据都是写到A端口的数据寄存器。
对于某
些I/O口的应用,这种读写方式可以省下许多存放端口数据的RAM空间。
[例2.6]:
程序说明:
在单步跟踪程序期间将A端口的任意引脚接VDD,通过观察寄存器表中的R2,R3的值可观察到二者的不同。
.INCLUDEhadware.inc//包含头文件
.CODE
.PUBLIC_main//主程序
_main:
R1=0x0000//设置A口为带下拉电阻的输入口
[P_IOA_Data]=R1//设置A端口的数据向量
[P_IOA_Attrib]=R1//设置A端口的属性向量
[P_IOA_Dir]=R1//设置A口的方向向量
//*****************此时将A口的任意一口接高电平*********************//
R3=[P_IOA_Data]//把P_IOA_Data中的值送到寄存器R3
R2=[P_IOA_Buffer]//把P_IOA_Buffer中的值送到寄存器R2
WAIT:
JMPWAIT//主程序循环
[例2.7]:
.DEFINEP_IOB_Data0x7005
.DEFINEP_IOB_Dir0x7007
.DEFINEP_IOB_Attrib0x7008
.DEFINEP_IOB_Buffer0x7006
R1=0xFFFF//设置B口为带反向器的低电平输出
[P_IOB_Dir]=R1//设置3个属性向量
[P_IOB_Data]=R1
R1=0x0000
[P_IOB_Attrib]=R1
R1=0x0000//向寄存器写入0x0000
//***********************此时检测B口的电平为高***********************//
R3=[P_IOB_Buffer]//回读Buffer的值为0x0000
LOOP:
JMPLOOP//主程序循环
P_IOA_Data与P_IOA_Buffer区别:
读取IO口
从端口读取数据的两种方式:
从P_IOA_Data读取数据相当于读取端口引脚的信号。
然而,从P_IOA_Buffer读取数据相当于从数据寄存器中读取数据。
R1=[P_IOA_Buffer]//从A端口数据寄存器中读取数据
R1=[P_IOA_Data]//从A端口引脚读取数据
写入IO口
这里有两种写入IOA的数据方法,向P_IOA_Data写入数据等同于向P_IOA_Buffer写入数据。
R1=0x0000;
[P_IOA_Data]=R1;
//写数据到P_IOA_Data
[P_IOA_Buffer]=R1;
//写数据到P_IOA_Buffer
详细如图2.6。
P_IOB_Data(读/写)(7005H)
B端口的数据单元,用于向B口写入或从B端口读出数据。
当B口处于输入状态时,读出是读B口引脚电平状态;
写入是将数据写入B端口的数据寄存器。
当B口处于输出状态时,写入输出数据到B端口的数据寄存器。
P_IOB_Buffer(读/写)(7006H)
B端口的数据向量单元,用于向数据寄存器写入或从该寄存器内读出数据。
当B口处于输入状态时,写入是将数据写入B端口的数据寄存器;
读出则是从B端口数据寄存器里读其数值。
当B口处于输出状态时,写入数据到B端口的数据寄存器。
P_IOB_Dir(读/写)(7007H)
B端口的方向向量单元,用于设置IOB口的状态。
‘0’为输入,‘1’为输出。
P_IOB_Attrib(读/写)(7008H)
B端口的属性向量单元,用于设置IOB端口的属性。
[例2.8]:
设置A端口低8位为带下拉电阻的输入端口,作为按键输入;
B端口低8位为带数据寄存器的高电平输出口,外接发光二极管显示。
当Ke
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 61 单片机 IO