220 likes | 357 Views
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. 设计范例 —— 按键及数码显示. 范例分析:
E N D
9 指令功能及汇编语言程序设计(三)
本讲主要内容: 9-1. 设计范例——按键及数码显示 9-2. 独立式按键与单片机的接口设计 9-3. 控制转移类指令(2) 9-4. 查表程序设计的基本方法 SiChuan Engineering Technical College-1959
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
9-1. 设计范例——按键及数码显示 • 范例分析: • 设计中要求用按键控制数码管的显示,此处涉及到按键的部分包含以下工作: • 如何得知按键是否按下。 • 按键按下后如何使数码管的显示内容加1。 • 设计中要求在数码管上循环显示数字0~9。根据上一课题的讲解,此处应采用循环程序的设计方法。 准备内容1 准备内容2 SiChuan Engineering Technical College-1959
9-2. 独立式按键与单片机的接口设计 • 独立式按键与单片机的接口 芯片内有上拉电阻 芯片内无上拉电阻 SiChuan Engineering Technical College-1959
9-2. 独立式按键与单片机的接口设计 • 键盘查询 • 按键在闭合和断开时,触点会存在抖动现象 SiChuan Engineering Technical College-1959
9-2. 独立式按键与单片机的接口设计 • 硬件消抖 硬件消抖在很大程度上可以降低抖动,但不能彻底根除。 SiChuan Engineering Technical College-1959
9-2. 独立式按键与单片机的接口设计 注意此处所查的电平状态要取决于电路特点。这一点十分重要。 N P3.0=0 用什么指令实现呢? Y 延 时 N P3.0=0 Y 按键没按下 按键按下 • 软件消抖 上图所用的软件消抖方法 SiChuan Engineering Technical College-1959
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
9-2. 独立式按键与单片机的接口设计——例1 例1:电路如下图所示,编程实现用按键K1控制数码管的显示,通过按下按键使数码管交替显示H和L。 SiChuan Engineering Technical College-1959
9-2. 独立式按键与单片机的接口设计——例1 • 解题思路 • 本例中要求显示的内容比较特殊,根据共阴数码管的显示特性及数码管与单片机的接口方式,首先计算H和L字符的显示段码: SiChuan Engineering Technical College-1959
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
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
9-4. 查表程序的设计 例2:电路如下图所示,编程实现在数码管上循环显示数字0~9,相邻数据之间间隔1秒。 SiChuan Engineering Technical College-1959
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
9-4. 查表程序的设计 • 可是数码管的段码有没有什么规律可找,怎么办呢? • 对于象案例中这种规律性不是很强,或计算比较困难的程序控制,可以考虑采用查表的方法来完成。 比如:1、数码显示;2、单片机通过D/A 转换器输出正弦波 查表 程序?? SiChuan Engineering Technical College-1959
9-4. 查表程序的设计 • 查表程序编写的一般方法 MOV DPTR,#TABLE;定义表的首地址,即表的标号 MOV A,?? ;把要查的数的序号赋给A MOVC A,@A+DPTR ;查表,结果存于A中 …… …… TABLE: DB ??,??,?? ;表定义,??代表各字节的内容,如果 DB ??,??,?? ;一行写不完,第二行以DB 开头继续 SiChuan Engineering Technical College-1959
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
9-4. 查表程序的设计——例2 • 例2的解决方案二 ——采用查表程序的设计方法 • 此题循环程序设计的关键: • 显示初值:0(存于30H单元) • 循环次数:10(存于R7中)(数据0~9,共10个数) • 显示内容:通过查表得到数码管的段码 为什么不放在A中呢? SiChuan Engineering Technical College-1959
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
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
9-1. 设计范例——按键及数码显示 • 参考流程: SiChuan Engineering Technical College-1959