1 / 28

I/O 接口模块

I/O 接口模块. 2010 年 7 月. 控制科学与工程学院. 控制. I/O. 检测. 单片机内部集成了 PORTA 、 PORTB 、 PORTE 、 PORTAD 、 PORTK 、 PORTT 、 PORTS 、 PORTM 、 PORTJ 、 PORTH 等 I/O 口 由于不同型号或者 同一型号不同的封装 , I/O 接口的引脚的具体数量会有很大的差异。. PORTA 、 PORTB 、 PORTE 和 PORTK 在芯片处于扩展方式下被用作总线信号.

jarvis
Download Presentation

I/O 接口模块

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. I/O接口模块 2010年7月 控制科学与工程学院

  2. 控制 I/O 检测

  3. 单片机内部集成了PORTA、PORTB、PORTE、PORTAD、PORTK、PORTT、PORTS、PORTM、PORTJ、PORTH等I/O口单片机内部集成了PORTA、PORTB、PORTE、PORTAD、PORTK、PORTT、PORTS、PORTM、PORTJ、PORTH等I/O口 • 由于不同型号或者同一型号不同的封装,I/O接口的引脚的具体数量会有很大的差异。

  4. PORTA、PORTB、PORTE和PORTK在芯片处于扩展方式下被用作总线信号

  5. PORTT、PORTP、PORTS、PORTM、PORTJ和PORTH被集成在端口集成模块(PIM)内 ,与片内其他功能模块的引脚复用

  6. MC9S12DG128单片机并行I/O的复用功能

  7. 通用I/O接口 • I/O口作为输入使用 • 设置方向寄存器(DDRx)为输入(0x00) • 随时读取I/O口的数据寄存器(PORTx/PTx)

  8. 通用I/O接口 • I/O口作为输出使用 • 设置方向寄存器(DDRx)为输出(0xFF) • 设置驱动能力寄存器(非必须) • 拉电阻选择(非必须) • 随时写入I/O口数据寄存器(PORTx/PTx)

  9. I/O接口的功能及设置方法 数据寄存器:并行I/O接口都有数据寄存器进行数据的读取和发送

  10. 方向寄存器 方向寄存器的某位为“0”表示相应的引脚为输入引脚;为“1”表示相应的引脚为输出引脚。

  11. I/O口的中断功能 • MC9S12单片机的I/O接口PORTJ、PORTP(PORTH)具有中断功能. • 中断使能寄存器 • “1”表示允许中断 • “0”表示禁止中断 • 中断标志寄存器 • “1”表示有中断发生 • “0”表示无中断发生

  12. 中断边沿选择寄存器 • “1”表示上升沿中断, • “0”表示下降沿中断。 • 当检测到有效中断边沿时,中断标志寄存器PIFJ相应位被置1,产生中断并进入相应的中断服务程序。

  13. 程序举例 • 使用PORTJ口的中断功能。 • 设置PORTA口为输出口,PORTA的第6脚和PORTJ的第6脚硬件相连, • PORTB为输出口,用来控制8个LED灯, • PORTJ开中断,并且设置为上升沿触发。

  14. void interrupt 24 PJI(void); /* 声明中断函数*/ void main(void){ EnableInterrupts; DDRJ=0x00; /*PORTJ作为输入*/ DDRB=0xFF; /*PORTB作为输出*/ PORTB=0xff; /*灯全灭*/ DDRA=0xff;/*PORTA输出*/ PORTA=0x00;/*PORTA全为低电平*/ PPSJ=0xff;/*上升沿中断*/ PIEJ=0xff;/*中断使能*/ for(;;){PORTA=0b11000000;/*产生中断*/} } #pragma CODE_SEG NON_BANKED void interrupt 24 PJI(void)/*中断服务程序,中断向量号为24*/ {PORTB=0xf0;/*LED灯高四灭,低四亮*/}

  15. 如何得知中断向量号? 中断向量表 向量号0 向量号1 依次向下数 向量号24 ……

  16. 如何改进?

  17. 例1 设计一个C语言程序,使教学板上发光二极管 • 点亮LED • 显示花灯效果 • 1、3、5、7先亮 • 延迟一段时间后2、4、6、8亮 • 再1、3、5、7亮,依次循环。 • 显示循环流水灯效果 • 1、2、3、4、5、6、7、8依次循环亮

  18. 例2、用扫描方式实现LED显示按键状态 • 例3、用中断方式实现LED显示按键状态

  19. 例4 数码管

  20. 同时显示4个相同的数值 • 同时显示4个不同的数值(1、2、3、4)

  21. 例5 蜂鸣器 • 使蜂鸣器发出“嘀……嘀……嘀…………”的声音

  22. IRQ中断

  23. (1)中断使能及方式控制(INTCR)(IRQCR) • 边沿触发允许位 • 0= 引脚低电平触发 • 1= 引脚下降沿触发 • IRQ中断允许位 • 0=IRQ引脚与中断逻辑 • 断开 • 1=IRQ引脚连接到中断 • 逻辑

  24. 例6 外部中断 • 利用外部中断点亮小灯

  25. 谢谢!

More Related