第6章数字输入输出.ppt

上传人:本田雅阁 文档编号:2578263 上传时间:2019-04-11 格式:PPT 页数:39 大小:345.51KB
返回 下载 相关 举报
第6章数字输入输出.ppt_第1页
第1页 / 共39页
第6章数字输入输出.ppt_第2页
第2页 / 共39页
第6章数字输入输出.ppt_第3页
第3页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第6章数字输入输出.ppt》由会员分享,可在线阅读,更多相关《第6章数字输入输出.ppt(39页珍藏版)》请在三一文库上搜索。

1、1,第6章 数字输入输出I/O,41只I/O引脚,大部分是复用的。 DSP复位时,大部分I/O引脚会被上拉为数字输入的模式。 数字I/O脚有专用和复用之分。其功能可通过9个16位控 制寄存器来控制。 控制寄存器分为两类: (1)I/O复用控制寄存器(MCRx),用来选择I/O脚是片 内外设功能还是通用I/O功能; (2)数据方向控制寄存器(PxDATDIR):用来控制双向,2,I/O脚的数据传送方向。 注意:上述数字I/O脚是通过控制寄存器(映射在数 据存储器空间)来控制的,与器件的I/O空间无任何 关系。,I/O复用引脚的结构见图6-1。由图可看出复用I/O引脚 如何实现来引脚功能选择和数据

2、 传送方向选择的。,6.1 数字I/O寄存器简介,3,4,表6-1(P65)列出了与I/O模块有关的寄存器,地址为:7090h-709Fh(映射在数据存储器间) 表6-1 LF240x/240xA 的数字I/O控制寄存器 地址 寄存器 功能 7090h MCRA I/O复用控制寄存器A 7092h MCRB I/O复用控制寄存器B,5,地址 寄存器 功能 7094h MCRC I/O复用控制寄存器C 7098h PADATDIR I/O端口A数据和方向寄存器 709Ah PBDATDIR I/O端口B数据和方向寄存器 709Ch PCDATDIR I/O端口C数据和方向寄存器 709Eh PD

3、DATDIR I/O端口D数据和方向寄存器 7095h PEDATDIR I/O端口E数据和方向寄存器 7096h PFDATDIR I/O端口F数据和方向寄存器,6,保留位是不可操作的,读出为0,写入对它无影响。 注意:当复用I/O脚无论是被配置为外设功能还是为 通用I/O时,引脚的状态都可通过读I/O数据寄存器来 获取。,7,(2) I/O端口复用控制寄存器B,映射地址:7092h, 其配置见表 6-3(P66)。,(3) I/O端口复用控制寄存器C(MCRC),映射地址: 7094h,其配置见表 6-4(P67)。,6.2 I/O 端口复用控制寄存器,LF240x/240xA具有3个I/

4、O端口复用控制寄存器: MCRA、MCRB、MCRC。,(1) I/O端口复用控制寄存器A (MCRA),映射址: 7090h,其配置见表 6-2(P65)。,8,LF2407/2407A有6个数据和方向控制寄存器 (PxDATDIR), 这些数据和方向控制寄存器包含控制 引脚的两个功能位。 I/O方向位 如果引脚被选择通用I/O,方向位决定了该引脚是输入(0)还是输出(1)。 I/O数据位 如果引脚被选择了通用I/O,当方向选为输入,则可从该位上读取数据,当方向选为输出,则可向该位写入数据 。,6.3 数据和方向控制寄存器,9,当I/O端口被选择作通用I/O引脚,数据和方向控制寄 存器可以控

5、制数据和I/O引脚的数据方向。 如果I/O端口被选择作外设功能时,数据和方向控制寄 存器的设置对相应的引脚无影响。下面详细介绍数 据和方向控制寄存器。 (1)I/O端口A数据和方向控制寄存器(PADATDIR), 映射地址:7098h,格式如下。 位15-8:AnDIR PA7-PA0的数据方向 0相应引脚配置为输入 1相应引脚配置为输出,10,位7-0:IOPAn 如果AnDIR=0,引脚配置为输入: 0相应引脚的电平读为低电平 1相应引脚的电平读为高电平 如果AnDIR=1,引脚配置为输出: 0设置相应引脚,使其输出信号为低电平 1设置相应引脚,使其输出信号为高电平 当引脚选择为通用I/O

