1 / 22

中等职业教材 《 单片机原理与应用 》

中等职业教材 《 单片机原理与应用 》. 3.2 指令系统 —— 发光二极管的闪烁控制. 新港职业学校 明月新. 一、情景导入 —— 金陵夜景. 闪烁灯. 闪烁灯硬件电路. 二、知识回顾. 点亮 1 个 LED 灯程序. ORG 0000H. LOOP : MOV P1,# 0FE H. SJMP LOOP. END. 二、知识回顾. 点亮 8 个 LED 灯程序. ORG 0000H. LOOP : MOV P1,# 00 H. SJMP LOOP. END. 思考问题. 怎样才能让灯不断地闪烁呢?. ORG 0000H.

krista
Download Presentation

中等职业教材 《 单片机原理与应用 》

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. 中等职业教材《单片机原理与应用》 3.2 指令系统 ——发光二极管的闪烁控制 新港职业学校 明月新

  2. 一、情景导入——金陵夜景

  3. 闪烁灯

  4. 闪烁灯硬件电路

  5. 二、知识回顾 点亮1个LED灯程序 ORG 0000H LOOP:MOV P1,#0FEH SJMP LOOP END

  6. 二、知识回顾 点亮8个LED灯程序 ORG 0000H LOOP:MOV P1,#00H SJMP LOOP END

  7. 思考问题 怎样才能让灯不断地闪烁呢? ORG 0000H LOOP:MOV P1,#00H ;(8个灯全亮) MOV P1,#0FFH ;(8个灯全灭) SJMP LOOP END

  8. 修改程序,实现闪烁 ORG 0000H LOOP:MOV P1,#00H LCALL DELAY MOV P1,#0FFH LCALL DELAY SJMP LOOP DELAY:MOV R0,#0FAH D1: MOV R1,#0FAH D2: DJNZ R1,D2 DJNZ R0,D1 RET END

  9. 二、知识回顾——指令复习 LCALL: 子程序调用指令 RET: 子程序返回指令 DJNZ: 减1不为0转移指令 循环控制指令 DJNZ Rn,rel: 当Rn-1≠0,转到rel处; 当Rn-1=0,往下执行。 循环次数设定指令 MOV Rn,#DATA8:

  10. 三、明确学习目标 1.理解LED闪烁灯的编程思路和实现方法,并看懂程序; 2.会通过Keil软件及STC—ISP下载软件进行程序调试和仿真演示; 3.掌握有关汇编指令的功能及应用; 4.延时程序的理解以及根据延时时间修改延时程序。

  11. 三、新课认知1.程序讲解 (设置起始地址伪指令) ORG 0000H ;① LOOP:MOV P1,#00H;② (8个灯亮) (调用延时子程序,灯亮的时间) LCALL DELAY ;③ MOV P1,#0FFH ;④ (8个灯灭) LCALL DELAY ;⑤ (调用延时子程序,灯灭的时间) SJMP LOOP ;⑥ (循环,转去执行LOOP(标号)) DELAY:MOV R0,#0FAH ; ⑦ (立即数为250,送给R0) D1: MOV R1,#0FAH;⑧ (立即数为250 ,送给R1) D2: DJNZ R1,D2;⑨ (沿蓝色区域转圈250次,小循环) DJNZ R0,D1;⑩ (沿红色区域转圈250次,大循环) RET ;⑾ (返回) END;⑿ (汇编结束伪指令)

  12. 三、新课认知2.程序讲解 计算精确的延时时间为多少微秒 (晶振频率=12MHZ)? (延时子程序如下: DELAY: MOV R0,#0FAH D1: MOV R1,#0FAH D2: DJNZ R1,D2 DJNZ R0,D1 RET ) 答:t=1+(1+2×250+2)×250+2≈2×250×250 =125000微秒=125毫秒

  13. 四、仿真操作 1. 双击Keil uVision2的桌面快捷方式 ; 2.关闭工程并新建一个工程,保存并选择CPU型号; 3. 新建文本,输入源程序,保存源程序(.asm); 4.源程序的编译与生成目标文件(HEX文件); • 5.运行STC—ISP下载软件; 6.打开单片机学习板电源,进行仿真演示。

  14. 五、知识拓展 1.修改源程序,实现: 1)P1口1、3、5、7灯亮灭闪烁; 2)P1口2、4、6、8灯亮灭闪烁; 3)P1口1、2、3、4灯一直亮,5、6、7、8灯亮灭闪烁; 4)P1口5、6、7、8灯一直亮,1、2、3、4灯亮灭闪烁; 答:1)将指令MOV P1,#00H修改为MOV P1,#55H; 2)将指令MOV P1,#00H修改为MOV P1,#0AAH; 3)将指令MOV P1,#0FFH修改为MOV P1,#0F0H; 4)将指令MOV P1,#0FFH修改为MOV P1,#0FH;

  15. 五、知识拓展 2.1)通过程序中参数的调整,来改变LED的闪烁频率 (延时时间)(f=10HZ, t =100ms)。 分析:t≈2×200×250 =100000微秒=100毫秒=0.1秒 DELAY:MOV R0,#0C8H;#200 D1: MOV R1,#0FAH ;#250

  16. 五、知识拓展 2)a.如果将参数改为如下数值,可否实现闪烁效果? DELAY:MOV R0,#05H D1: MOV R1,#05H 答:不可以。 因为t≈2×5×5=50微秒=0.05毫秒

  17. 六、课堂小结 1.几个重要指令。 LCALL:子程序调用指令 RET:子程序返回指令 DJNZ:减1不为0转移指令 当Rn-1=0,转到rel; 当Rn-1=0,往下执行。 循环次数设定指令:MOV Rn,#DATA8(其中#DATA8就是循环次数值) 循环控制指令:DJNZ Rn,rel (指令中rel常常由循环入口标号表示,如D1、 D2)

  18. 六、课堂小结 2.闪烁灯程序,并上机调试运行。 ORG 0000H LOOP:MOV P1,#00H LCALL DELAY MOV P1,#0FFH LCALL DELAY SJMP LOOP DELAY: MOV R0,#0FAH D1: MOV R1,#0FAH D2: DJNZ R1,D2 DJNZ R0,D1 RET END

  19. 六、课堂小结 3.通过修改程序改变闪烁现象; 通过修改程序改变延时时间。

  20. 七、布置作业——课后思考题 1)停一个周期,用什么指令?(必做) 2)一个单元中的数是否能超过255?为什么?(必做) 3)如果需要f=5HZ,t =200ms,即延时200ms怎么办? (选做) 4)修改主程序,实现流水灯效果。(选做)

  21. 金陵夜景

  22. 谢谢大家

More Related