ImageVerifierCode 换一换
格式:PPT , 页数:31 ,大小:322.50KB ,
资源ID:1103311      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-1103311.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(2010-第8章--嵌入式io端口.ppt)为本站会员(天天快乐)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

2010-第8章--嵌入式io端口.ppt

1、1,第8章 I/O端口,李建义,2,8.1 通用 I/O端口,通用I/O口的配置通用I/O口的编程,3,8.1.1 S3C2440的I/O端口,130个多功能端口,分为9组:1个8位的I/O端口(端口F)1个9位的I/O端口(端口H)1个13位I/O端口(端口J)1个11位I/O端口(端口B)4个16位I/O端口(端口C、D、E、G)1个25位输出端口(端口A),4,8.1.1 S3C2440的I/O端口,每组端口可以通过软件配置端口控制寄存器来满足不同系统和设计的需要。在运行 主程序之前,必须先对用到的每一个引脚功能进行设置。如果某些引脚的复用功能没有使用,可将该引脚先设置为I/O口。,5,

2、8.1.1 S3C2440的I/O端口,datasheetUm_s3c2440a_rev.pdf中 9.IO Ports,6,8.1.2 S3C2440芯片与端口相关的寄存器,(1)端口控制寄存器(GPACON-GPJCON):配置每一个引脚的工作模式(2)端口数据寄存器(GPADAT-GPJDAT):当端口配置为输出引脚时,输出数据的方法是将数据写到GPADAT-GPJDAT的相应位;当端口配置为输入引脚时,读入数据的方法是将GPADAT-GPJDAT的相应位读出。,7,8.1.2 S3C2440芯片与端口相关的寄存器,(3)端口上拉寄存器(GPBUP-GPJUP):设置端口上拉寄存器,可以

3、设置该组端口与内部上拉电阻连接或断开。当寄存器相应的位配置为0时,该引脚接上拉电阻,当寄存器相应的位配置为1 时,该引脚不接上拉电阻。(4)外部中断控制寄存器(EXTINT):根据外部中断的需要,将中断触发信号配置为低电平触发、高电平触发、下降沿触发和上升沿触发和边沿触发几种方式。,8,8.1.3 应用实例um_s3c2440a_rev10.pdf 37页,发光二极管控制电路:端口F 6、7引脚分别与LED1 和LED2 连接,端口输出低电平时,LED灯亮;电平,LED灯灭。,9,代码分析:,Void Led_Display(int LedStatus)Led_state= LedStatus

4、;if(LedStatus,最低位为1,第6位为0,LED1亮,第6位为1,LED1灭,第2位为1,第7位为0,LED2亮,第7位为1,LED2灭,结论:若想要LED1亮,只需将LedStatus最低位为1即可,为0则LED1 灭; 若想要LED2亮,只需将LedStatus第2位为1即可,为0则LED2 灭;,10,I/O端口控制寄存器,11,12,端口A数据寄存器,当端口配置为输出口,输出引脚的状态与GPADAT的相应位相同;当端口配置为功能引脚时,此控制寄存器的未定义。,13,端口B,14,15,端口B,16,端口F,17,端口F-控制寄存器,18,端口F-数据寄存器和上拉寄存器,19,

5、2440addr.h文件中关于I/O口寄存器的定义,/ I/O PORT #define rGPACON (*(volatile unsigned *)0x56000000)/Port A control#define rGPADAT (*(volatile unsigned *)0x56000004)/Port A data#define rGPBCON (*(volatile unsigned *)0x56000010)/Port B control#define rGPBDAT (*(volatile unsigned *)0x56000014)/Port B data#define r

6、GPBUP (*(volatile unsigned *)0x56000018)/Pull-up control B#define rGPCCON (*(volatile unsigned *)0x56000020)/Port C control#define rGPCDAT (*(volatile unsigned *)0x56000024)/Port C data#define rGPCUP (*(volatile unsigned *)0x56000028)/Pull-up control C#define rGPDCON (*(volatile unsigned *)0x5600003

7、0)/Port D control#define rGPDDAT (*(volatile unsigned *)0x56000034)/Port D data#define rGPDUP (*(volatile unsigned *)0x56000038)/Pull-up control D,20,#define rGPECON (*(volatile unsigned *)0x56000040)/Port E control#define rGPEDAT (*(volatile unsigned *)0x56000044)/Port E data#define rGPEUP (*(volat

8、ile unsigned *)0x56000048)/Pull-up control E#define rGPFCON (*(volatile unsigned *)0x56000050)/Port F control#define rGPFDAT (*(volatile unsigned *)0x56000054)/Port F data#define rGPFUP (*(volatile unsigned *)0x56000058)/Pull-up control F#define rGPGCON (*(volatile unsigned *)0x56000060)/Port G cont

