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