1 / 67

模块 2 并行 I/O 接口的应用

模块 2 并行 I/O 接口的应用. 课题 1 基于单片机控制的简易信号灯. 任务 1 1 位灯闪亮的控制. 任务 2 8 位灯闪亮的控制. 任务 3 8 位流水灯的控制. 课题 2 基于单片机控制的信号灯的应用. 任务 1 8 位灯多花样闪亮的控制. 任务 2 简易交通灯的控制. 简易信号灯控制. 任务 1. 工作任务. 让控制电路图中单片机 P1.0 口所对应的灯不断闪烁(即亮一 会儿,灭一会儿)。. 简易信号灯控制. 任务 1. 硬件电路. 该控制电路由单片机最小应用系统、 8 位由芯片 74LS373

bobby
Download Presentation

模块 2 并行 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. 模块2 并行I/O接口的应用 课题1 基于单片机控制的简易信号灯 任务1 1位灯闪亮的控制 任务2 8位灯闪亮的控制 任务3 8位流水灯的控制 课题2 基于单片机控制的信号灯的应用 任务1 8位灯多花样闪亮的控制 任务2 简易交通灯的控制

  2. 简易信号灯控制 任务1 工作任务 让控制电路图中单片机P1.0口所对应的灯不断闪烁(即亮一 会儿,灭一会儿)。

  3. 简易信号灯控制 任务1 硬件电路 该控制电路由单片机最小应用系统、8位由芯片74LS373 驱动的发光二极管和5V直流稳压电源组成的。其中的8位灯是 由单片机的P1口控制的,8位灯接成共阳极。 74LS373锁存器的作用 锁存,就是把信号暂存以维持某种电平状态。 锁存器的最主要作用是缓存,其次完成高速的控 制其与慢速的外设的不同步问题,再其次是解决 驱动的问题,最后是解决一个 I/O 口既能输出也 能输入的问题。

  4. 简易信号灯控制 任务1 软件设计要点分析 发光二极管如何点亮? 高电平“1” 即当P1.0~P1.7 引脚输出低电平 时其对应的发光 二极管才会亮! 低电平“0”

  5. 简易信号灯控制 任务1 软件设计要点分析 ☆减1不为0转移指令 怎样实现亮“一会儿”? 格式: DJNZ Rn, rel DJNZ direct, rel 利用程序执行需消耗时间来延时。 例:延时50ms的延时子程序 DELAY: MOV R7,#0FFH DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET 功能:寄存器(直接寻址单元) 内容先减1,如所得内容 为0,则程序顺序执行; 如减1结果不为0,则程 序转移。 注:“$”代表本指令的地址

  6. 简易信号灯控制 任务1 软件设计要点分析 延时时间的计算 DELAY: MOV R7,#0FFH DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET 因为fosc=12MHZ,故机器周期 Tcy=12/fosc=1us 延时时间T1=2us ×100+ 1us=201us 延时时间TDELAY=(T1 + 2us )×255+ 1us =(201 us + 2us ) × 255+ 1us =51768us≈52ms

  7. 简易信号灯控制 任务1 软件设计 步骤: 1、熟读控制要求,理解题意; 2、根据控制要求画出流程图; 3、根据流程图编写程序。

  8. 简易信号灯控制 任务1 软件设计 一、控制流程图 ORG 0000H LJMP START ORG 0030H CLR P1.0 DELAY: MOV R7,#255 DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 SETB P1.0 DELAY: MOV R7,#255 DL1: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL1 LJMP START

  9. 简易信号灯控制 任务1 软件设计 ORG 0000H LJMP START ORG 0030H START: CLR P1.0 MOV R7,#255 DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 SETB P1.0 MOV R7,#255 DL1: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL1 LJMP START END 当出现需重复使用的程序 时可把它编写成子程序,需要 时再用子程序调用指令LCALL /ACALL进行调用。 子程序以标号开始,以子 程序返回指令RET结束。 一般把子程序放在结束指 令END前面。

  10. 简易信号灯控制 任务1 软件设计 ORG 0000H LJMP START ORG 0030H START: CLR P1.0 SETB P1.0 LJMP START DELAY: MOV R7,#255 DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET END ORG 0000H LJMP START ORG 0030H START: CLR P1.0 MOV R7,#255 DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 SETB P1.0 MOV R7,#255 DL1: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL1 LJMP START END LCALL DELAY LCALL DELAY

  11. 简易信号灯控制 任务1 ORG 0000H LJMP START ORG 0030H START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R7,#0FFH DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET END 软件设计 三、控制功能源程序

  12. 简易信号灯控制 任务1 练 习 用取反指令“CPL”来实现任务。 ☆取反指令CPL 格式: CPLbit CPL C CPL A 功能:将位地址bit中的内容、 标志位C的内容及累加器 ACC的内容8位取反。

  13. 简易信号灯控制 任务1 练 习 用取反指令“CPL”来实现任务。 ORG 0000H LJMP START ORG 0030H START: CLR C START1: MOV P1.0,C CPL C LCALL DELAY LJMP START1 DELAY: … … END

  14. 简易信号灯控制 任务1 软件设计方法小结 1、如何让灯亮和灯灭 2、有穷程序流程的控制 3、如何实现程序的无穷循环 4、如何实现延时及延时时间长度的计算和控制 5、如何实现子程序的调用和返回控制

  15. 课前复习 1、 MOV R0,#08 MOV R1,#04 LOOP: DEC R0 DJNZ R1 , LOOP END 问:执行完该程序后,(R0)= ( ),(R1)= ( )。 2、已知(R1)=11000011B MOV A,R1 CPL A 问:执行完以上指令后,(R1)=( ),(A)=( )。

  16. 简易信号灯控制 任务2 工作任务 先让P1口控制的灯D7~D0分别灭、亮、灭、亮、灭、亮、灭、亮的状态,延时后,再让P1口控制的灯D7~D0分别亮、灭、亮、灭、亮、灭、亮、灭的状态。

  17. 简易信号灯控制 任务2 任务分析 状态1:灯D7~D0分别灭、亮、灭、亮、灭、亮、 灭、亮 (P1)=10101010B =0AAH 状态2:灯D7~D0分别亮、灭、亮、灭、亮、灭、 亮、灭的状态。 (P1)=01010101B =55H

  18. 简易信号灯控制 任务2 软件设计 一、控制流程图 ORG 0000H LJMP START ORG 0030H MOV P1,#0AAH LCALL DELAY MOV P1,#55H LCALL DELAY LJMP START

  19. 简易信号灯控制 任务2 软件设计 ORG 0000H LJMP START ORG 0030H START: MOV P1,#0AAH LCALL DELAY MOV P1,#55H LCALL DELAY LJMP START DELAY: MOV R7,#0FFH DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET END 二、控制功能源程序

  20. 简易信号灯控制 任务2 练习 如图2-1-1所示: 先让P1口控制的灯D7~D0分别亮、亮、亮、亮、灭、灭、灭、灭的状态,延时后,再让P1口控制的灯D7~D0分别灭、灭、灭、灭、亮、亮、亮、亮 的状态。

  21. 简易信号灯控制 任务2 练习 用取反指令“CPL”来实现任务。 ORG 0000H LJMP START ORG 0030H MOV A,#0AAH MOV P1,A CPL A LCALL DELAY LJMP START

  22. 简易信号灯控制 任务2 ORG 0000H LJMP START ORG 0030H START: MOV A,#0AAH START1: MOV P1,A CPL A LCALL DELAY LJMP START1 DELAY: MOV R7,#0FFH DL0: MOV R6,#100 DJNZ R6,$ DJNZ R7,DL0 RET END 练 习 取反指令实现任务的源程序。

  23. 简易信号灯控制 任务2 软件设计方法小结 1、取反指令“CPL”对应的操作数只能是位地址bit、进位标志 位C、累加器ACC 格式: CPL bit CPL C CPL A 2、累加器ACC是工作最频繁的寄存器,当指令无法对I/O端口进行直接控制时,通常通过累加器ACC进行传送。

  24. 简易信号灯控制 任务3 工作任务 让P1口控制的8位灯从D0~D7灯逐个轮流点亮并不断循环。

  25. 简易信号灯控制 任务3 任务分析 0FEH 0FDH 0FBH 0F7H 0EFH 07FH

  26. 简易信号灯控制 ORG 0000H LJMP START ORG 0030H START: MOV P1, #0FEH LCALL DELAY MOV P1,#0FDH LCALL DELAY MOV P1, #0FBH LCALL DELAY MOV P1,#0F7H LCALL DELAY MOV P1, #0EFH LCALL DELAY MOV P1,#0DFH LCALL DELAY MOV P1, #0BFH LCALL DELAY MOV P1,#07FH LCALL DELAY AJMP MAIN 任务3 软件设计 ★顺序流程控制

  27. 简易信号灯控制 任务3 软件设计 ★有穷循环体控制 用循环移位指令“RL”或“RR”及“DJNZ”来实现任务。 ☆循环移位指令 格式: RL A ;位循环左移指令 RR A ;位循环右移指令 RLC A ;带进位标志位C循环左移指令 RRC A ;带进位标志位C循环右移指令 ☆减1不为0转移指令 格式: DJNZ Rn, rel DJNZ direct, rel

  28. 简易信号灯控制 任务3 软件设计 ORG 0000H LJMP START ORG 0030H ★有穷循环体控制 MOV A,#0FEH MOV R0,#8 OUT MOV P1,A RL A LCALL DELAY DJNZ R0,OUT LJMP START

  29. 简易信号灯控制 任务3 软件设计 ORG 0000H LJMP START ORG 0030H START: MOV A,#0FEH MOV R0,#8 OUT: MOV P1,A RL A LCALL DELAY DJNZ R0,OUT LJMP START DELAY: … …(略) END ★有穷循环体控制

  30. 简易信号灯控制 任务3 练 习 1、如图2-1-1所示电路图,让P1口控制的8位灯从D7~D0灯逐 个轮流点亮并不断循环。

  31. 简易信号灯控制 任务3 练 习 1、如图2-1-1所示电路图,让P1口控制的8位灯从D7~D0灯逐 个轮流点亮并不断循环。 参考源程序: ORG 0000H LJMP START ORG 0030H START: MOV A,#7FH MOV R0,#8 OUT: MOV P1,A RR A LCALL DELAY DJNZ R0,OUT LJMP START DELAY: … …(略) END

  32. 简易信号灯控制 任务3 练 习 2、如图2-1-1所示电路图,让P1口控制的8位灯从D0~D7灯两个两个轮流点亮并不断循环。

  33. 简易信号灯控制 任务3 练 习 2、如图2-1-1所示电路图,让P1口控制的8位灯从D0~D7灯两个两个轮流点亮并不断循环。 ORG 0000H LJMP START ORG 0030H START: MOV A,#0FBH MOV R0,#4 OUT: MOV P1,A RL A RL A LCALL DELAY DJNZ R0,OUT LJMP START DELAY: … …(略) END 参考源程序:

  34. 简易信号灯控制 任务3 软件设计方法小结 1、循环移位指令对应的操作数只能是累加器ACC。 格式: RL A ;位循环左移指令 RR A ;位循环右移指令 RLC A ;带进位标志位C循环左移指令 RRC A ;带进位标志位C循环右移指令

  35. 课前复习 1、循环移位指令 格式: RL A ;位循环左移指令 RR A ;位循环右移指令 RLC A ;带进位标志位C循环左移指令 RRC A ;带进位标志位C循环右移指令 注:移位指令对应的操作数只能是累加器ACC。

  36. 课前复习 例1:已知(A)=11000000B,(CY)=1 若执行一次RL A 后,结果为: (A)=(),(CY)=( ); 若执行一次RR A 后,结果为: (A)=( ),(CY)=( ); 若执行一次RLC A 后,结果为: (A)=( ),(CY)=( ); 若执行一次RRC A 后,结果为: (A)=( ),(CY)=( )。

  37. 课前复习 2、流水灯程序设计要点: (1)初始状态 (2)移位方向 (3)移位次数

  38. 课前复习 ORG 0000H LJMP START ORG 0030H START: MOV A,#0FEH MOV R0,#8 OUT: MOV P1,A RL A LCALL DELAY DJNZ R0,OUT LJMP START DELAY: … …(略) END

  39. 信号灯的应用 任务1 工作任务 让控制电路图中的8位灯按如下流程工作:8位灯以 “0AAH”的初态闪亮8次→两灯并行左移后右移(每次移位 1次),3个循环后全灭→从D0~D7灯逐个递亮后全灭 →从D7~D0灯逐个递亮后全灭→重复循环执行以上程序。

  40. 信号灯的应用 任务1 任务分析

  41. 信号灯的应用 任务1 程序设计 (一)8位灯闪亮程序 MOV A,#0AAH MOV R2,#8 LPP: MOV P1,A CPL A LCALL DELAY DJNZ R2,LPP END

  42. 信号灯的应用 任务1 程序设计 (二)两灯并行左移后右移(每次移位1次),3个 循环后全灭 ;左移程序 MOV A,#0FCH MOV R2,#7 LLS: MOV P1,A RL A LCALL DELAY DJNZ R2,LLS MOV P1,#0FFH

  43. 信号灯的应用 任务1 程序设计 (二)两灯并行左移后右移(每次移位1次),3个 循环后全灭 ;右移程序 MOV A,#3FH MOV R2,#7 LRS: MOV P1,A RR A LCALL DELAY DJNZ R2,LRS MOV P1,#0FFH

  44. 信号灯的应用 任务1 程序设计 (二)两灯并行左移后右移(每次移位1次),3个 循环后全灭 MOV R3,#3 LRS: MOV R2,#7 MOV A,#0FCH LLS: MOV P1,A RL A LCALL DELAY DJNZ R2,LLS MOV P1,#0FFH LCALL DELAY MOV R2,#7 MOV A,#3FH RRS: MOV P1,A RR A LCALL DELAY DJNZ R2,RRS MOV P1,#0FFH LCALL DELAY DJNZ R3,LRS

  45. MOV R3,#3 LRS: MOV R2,#7 MOV A,#0FCH LCALL LLS MOV P1,#0FFH LCALL DELAY MOV R2,#7 MOV A,#3FH LCALL RRS MOV P1,#0FFH LCALL DELAY DJNZ R3,LRS LLS: MOV P1,A RL A LCALL DELAY DJNZ R2,LLS RET RRS: MOV P1,A RR A LCALL DELAY DJNZ R2,RRS RET

  46. 信号灯的应用 任务1 程序设计 (三)从D0~D7灯逐个递亮后全灭(方法一) MOV R2,#8 MOV A,#0FEH LLSS: MOV P1,A CLR C RLC A LCALL DELAY DJNZ R2,LLSS MOV P1,#0FFH

  47. 信号灯的应用 任务1 程序设计 ☆新指令剖析 1、减1指令DEC 功能:将操作数所指定的单元内容减1。 格式: DEC A DEC Rn DEC direct DEC @Ri

  48. 信号灯的应用 任务1 程序设计 (三)从D0~D7灯逐个递亮后全灭(方法二) MOV R2,#8 MOV A,#0FEH LLSS: MOV P1,A RL A DEC A LCALL DELAY DJNZ R2,LLSS MOV P1,#0FFH

  49. 信号灯的应用 任务1 程序设计 (四)从D7~D0灯逐个递亮后全灭(方法一) MOV R2,#8 MOV A,#7FH RRSS: MOV P1,A CLR C RRC A LCALL DELAY DJNZ R2,RRSS MOV P1,#0FFH

  50. 信号灯的应用 任务1 程序设计 ☆新指令剖析 2、带借位减法指令SUBB 功能:从累加器ACC中减去源操作数所指出的数据及 进位标志位C的值,差值保存在累加器ACC中。 格式: SUBB A, Rn SUBB A, direct SUBB A, @Rn SUBB A, #data 例:若(A)=60H,(R3)=3BH,则执行以下指令后,(A)=? CLR C SUBB A,R3 ;(A)=60H-3BH-0H=25H

More Related