9、rol#define rGPGDAT (*(volatile unsigned *)0x56000064)/Port G data#define rGPGUP (*(volatile unsigned *)0x56000068)/Pull-up control G#define rGPHCON (*(volatile unsigned *)0x56000070)/Port H control#define rGPHDAT (*(volatile unsigned *)0x56000074)/Port H data#define rGPHUP (*(volatile unsigned *)0x5

10、6000078)/Pull-up control H#define rGPJCON (*(volatile unsigned *)0x560000d0)/Port J control#define rGPJDAT (*(volatile unsigned *)0x560000d4)/Port J data#define rGPJUP (*(volatile unsigned *)0x560000d8)/Pull-up control,#define rGPFCON (*(volatile unsigned *)0x56000050)/Port F control#define rGPFDAT

11、(*(volatile unsigned *)0x56000054)/Port F data#define rGPFUP (*(volatile unsigned *)0x56000058)/Pull-up control F,21,*关于volatile的说明*,volatile的本意是“易变的” ;由于访问寄存器的速度要快过RAM,所以编译器一般都会作减少存取外部RAM的优化。比如:static int i=0;int main(void).while (1) if (i) dosomething(); ,/* Interrupt service routine. */void ISR_2

12、(void) i=1; ,22,*关于volatile的说明*,程序的本意是希望ISR_2中断产生时,在main当中调用dosomething函数,但是,由于编译器判断在main函数里面没有修改过i,因此可能只执行一次对从i到某寄存器的读操作,然后每次if判断都只使用这个寄存器里面的“i副本”,导致dosomething永远也不会被调用。如果将将变量加上volatile修饰,则编译器保证对此变量的读写操作都不会被优化(肯定执行)。此例中i也应该如此说明。,23,*关于volatile的说明*,一般说来,volatile用在如下的几个地方:1、中断服务程序中修改的供其它程序检测的变量需要加vol

13、atile;2、多任务环境下各任务间共享的标志应该加volatile;3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义。,24,端口初始化函数 IO_test2440lib.c,void Port_Init(void) rGPACON = 0x7fffff; rGPBCON = 0x000150; rGPBUP = 0x7ff; rGPCCON = 0xaaaaaaaa; rGPCUP = 0xffff;,25,rGPDCON = 0xaaaaaaaa; rGPDUP = 0xffff;rGPECON = 0xa02aa800; rGPEUP = 0

14、xffff; rGPFCON = 0x55aa; rGPFUP = 0xff;,含义?,26,GPF4 F5 F6 F7 D1 D2 D3 D4,实现灯的闪烁-自左至右,27,/*函数名:left_right()函数作用:实现4个led灯从左到右依次亮函数参数:无返回值:无作者:李建义完成日期:2010年9月27日*/void left_right( )while(Uart_GetKey() != r)rGPFDAT = rGPFDAT ,void left_right( )while(Uart_GetKey() != r)rGPFDAT = rGPFDAT ,28,LED显示程序代码分析:m

15、ain_io.c,void Led_Test1(void)Uart_Printf( LED Test, press Enter key to exit !n ) ;while(Uart_GetKey() != r)Delay(1000);Led_Display(0x8);Delay(1000);Led_Display(0x4);Delay(1000);Led_Display(0x2);Delay(1000);Led_Display(0x1);Delay(1000);Led_Display(0xF);Delay(1000);Led_Display(0x0);,29,E:SINOSYSExperi

16、mentIOSourceCodeIO_test2440lib.c,void Led_Display(int data) /Active is low.(LED On) / GPF7 GPF6 GPF5 GPF4 /nLED_8 nLED4 nLED_2 nLED_1rGPFDAT = (rGPFDAT ,4-7位清0,其他位不变,4-7位置位,其它位不变,结论:data的0-3位对应led1-4,要使对应的灯亮,data相应位为1, rGPFDAT对应的位为0即可,30,本课小结,掌握I/O口配置的方法;端口控制寄存器端口上拉寄存器掌握I/O口读、写数据的方法端口数据寄存器,31,周四实验,通用I/O口实验-跑马灯(实验16 IO_test)任务:修改程序,分别使4个灯亮的顺序为自右至左、自左至右、中间到两边、两边到中间、从左到右顺序亮,然后全灭、从右到左顺序亮,然后全灭。分别编写这几个函数,写在实验报告上下周一上机:2:00-3:45:3、4、5、6班汇编下周四上机 2:004:00单元:第1、2班 4:00-6:00单元:第3、5班 下周六8:30-10:00:4、6班,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报