6、功能时,那么I/O端口A数据和方向控制寄存器(PADATDIR)的数据位与对应的I/O引脚如表6.5(P69)所示。,11,表6.5 寄存器PADATDIR的数据位与对应的I/O引脚 如果I/O端口用作通用I/O,则必须对数据和方向寄存器进行初始化设置,规定其为输入端口还是输出端口。,12,(2) I/O端口B数据和方向控制寄存器(PBDATDIR), 映射地址:709Ah I/O端口B数据和方向控制寄存器的格式如下。 位15-8:BnDIR PB7-PB0的数据方向 0相应引脚配置为输入 1相应引脚配置为输出 位7-0:IOPBn 如果BnDIR=0,引脚配置为输入方式。 0相应引脚的电平读

7、为低电平 1相应引脚的电平读为高电平,13,如果BnDIR=1,引脚配置为输出 0设置相应引脚,使其输出信号为低电平时有 效 1设置相应引脚,使其输出信号为高电平时有 效 当引脚选择为通用I/O功能时,那么I/O端口B数据和方 向控制寄存器(PBDATDIR)的数据位与对应的I/O引 脚如表6.6所示。,14,(3) I/O端口C数据和方向控制寄存器(PCDATDIR), 映射地址:709Ch I/O端口C数据和方向控制寄存器的格式如下: 位15-8:CnDIR PC7-PC0的数据方向 0相应引脚配置为输入 1相应引脚配置为输出 位7-0:IOPC7-IOPC0 如果CnDIR=0,引脚配置

8、为输入。 0相应引脚的电平读为低电平 1相应引脚的电平读为高电平,15,如果BnDIR=1,引脚配置为输出 0设置相应引脚,使其输出信号为低电平 1设置相应引脚,使其输出信号为高电平 当引脚选择为通用I/O功能时,那么I/O端口C数据和方 向控制寄存器(PCDATDIR)的数据位与对应的I/O引 脚如表6.7所示。,(4) I/O端口D数据和方向控制寄存器(PDDATDIR), 映射地址:709Eh,I/O端口D数据和方向控制寄存器的格式如下。,只有一位,16,位15-9:保留位 位8: D0DIR 0相应引脚配置为输入 1相应引脚配置为输出 位7-1:保留 位0: IOPD0 如果D0DIR

9、=0,引脚配置为输入。 0相应引脚的电平读为低电平 1相应引脚的电平读为高电平,17,如果D0DIR=1,引脚配置为输出 0设置相应引脚,使其输出信号为低电平时有效 1设置相应引脚,使其输出信号为高电平时有效 当引脚选择为通用I/O功能时,那么I/O端口D数据和方 向控制寄存器(PDDATDIR)的数据位与对应的I/O引 脚如表6.8所示。,(5) I/O端口E数据和方向控制寄存器(PEDATDIR), 地址:7095h I/O端口E数据和方向控制寄存器的格式如下:,18,位15-8:EnDIR 0相应引脚配置为输入 1相应引脚配置为输出 位7-0:IOPEn 如果EnDIR=0,引脚配置为输

10、入。 0相应引脚的电平读为低电平 1相应引脚的电平读为高电平 如果EnDIR=1,引脚配置为输出 0设置相应引脚,使其输出信号为低电平 时有效,19,1设置相应引脚,使其输出信号为高电平时有效 当引脚选择为通用I/O功能时,那么I/O端口E数据和方 向控制寄存器(PEDATDIR)的数据位与对应的I/O引 脚如表6.9所示。,(6) I/O端口F数据和方向控制寄存器(PFDATDIR), 映射地址:7096h I/O端口E数据和方向控制寄存器的格式如下。 位15:保留位 位14-8:EnDIR 0相应引脚配置为输入 1相应引脚配置为输出,包含7位,20,位7-0:IOPFn 如果FnDIR=0

