1 / 22

指令功能及汇编语言程序设计(三)

9. 指令功能及汇编语言程序设计(三). 本讲主要内容:. 9-1. 设计范例 —— 按键及数码显示 9-2. 独立式按键与单片机的接口设计 9-3. 控制转移类指令( 2 ) 9-4. 查表程序设计的基本方法. 9-1. 设计范例 —— 按键及数码显示. P3.5. P3.4. P3.3. P3.2. P1.0. P1.1. P1.3. P1.2. P0 口. 要求利用按键控制数码管的显示内容,按键 K1 每按一下使最左侧的数码管显示加 1 ,从 0 — 9 依次循环。. 9-1. 设计范例 —— 按键及数码显示. 范例分析:

lynne
Télécharger la présentation

指令功能及汇编语言程序设计(三)

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. 9 指令功能及汇编语言程序设计(三)

  2. 本讲主要内容: 9-1. 设计范例——按键及数码显示 9-2. 独立式按键与单片机的接口设计 9-3. 控制转移类指令(2) 9-4. 查表程序设计的基本方法 SiChuan Engineering Technical College-1959

  3. 9-1. 设计范例——按键及数码显示 P3.5 P3.4 P3.3 P3.2 P1.0 P1.1 P1.3 P1.2 P0口 • 要求利用按键控制数码管的显示内容,按键K1每按一下使最左侧的数码管显示加1,从0—9依次循环。 SiChuan Engineering Technical College-1959

  4. 9-1. 设计范例——按键及数码显示 • 范例分析: • 设计中要求用按键控制数码管的显示,此处涉及到按键的部分包含以下工作: • 如何得知按键是否按下。 • 按键按下后如何使数码管的显示内容加1。 • 设计中要求在数码管上循环显示数字0~9。根据上一课题的讲解,此处应采用循环程序的设计方法。 准备内容1 准备内容2 SiChuan Engineering Technical College-1959

  5. 9-2. 独立式按键与单片机的接口设计 • 独立式按键与单片机的接口 芯片内有上拉电阻 芯片内无上拉电阻 SiChuan Engineering Technical College-1959

  6. 9-2. 独立式按键与单片机的接口设计 • 键盘查询 • 按键在闭合和断开时,触点会存在抖动现象 SiChuan Engineering Technical College-1959

  7. 9-2. 独立式按键与单片机的接口设计 • 硬件消抖 硬件消抖在很大程度上可以降低抖动,但不能彻底根除。 SiChuan Engineering Technical College-1959

  8. 9-2. 独立式按键与单片机的接口设计 注意此处所查的电平状态要取决于电路特点。这一点十分重要。 N P3.0=0 用什么指令实现呢? Y 延 时 N P3.0=0 Y 按键没按下 按键按下 • 软件消抖 上图所用的软件消抖方法 SiChuan Engineering Technical College-1959

  9. 9-3. 控制转移类指令(2) 注意:指令JBC和JB是不同的。 • 位控制转移指令组 • JC rel ;如果(Cy)=1,跳到目标语句 • JNC rel ;如果(Cy)=0,跳到目标语句 • JNB bit, rel ;如果(bit)=0,跳到目标语句 • JB bit, rel ;如果(bit)=1,跳到目标语句 • JBC bit, rel ;如果(bit)=1,跳到目标语句 ; 同时将bit位清0 例: JB P1.0 , LOOP JBC P1.1 , LOOP1 SiChuan Engineering Technical College-1959

  10. 9-2. 独立式按键与单片机的接口设计——例1 例1:电路如下图所示,编程实现用按键K1控制数码管的显示,通过按下按键使数码管交替显示H和L。 SiChuan Engineering Technical College-1959

  11. 9-2. 独立式按键与单片机的接口设计——例1 • 解题思路 • 本例中要求显示的内容比较特殊,根据共阴数码管的显示特性及数码管与单片机的接口方式,首先计算H和L字符的显示段码: SiChuan Engineering Technical College-1959

  12. 9-2. 独立式按键与单片机的接口设计——例1 P3.0=0? N Y 延时消抖 N P3.0=0? Y 标志位取反 标志为1吗? N Y 结论A 结论B • 此题中只需在每次判断按键后,按键确实按下的前提下,将标志位取反即可。 • 程序是根据按键来反复切换显示内容的,对于这种在两种状态间变化的问题,可通过在程序中设置标志位(因为一位的状态只有0和1两种状态),并检测标志位的状态来实现,如左侧流程图所示: SiChuan Engineering Technical College-1959

  13. 9-2. 独立式按键与单片机的接口设计——例1 P3.0=0? N Y 延时消抖 F0是什么? N P3.0=0? Y 标志位取反 标志为1吗? N Y 结论A 结论B ORG 0000H MAIN:MOV P1,#00H CLR F0;将标志位F0清0作准备 KEY:JB P3.0,JCBZ LCALL DEL12 JB P3.0,JCBZ CPL F0 JCBZ: JNB F0,XH MOV P1,#38H;显示L SJMP KEY XH: MOV P1,#76H;显示H SJMP KEY SiChuan Engineering Technical College-1959

  14. 9-4. 查表程序的设计 例2:电路如下图所示,编程实现在数码管上循环显示数字0~9,相邻数据之间间隔1秒。 SiChuan Engineering Technical College-1959

  15. 9-4. 查表程序的设计 这样实在是太麻烦了,就没有好的方法吗?能用循环的方法实现吗? • 解决方案一: • 用上一课题的循环程序设计的方法 ORG 0000H MAIN: MOV P1,#0C0H LCALL DEL MOV P1,#0F9H LCALL DEL MOV P1,#0A4H LCALL DEL ……… SiChuan Engineering Technical College-1959

  16. 9-4. 查表程序的设计 • 可是数码管的段码有没有什么规律可找,怎么办呢? • 对于象案例中这种规律性不是很强,或计算比较困难的程序控制,可以考虑采用查表的方法来完成。 比如:1、数码显示;2、单片机通过D/A 转换器输出正弦波 查表 程序?? SiChuan Engineering Technical College-1959

  17. 9-4. 查表程序的设计 • 查表程序编写的一般方法 MOV DPTR,#TABLE;定义表的首地址,即表的标号 MOV A,?? ;把要查的数的序号赋给A MOVC A,@A+DPTR ;查表,结果存于A中 …… …… TABLE: DB ??,??,?? ;表定义,??代表各字节的内容,如果 DB ??,??,?? ;一行写不完,第二行以DB 开头继续 SiChuan Engineering Technical College-1959

  18. 9-4. 查表程序的设计 1、表格中每个数据占据一个存储单元时,使用DB进行定义,例如: TAB1:DB 0D4H,48H,22H,51H DB 04H,96H,03H,95H 2、表格中每个数据占据二个存储单元时,使用DW进行定义,例如: TAB2:DW 100H,1ACH,814 DW 567,546H,2345,890 • 表格构造方法 • 表格的内容:表格可由数据、字符、地址等内容构成。 • 表格的特点:表格可由多行构成,每一行以伪指令DB或DW开头,相邻数据间以“,”间隔,最后不加“,”。 SiChuan Engineering Technical College-1959

  19. 9-4. 查表程序的设计——例2 • 例2的解决方案二 ——采用查表程序的设计方法 • 此题循环程序设计的关键: • 显示初值:0(存于30H单元) • 循环次数:10(存于R7中)(数据0~9,共10个数) • 显示内容:通过查表得到数码管的段码 为什么不放在A中呢? SiChuan Engineering Technical College-1959

  20. 9-4. 查表程序的设计——例2 ORG 0000H MAIN:MOV 30H,#00H MOV R7,#10 MOV DPTR,#TAB L1: MOV A,30H MOVC A,@A+DPTR MOV P1,A LCALL DEL INC 30H DJNZ R7,L1 SJMP MAIN SiChuan Engineering Technical College-1959

  21. 9-4. 查表程序的设计——例2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H 思考: 1、为什么不将待显示的数字存于A中,而存于30H中? 2、每次查表后得到的显示段码,存在什么地方? 3、若将效果改为9~0循环,在不更改段码表的前提下,如何修改程序? SiChuan Engineering Technical College-1959

  22. 9-1. 设计范例——按键及数码显示 • 参考流程: SiChuan Engineering Technical College-1959

More Related