《数字输入输出》PPT课件.ppt

上传人:牧羊曲112 文档编号:5519170 上传时间:2023-07-16 格式:PPT 页数:39 大小:282KB
返回 下载 相关 举报
《数字输入输出》PPT课件.ppt_第1页
第1页 / 共39页
《数字输入输出》PPT课件.ppt_第2页
第2页 / 共39页
《数字输入输出》PPT课件.ppt_第3页
第3页 / 共39页
《数字输入输出》PPT课件.ppt_第4页
第4页 / 共39页
《数字输入输出》PPT课件.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《《数字输入输出》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数字输入输出》PPT课件.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 LF240 x/240 xA 的数字I/O控制寄存器 地址 寄存器 功能 7090h MCRA I/O复用控制寄存器A 7092h MCRB I/O复用控制寄存器B,5,地址 寄存器 功能7094h MCRC I/O复用控制寄存器C7098h PADATDIR I/O端口A数据和方向寄存器709Ah PBDATDIR I/O端口B数据和方向寄存器709Ch PCDATDIR I/O端口C数据和方向寄存器709Eh PDDATDIR I/O端口D

3、数据和方向寄存器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 端口复用控制寄存器,LF240 x/240 xA具有3个I/O端口复用控制寄存器:MCRA、MCRB

4、、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引脚,数据和方向控制寄 存器可以控制数据和I/O引脚的数据方向。如果I/O端口被选择作外设功能

5、时,数据和方向控制寄 存器的设置对相应的引脚无影响。下面详细介绍数 据和方向控制寄存器。(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功能时,那么I/O端口A数据和方向控制寄存器(PADATDIR)的数据位与对应

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

7、应引脚,使其输出信号为低电平时有 效 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,引脚配置为输入。0相应引脚的电平读为低电平 1相应引脚的电平读为高电平,15,如果BnDIR=1,引脚配置

8、为输出 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=0,引脚配置为输入。0相应引脚的电平读为低电平 1相应引脚的电平读为高电平,17,如果D0DIR=1,引脚配置为输

9、出 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,引脚配置为输入。0相应引脚的电平读为低电平 1相应引脚的电平读为高电平如果EnDIR=1,引脚配置为输出 0设置相应引脚,使其输出信号为低

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

11、 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端口配置实例,22,MCRA.set7090h;可将这些映射语句放于240 x.h文件中PADATDIR.set7098h;可将这些映射语句放于240 x.h文件中P

12、BDATDIR.set709Ah;可将这些映射语句放于240 x.h文件中LDP#0E1h;指向相应的数据页面LACC#0h;设置MCRA所有位均为0SACL MCRA;将引脚IOPA0-7和IOPB0-7配置为I/O引脚SACL PADATDIR;引脚IOPA0-7配置为输入,低电平有效LACC#0F00h;引脚IOPB7-IOPB4配置为输入SACL PBDATDIR;引脚IOPB3-IOPB0配置为输出LACC PBDATDIR;读取引脚IOPB7-IOPB4的输入状态AND#00F0h;A为输入状态,23,上面为一个数字I/O的实际配置程序,对于每个寄存器 的定义可以参考前面的介绍,为

13、了读者使用方便,表6.11(P74)列出了所有数字I/O定义的参考表。,通常可以配置数字I/O为输入或输出,以便于与外设进 行信息交换。本例为使用数字I/O端口来查询外界信 号输入情况,硬件接口电路如图6.11所示:,6.5.1 使用数字I/O查询输入信号,6.5 数字I/O的应用实例,24,25,为抗干扰,外界输入信号需要加光耦隔离,以便获得 符合LF2407/2407A要求的信号。本例使用 PWM3/IOPB0、PWM4/IOPB1、PWM5/IOPB2和 PWM6/IOPB3。I/O初始化需设置引脚为I/O功能,且需要选择信号方 向。下面为读取输入信号的例程。*文件名:INPUT.asm

14、*.includ“240 xA.h”;变量和寄存器定义.includ“vector.h”;中断向量表定义,请参考4.9节,26,;B2块的变量定义;.bss INDATA,1;I/O输入值判断变量.bss GPR0,1;通用目标寄存器;主代码;.text NOPSTART:SPLK#000Eh,IMR;屏蔽除INT2-4以外的其它中断 LACC IFR;读中断标志 SACL IFR;清除中断标志,27,CLRC CNF;配置块B0到数据存储空间LDP#00E0h;数据页指向7000h707FhSPLK#06Fh,WDCR;如VCCP5V,则禁止看门狗LDP#SCSR17SPLK#0000,SC

15、SR1;LDP#00E1h;数据页指向7080h70FFhSPLK#0F00h,MCRA;配置I/O,选择IOPB0IOPB3SPLK#0000h,PBDATDIR;配置为输入模式LDP#0SPLK#0,GPR0;为程序存储器空间设置;07个等待状态OUT GPR0,WSGR,28,KICK_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_LOO

16、P1ST_LOOP2 LDP#00E1h LACC PBDATDIR,29,LDP#INDATASACL INDATABIT INDATA,BIT1;判断IOPB1是否有输入信号,如有;则跳到 ST_LOOP3BCND ST_LOOP3,TCB ST_LOOP2ST_LOOP3LDP#00E1hLACC PBDATDIRLDP#INDATASACL INDATA,30,BIT INDATA,BIT2;判IOPB2是否有输入信号,如有则;跳到ST_LOOP4BCND ST_LOOP4,TCB ST_LOOP3ST_LOOP4LDP#00E1hLACC PBDATDIRLDP#INDATASACL

17、 INDATABIT INDATA,BIT3;判断IOPB3是否有输入信号,如有;则跳到MAIN,31,BCND MAIN,TC B ST_LOOP4MAIN:NOP B MAIN.end,6.5.2 使用数字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的输出信号。下面的实例程序

18、实现对4个LED的循环驱动,即LED循环发光,即DS0DS1DS2DS3DS0。,33,34,;*文件名:OUTPUT.asm*.include“240 xA.h”;变量和寄存器定义.include“vector.h”;中断向量表定义,请参考4.9节;B2块的变量定义.bss OUTDATA,1;I/O输出值.bss GRP0,1;通用目标寄存器;主代码;,35,.text NOPSTART:SPLK#000Eh,IMR;屏蔽除INT2、INT3和INT4;以外的其它中断 LACC IFR;读中断标志 SACL IFR;清除中断标志 CLRC CNF;配置块B0到数据存储空间 LDP#00E0

19、h;数据页指向7000h707Fh SPLK#06Fh,WDCR;如果VCCP5V,则禁止看门狗 LDP#SCSR17 SPLK#0000,SCSR1,36,LDP#00E1h;数据页指向7080h70FFhSPLK#0F00h,MCRA;配置I/O,选择IOPB0IOPB3SPLK#0F00h,PBDATDIR;配置为输出模式SPLK#0002h,MCRC;配置I/O,选择IOPE1SPLK#0200h,PEDATDIR;配置为输出模式LDP#0SPLK#0h,GPR0;为程序存储器空间设置等待发生;器,07个等待状态OUT GPR0,WSGRKICK_DOG;复位看门狗CLRC INTM;

20、使能DSP中断,37,MAIN:LDP#0 SPLK#1,OUTDATA;给输出变量赋值 LDP#00E1h LACC PEDATDIR OR#0202h;输出到IOPE1,选通SN74HCT273 SACL PEDATDIRST_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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号