11、,引脚配置为输入。 0相应引脚的电平读为低电平 1相应引脚的电平读为高电平 如果FnDIR=1,引脚配置为输出 0设置相应引脚,使输出为低电平有效 1设置相应引脚,使输出为高电平有效 当引脚选择为通用I/O功能时,那么I/O端口E数据和方 向控制,21,寄存器(PFDATDIR)的数据位与对应的I/O引脚如表 6.10 所示。,在使用数字I/O之前,需用软件对数字I/O进行配置,选择I/O引脚的功能,且设置I/O引脚的数据方向,然后才可以读取数据或输出数据。 下面为一个基本的数字I/O配置实例的汇编源程序。读者可参照此程序,来配置其它的任何数目的数字I/O。,6.4 数字I/O端口配置实例,2

12、2,MCRA .set7090h ;可将这些映射语句放于240x.h文件中 PADATDIR .set7098h ;可将这些映射语句放于240x.h文件中 PBDATDIR .set709Ah;可将这些映射语句放于240x.h文件中 LDP #0E1h ;指向相应的数据页面 LACC #0h ;设置MCRA所有位均为0 SACL MCRA ;将引脚IOPA0-7和IOPB0-7配置为I/O引脚 SACL PADATDIR ;引脚IOPA0-7配置为输入,低电平有效 LACC #0F00h ;引脚IOPB7-IOPB4配置为输入 SACL PBDATDIR ;引脚IOPB3-IOPB0配置为输出

13、 LACC PBDATDIR ;读取引脚IOPB7-IOPB4的输入状态 AND #00F0h ;A为输入状态,23,上面为一个数字I/O的实际配置程序,对于每个寄存器 的定义可以参考前面的介绍,为了读者使用方便, 表6.11(P74)列出了所有数字I/O定义的参考表。,通常可以配置数字I/O为输入或输出,以便于与外设进 行信息交换。本例为使用数字I/O端口来查询外界信 号输入情况,硬件接口电路如图6.11所示:,6.5.1 使用数字I/O查询输入信号,6.5 数字I/O的应用实例,24,25,为抗干扰,外界输入信号需要加光耦隔离,以便获得 符合LF2407/2407A要求的信号。本例使用 P

14、WM3/IOPB0、PWM4/IOPB1、PWM5/IOPB2和 PWM6/IOPB3。 I/O初始化需设置引脚为I/O功能,且需要选择信号方 向。下面为读取输入信号的例程。 * 文件名:INPUT.asm * .includ “240xA.h” ;变量和寄存器定义 .includ “vector.h” ;中断向量表定义,请参考4.9节,26,; ;B2块的变量定义 ; .bss INDATA,1 ;I/O输入值判断变量 .bss GPR0,1 ;通用目标寄存器 ; ;主代码 ; .text NOP START: SPLK #000Eh,IMR ;屏蔽除INT2-4以外的其它中断 LACC I

15、FR ;读中断标志 SACL IFR ;清除中断标志,27,CLRC CNF ;配置块B0到数据存储空间 LDP #00E0h ;数据页指向7000h707Fh SPLK #06Fh,WDCR ;如VCCP5V,则禁止看门狗 LDP #SCSR17 SPLK #0000,SCSR1 ; LDP #00E1h ;数据页指向7080h70FFh SPLK #0F00h,MCRA ;配置I/O,选择IOPB0IOPB3 SPLK #0000h,PBDATDIR ;配置为输入模式 LDP #0 SPLK #0,GPR0 ;为程序存储器空间设置 ; 07个等待状态 OUT GPR0,WSGR,28,KI

