中等职业教材 《 单片机原理与应用 》
description
Transcript of 中等职业教材 《 单片机原理与应用 》
![Page 1: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/1.jpg)
中等职业教材《单片机原理与应用》
3.2 指令系统
—— 发光二极管的闪烁控制
新港职业学校 明月新
![Page 2: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/2.jpg)
一、情景导入——金陵夜景
![Page 3: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/3.jpg)
闪烁灯
![Page 4: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/4.jpg)
闪烁灯硬件电路
![Page 5: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/5.jpg)
二、知识回顾点亮 1个 LED 灯程序
ORG 0000H
LOOP : MOV P1,#0FEH
SJMP LOOP
END
![Page 6: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/6.jpg)
二、知识回顾点亮 8个 LED 灯程序
ORG 0000H
LOOP : MOV P1,#00H
SJMP LOOP
END
![Page 7: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/7.jpg)
思考问题怎样才能让灯不断地闪烁呢?
ORG 0000H
LOOP : MOV P1,#00H ; (8 个灯全亮 )
MOV P1,#0FFH ; (8 个灯全灭 )
SJMP LOOP
END
![Page 8: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/8.jpg)
修改程序,实现闪烁 ORG 0000H LOOP : MOV P1,#00H LCALL DELAY MOV P1,#0FFH LCALL DELAY SJMP LOOPDELAY : MOV R0 , #0FAH
D1 : MOV R1 , #0FAH
D2 : DJNZ R1 , D2 DJNZ R0 , D1
RET END
![Page 9: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/9.jpg)
二、知识回顾——指令复习
LCALL :
RET :
DJNZ :
DJNZ Rn , rel :
子程序调用指令
子程序返回指令
减 1 不为 0 转移指令
循环控制指令
当 Rn-1≠0 ,转到 rel 处;
当 Rn-1=0 ,往下执行。
MOV Rn , #DATA8 :循环次数设定指令
![Page 10: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/10.jpg)
三、明确学习目标
1. 理解 LED 闪烁灯的编程思路和实现方法,并看懂程序;
2. 会通过 Keil 软件及 STC—ISP 下载软件进行程序调试和仿真演示;
3. 掌握有关汇编指令的功能及应用;
4. 延时程序的理解以及根据延时时间修改延时程序。
![Page 11: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/11.jpg)
三、新课认知 1 .程序讲解 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 ;⑿
(设置起始地址伪指令) ( 8 个灯亮) (调用延时子程序,灯亮的时间)
( 8 个灯灭) (调用延时子程序,灯灭的时间)
(循环,转去执行 LOOP (标号))
(立即数为 250 ,送给 R0 ) (立即数为 250 ,送给 R1 )
(沿蓝色区域转圈 250 次,小循环)
(沿红色区域转圈 250 次,大循环) (返回)
(汇编结束伪指令)
![Page 12: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/12.jpg)
三、新课认知 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 毫秒
![Page 13: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/13.jpg)
四、仿真操作1. 双击 Keil uVision2 的桌面快捷方式 ;
2. 关闭工程并新建一个工程,保存并选择 CPU 型号 ; 3. 新建文本,输入源程序,保存源程序( .asm );
4. 源程序的编译与生成目标文件( HEX 文件);
5. 运行 STC—ISP 下载软件;
6 .打开单片机学习板电源,进行仿真演示。
![Page 14: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/14.jpg)
五、知识拓展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 ;
![Page 15: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/15.jpg)
五、知识拓展
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
![Page 16: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/16.jpg)
五、知识拓展
2 ) a. 如果将参数改为如下数值,可否实现闪烁效果?DELAY : MOV R0 , #05H D1 : MOV R1 , #05H
答:不可以。因为 t≈2×5×5=50 微秒 =0.05毫秒
![Page 17: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/17.jpg)
六、课堂小结1 .几个重要指令。
LCALL :子程序调用指令RET :子程序返回指令DJNZ :减 1 不为 0 转移指令 当 Rn-1=0 ,转到 rel; 当 Rn-1=0 ,往下执行。循环次数设定指令: MOV Rn , #DATA8(其中 #DATA8 就是循环次数值)循环控制指令: DJNZ Rn , rel(指令中 rel 常常由循环入口标号表示,如 D1 、 D2 )
![Page 18: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/18.jpg)
六、课堂小结2 .闪烁灯程序,并上机调试运行。
ORG 0000HLOOP : 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
![Page 19: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/19.jpg)
六、课堂小结
3 .通过修改程序改变闪烁现象;通过修改程序改变延时时间。
![Page 20: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/20.jpg)
七、布置作业——课后思考题
1 )停一个周期,用什么指令?(必做)
2 )一个单元中的数是否能超过 255 ?为什么?(必做)
3 )如果需要 f=5HZ,t =200ms ,即延时 200ms 怎么办? (选做)
4 )修改主程序,实现流水灯效果。(选做)
![Page 21: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/21.jpg)
金陵夜景
![Page 22: 中等职业教材 《 单片机原理与应用 》](https://reader033.fdocument.pub/reader033/viewer/2022061401/56814e57550346895dbbefb9/html5/thumbnails/22.jpg)
谢谢大家