16、CK_DOG ;复位看门狗 CLRC INTM ;使能DSP中断 ST_LOOP1 LDP #00E1h LACC PBDATDIR LDP #INDATA SACL INDATA BIT INDATA,BIT0 ; 判断IOPB0是否有输入信号如 ; 有则跳到ST_LOOP2 BCND ST_LOOP2,TC B ST_LOOP1 ST_LOOP2 LDP #00E1h LACC PBDATDIR,29,LDP #INDATA SACL INDATA BIT INDATA,BIT1 ; 判断IOPB1是否有输入信号,如有 ;则跳到 ST_LOOP3 BCND ST_LOOP3,TC B ST

17、_LOOP2 ST_LOOP3 LDP #00E1h LACC PBDATDIR LDP #INDATA SACL INDATA,30,BIT INDATA,BIT2 ;判IOPB2是否有输入信号,如有则 ;跳到ST_LOOP4 BCND ST_LOOP4,TC B ST_LOOP3 ST_LOOP4 LDP #00E1h LACC PBDATDIR LDP #INDATA SACL INDATA BIT INDATA,BIT3 ;判断IOPB3是否有输入信号,如有 ;则跳到MAIN,31,BCND MAIN,TC B ST_LOOP4 MAIN: NOP B MAIN .end,6.5.2

18、使用数字I/O输出信号,使用I/O端口输出4个信号,这4个信号分别连接到4个LED,硬件接口电路如图6.12(P78)所示。输出引脚与LED之间接一触发器SN74HCT273,来实现对LED的驱动。在此使用 PWM3/IOPB0、PWM4/IOPB1、,32,PWM5/IOPB2 和 PWM6/IOPB3 作为输出信号 ,而 PWM7/IOPE1作为选通SN74HCT273的输出信号。下面 的实例程序实现对4个LED的循环驱动,即LED循环 发光,即DS0DS1DS2DS3DS0。,33,34,; * 文件名:OUTPUT.asm* .include “240xA.h” ;变量和寄存器定义 .

19、include “vector.h” ;中断向量表定义,请参考4.9节 ; ;B2块的变量定义 .bss OUTDATA,1 ;I/O输出值 .bss GRP0,1 ;通用目标寄存器 ; ;主代码 ;,35,.text NOP START: SPLK #000Eh,IMR ;屏蔽除INT2、INT3和INT4 ;以外的其它中断 LACC IFR ;读中断标志 SACL IFR ;清除中断标志 CLRC CNF ;配置块B0到数据存储空间 LDP #00E0h ;数据页指向7000h707Fh SPLK #06Fh,WDCR ;如果VCCP5V,则禁止看门狗 LDP #SCSR17 SPLK #

20、0000,SCSR1,36,LDP #00E1h ;数据页指向7080h70FFh SPLK #0F00h,MCRA ;配置I/O,选择IOPB0IOPB3 SPLK #0F00h,PBDATDIR ;配置为输出模式 SPLK #0002h,MCRC ;配置I/O, 选择IOPE1 SPLK #0200h,PEDATDIR ;配置为输出模式 LDP #0 SPLK #0h,GPR0 ;为程序存储器空间设置等待发生 ;器,07个等待状态 OUT GPR0,WSGR KICK_DOG ;复位看门狗 CLRC INTM ;使能DSP中断,37,MAIN: LDP #0 SPLK #1,OUTDATA

21、 ;给输出变量赋值 LDP #00E1h LACC PEDATDIR OR #0202h ;输出到IOPE1,选通SN74HCT273 SACL PEDATDIR ST_LOOP LDP #0h LACL OUTDATA OR #0F00h,38,LDP #00E1h SACL PBDATADIR ;输出信号到LED CALL DELAY ;延时 LACL OUTDATA SFL ;左移1位 SACL OUTDATA ; BIT OUTDATA,BIT4 ;判是否完成了一个循环,如 ;是则跳到MAIN,重复开始 BCND MAIN,TC B ST_LOOP .end,39,DELAY: LAR AR0,#01h ;延时子程序 D_LOOP: RPT #FFh ;延时参数可按需要进行修改 NOP BANZ D_LOOP RET,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1