单片机教案3.docx

上传人:b****5 文档编号:3251980 上传时间:2022-11-21 格式:DOCX 页数:27 大小:119.75KB
下载 相关 举报
单片机教案3.docx_第1页
第1页 / 共27页
单片机教案3.docx_第2页
第2页 / 共27页
单片机教案3.docx_第3页
第3页 / 共27页
单片机教案3.docx_第4页
第4页 / 共27页
单片机教案3.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

单片机教案3.docx

《单片机教案3.docx》由会员分享,可在线阅读,更多相关《单片机教案3.docx(27页珍藏版)》请在冰豆网上搜索。

单片机教案3.docx

单片机教案3

常州轻工职业技术学院

单片机原理及应用课程授课教案NO6

授课日期

授课班级

课题

汇编语言程序设计基本概念、伪指令

授课类型

讲授

授课时数

教学

目的

重点

难点

指令助记符的概念和作用

标号作用

教具

挂图

微机、多媒体软件

教学

过程分配

主要教学内容

教学方法

的运用

15分钟

 

5分钟

 

10分钟

 

15分钟

 

15分钟

 

10分钟

 

20分钟

 

 

复习上堂课内容

 

第三章汇编语言程序设计

一、程序设计概述

(一)程序设计语言

1.机器语言

机器语言是用机器码编写程序。

能被计算机直接识别和执行。

2.汇编语言

汇编语言是用助记符编写程序。

汇编:

计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。

反汇编:

有时需要根据已有的机器语言程序,将其转化为相应的汇编语言程序,这个过程称为反汇编。

汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。

汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。

3.高级语言

高级语言是一种面向算法和过程并独立于机器的通用程序设计语言。

(二)MCS—51单片机汇编语言语句格式

标号:

操作符操作数;注释

START:

MOVA,30H;A←(30H)

1.标号

标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。

标号一般规定由1~8个英文字母或数字组成,但第一个符号必须是英文字母。

2.注释

注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。

(三)伪指令

伪指令:

伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。

MCS—51单片机主要有8条伪指令

1.定义起始地址伪指令ORG

ORG16位地址或标号

功能:

定义以下程序段的起始地址。

【例3-1】

地址指令代码 源程序

ORG0000H

0000H022000LJMPMAIN;上电转向主程序

ORG0023H ;串行口中断入口地址

0023H02XXXXLJMPSERVE1;转中断服务程序

ORG2000H;主程序

2000H758920MAIN:

MOVTMOD,#20H;设T1作方式2

2003H758DF3MOVTH1,#0F3H;赋计数初值

2006H758BF3MOVTL1,#0F3H

2009HD28ESETBTR1  ;启动T1

2.汇编语言结束伪指令END

END伪指令放在源程序的末尾,用来指示源程序到此全部结束。

3.赋值伪指令EQU

EQU用于给它左边的“字符名称”赋值,其格式为:

字符EQU操作数

操作数可以是8位或16位二进制数,也可以是事先定义的标号或表达式。

【例3-2】

ORG0500H

AAEQUR1

A10EQU10H

MOVR0,A10;R0←(10H)

MOVA,AA;A←(R1)

注意:

EQU伪指令中的字符必须先赋值后使用,故该语句通常放在源程序的开头。

4.数据地址赋值伪指令DATA

其格式为:

字符名称DATA表达式

DATA伪指令功能和EQU相类似,它把右边“表达式”的值赋给左边的”字符名称”。

这里的表达式可以是一个数据或地址,也可以是一个包含所定义字符名称在内的表达式。

DATA伪指令和EQU伪指令的主要区别是:

EQU定义的字符必须先定义后使用,而DATA伪指令没有这种限制,故DATA伪指令可用于源程序的开头或结尾。

5.定义字节伪指令DB

其格式为:

标号:

DB项或项表

项或项表:

可以是一个8位二进制数或一串8位二进制数(用逗号分开)。

数据可以采用二、十、十六进制和ASCll码等多种表示形式。

标号:

表格的起始地址(表头地址)。

指令的功能是把“项或项表”的数据依次定义到程序存储器的单元中,形成一张数据表(只是一张定义表,数据并未真正存入这些单元)。

6.定义字伪指令DW

其格式为

标号:

DW项或项表

DW伪指令的功能和DB伪指令相似,其区别在于DB定义的是一个字节,而DW定义的是一个字(即两个字节),因此DW伪指令主要用来定义16位地址(高8位在前,低8位在后)。

7.定义存储空间伪指令DS

其格式为:

标号:

DS表达式

DS伪指令指示汇编程序从它的标号地址开始预留一定数量的存储单元作为备用,预留数量由DS语句中“表达式”的值决定。

8.位地址赋值伪指令BIT

其格式为:

字符名称BIT位地址

将位地址赋值给指定的字符。

【例3-3】

K1BITP1.0

A2BIT20H

(四)机器汇编

试对如下源程序进行机器汇编:

举例说明:

ORG1000H

SUMDATA1FH

BLOCKDATA20H

START:

MOVR0,#BLOCK

MOVA,@R0

CJNEA,#00H,LOOP

HERE:

SJMPHERE

LOOP:

CLRA

NEXT:

INCR0

ADDA,@R0

DJNZBLOCK,NEXT

MOVSUM,A

SJMPHERE

END

(五)汇编语言程序设计步骤和基本程序结构

1.汇编语言程序设计步骤

(1)分析问题

(2)确定算法

(3)设计程序流程图

标准的流程图符号见下图:

(4)分配内存单元:

分配内存工作单元,确定程序和数据区的起始地址。

(5)编写汇编语言程序

(6)调试程序:

2.基本程序结构

包括顺序结构、分支结构、循环结构

3.程序质量的评判标准

(1)能可靠地实现系统所要求的各种功能

(2)本着节省存储单元,减少程序长度和加快运算时间的原则

(3)程序结构清晰、简捷,流程合理,各功能程序模块化、子程序化。

提问

 

讲解

 

举例并讲解

 

举例讲解

 

教师演示

 

讲解

 

举例讲解

 

教师演示

 

板书

 

图示

 

 

 

授课教师

常州轻工职业技术学院

单片机原理及应用课程授课教案NO7

授课日期

授课班级

课题

二、顺序结构程序设计

授课类型

讲授

授课时数

教学

目的

将教师实验室现场教学演示和学生练习结合起来,使学生更进一步掌握使用WAVE6000调试程序的方法;通过观察程序执行的顺序,更进一步掌握顺序程序的结构特点;通过教师的讲解,掌握顺序结构程序设计的要点

重点

难点

顺序结构程序设计的要点

教具

挂图

计算机,小哨兵软件,wave6000软件

教学

过程分配

主要教学内容

教学方法

的运用

10分钟

 

20分钟

 

10分钟

 

20分钟

 

10分钟

 

20分钟

 

1.顺序结构程序

【例3-4】编写运算程序。

设数a存放在R1中,数b存放在R2中,计算y=a2-b,并将结果放入R4和R5中。

ORG0000H

MOVA,R1

MOVB,A

MULAB

CLRC

SUBBA,R2

MOVR4,A

MOVA,B

SUBBA,#00H

MOVR5,A

SJMP$

END

 

学生练习:

计算y=(a-b)2

【例3-5】编写拆字程序。

将MCS—51片内RAM中20H单元中的高半字节送21H单元的低半字节,低半字节送22H单元的低半字节,两个单元的高半字节为0。

程序如下:

MOVA,20H

SWAPA

ANLA,#0FH

MOV21H,A

MOVA,20H

ANLA,#0FH

MOV22H,A

 

课堂练习:

1、将累加器A中的8位无符号数转换成3位压缩BCD数,百位数放20H单元,十位和个位数放21H单元,编写程序。

 

【例3-6】编写查表程序。

将十六进制数转换为ASCII码。

设1位十六进制数存在R0寄存器的低4位,转换后的ASCII码仍送回R0中。

解:

待转换的十六进制数为0~F。

根据ASCII码表可知,0~9的ASCII码为30H~39H,A~F的ASCII码为41H~46H。

将以上ASCII码值列成表格。

ORG0000H

MOVDPTR,#ASCTAB

MOVA,R0

ANLA,#0FH

MOVCA,@A+DPTR;A中为表格中数据的序号,DPTR中放表头地址

MOVR0,A

SJMP$

ASCTAB:

DB30H,31H,32H,33H,34H

DB35H,36H,37H,38H,39H

DB41H,42H,43H,44H,45H,46H

END

 

课堂练习:

要求学生改用MOVCA,@A+PC指令进行查表

讲解

 

巡回指导

 

巡回指导

 

教师讲解

 

巡回指导

 

 

 

授课教师

常州轻工业学校

单片机原理及应用课程授课教案NO8

授课日期

授课班级

课题

实验二顺序结构程序的调试

授课类型

讲授

授课时数

教学

目的

1、掌握顺序结构程序设计

2、掌握WAVE软件调试程序的方法.

重点

难点

掌握顺序结构程序设计

调试程序

教具

挂图

教学

过程分配

主要教学内容

教学方法

的运用

10分钟

实验二顺序结构程序的调试

一、实验目的:

1、掌握顺序结构程序设计

2、掌握WAVE软件调试程序的方法.

、实验内容:

编写下列程序并调试:

1、将片内RAM的70H单元的内容拆开,高4位送71H单元低4位,低4位送72H单元的低4位,71H、72H单元高4位清零。

2、将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H单元。

三、实验程序框图

程序1流程图

 

讲解

80分钟

 

程序2流程图

 

四、实验步骤:

程序1

①启动WAVE软件,新建一个文件,保存并取名为LX1.ASM。

②输入源程序1,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查70H、7lH和72H单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查7lH和72H单元中的内容,并记录在下表的右半边

⑥修改执行前70H、7lH和72H单元中的内容,重复执行④-⑤步骤,并记录程序执行后表格中的数据。

执行前的单元内容

执行后的单元内容

70H

71H

72H

71H

72H

 

程序2

①新建一个文件,保存并取名为LX2.ASM。

②输入源程序2,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查R2、R3和30H单元中的内容,并记录在下表左半边的格子中

④用全速执行命令开始执行程序

⑤检查30H单元中的内容,并记录在下表的右半边格子中

⑥修改执行前R2、R3、30H单元中的内容,重复执行④-⑤步骤,并记录程序执行后的数据。

执行前单元内容

执行后单元内容

R2

R3

30H

30H

 

(3)思考:

如何用断点方法调试本程序。

实验指导

 

 

 

授课教师

 

常州轻工职业技术学院

单片机原理及应用课程授课教案NO9

授课日期

授课班级

课题

三、分支结构程序设计

授课类型

讲授

授课时数

教学

目的

掌握程序设计基本方法和分支程序设计技巧

重点

难点

1.条件的建立与判断

2.分支的执行情况

教具

挂图

教学

过程分配

主要教学内容

教学方法

的运用

10分钟

 

10分钟

 

25分钟

 

10分钟

 

25分钟

 

10分钟

三、分支结构程序设计

在程序设计中,经常需要计算机对某情况进行判断,然后根据判断的结果选择程序执行的流向,这就是分支程序。

在汇编语言程序中,通常利用条件转移指令形成不同的程序分支。

1.单分支程序

【例3-7】在片内RAM30H单元中存有一个带符号数,试判断该数的正负性,若为正数,将6EH位清0;若为负数,将6EH位置1。

SUB1:

MOVA,30H;30H单元中的数送A

JBACC.7,LOOP;符号位等于1,是负数,转移

CLR6EH;符号位等于0,是正数,清标志位

RET;返回

LOOP:

SETB6EH;标志位置1

RET;返回

【例3-8】比较片内RAM的50H和51H单元中两个8位无符号数的大小,把大数存入60H单元,若两数相等则把标志位70H置1。

SUB:

MOVA,50H

CJNEA,51H,LOOP

SETB70H

RET

LOOP:

JCLOOP1

MOV60H,A

RET

LOOP1:

MOV60H,51H

RET

学生练习:

判断片内RAM的30H中的值在0~100之间的一个数。

(1)当它的值<60时点亮P1.0控制的红灯。

(2)当它的值≥90时点亮P1.1控制的绿灯。

(3)否则红灯、绿灯均不亮

2.多分支程序

【例3-9】20H单元中存放加、减、乘、除的运算标志0、1、2、3。

21H、22H存放两个数X、Y,运算结果存放在23H,24H单元中。

试根据20H单元的值,分别转向2KB范围内的加、减、乘、除处理子程序的入口处。

解:

 

程序流程图如图5—8所示。

 

FLAGEQU20H

XEQU21H

YEQU22H

RESULEQU23H

RESUHEQU24H

XYOP:

MOVDPTR,#TAB  ;取表首地址

CLRC;Cy清零

MOVA,FLAG;分支转移值送A

RLCA;A←A×2

JNCLP;判是否有进位

INCDPH;有进位则DPH加1

LP:

JMP@A+DPTR;散转到转移指令表

TAB:

AJMPADDXY ;转移指令表

AJMPSUBXY ;

AJMPMULXY

AJMPDIVXY

ADDXY:

MOVA,X

ADDA,Y

MOVRESUL,A

RET

SUBXY:

MOVA,X

CLRC

SUBBA,Y

MOVRESUL,A

RET

MULXY:

MOVA,X

MOVB,Y

MULAB

MOVRESUL,A

MOVRESUH,B

RET

DIVXY:

MOVA,X

MOVB,Y

DIVAB

MOVRESUL,A

MOVRESUH,B

RET

因散转指令JMP@A+DPTR中,A的内容为8位无符号数,故只能在DPTR地址后的256B范围内转移,而在该范围内是不可能容纳n个分支处理程序的,因此只能安排与之对应的n条转移指令表。

由于各条AJMP指令的地址依次相差2个字节,程序设计时应注意:

(1)A中的变址值必须作乘2修正,当修正后有进位,应将进位加到DPH上,这样才能与分支序号对应;

(2)分支处理程序的入口地址PRGi必须和AJMP指令处于同一个2KB区域:

(3)256B范围内最多可安排AJMP指令128条,即最多可实现128个分支程序的转移。

当分支范围较大,分支数目较多时,就不能满足第2条要求,为此可采用长转移指令LJMP,则分支程序可在64KB范围内分布。

此时转移指令表中各条LJMP指令的地址依次相差3个字节,同理应对A中的变址值作乘3修正。

可推算最多能实现85个分支程序的转移。

讲解

 

讲解

 

教师指导

 

讲解

 

程序分析

 

讲解

 

 

 

授课教师

 

常州轻工职业技术学院

单片机原理及应用课程授课教案NO10

授课日期

授课班级

课题

四、循环程序设计

授课类型

讲授

授课时数

教学

目的

将教师实验室现场教学演示和学生练习结合起来,使学生更进一步掌握使用WAVE6000调试程序的方法;通过观察程序执行的顺序,更进一步掌握循环程序的结构特点;通过教师的讲解,掌握循环结构程序设计的要点

重点

难点

循环结构程序设计的要点

教具

挂图

计算机,小哨兵软件,wave6000软件

教学

过程分配

主要教学内容

教学方法

的运用

10分钟

 

20分钟

 

20分钟

 

20分钟

 

20分钟

四、循环程序设计

循环程序设计不仅可以大大缩短所编程序的长度,使程序所占内存单元数最少,也能使程序结构紧凑和可读性变好。

(一)循环程序的基本结构

1.循环初始化

2.循环工作部分(是循环程序的主体,需要重复执行的程序段)

3.循环控制部分(完成对变量的修改)

4.循环终止判定部分

(二)循环结构程序设计

【例3-9】试编写程序,求片内RAM的30H~39H单元中数的和,将结果存放在R2和R3中。

ORG0000H

NSUN:

MOVR1,#10;数据块长度送R1,(计数器置初值) 

MOVR2,#00H ;R2清零

MOVR3,#00H ;R3清零

MOVR0,#30H ;数据块首地址送R0

LOOP:

MOVA,R3  

ADDA,@R0

MOVR3,A;和数的低字节送R3

CLRA

ADDCA,R2

MOVR2,A ;和数的高字节送R2

INCR0;修改地址指针

DJNZR1,LOOP ;数据未加完继续执行

RET

END

课堂练习:

试编程实现将内部RAM从2AH单元开始的6个字节的数据块送到外部RAM的0100H~0105H单元。

 

【例3-10】求一组单字节无符号数中最大值。

设内部RAM20H单元为数据块的起始地址,块长度为10,试编程求数据块中的最大值并存入30H单元中。

 

相应的程序为:

MOVR0,#20H ;数据块首地址送R0

MOVR6,#0AH ;数据块长度送R6

MOV30H,#00H;30H←00H

LOOP:

MOVA,@R0 ;数据块的数读入A中

CJNEA,30H,NEXT

NEXT:

JCLOOP1  ;(A)<(30H)转LOOP1

MOV30H,A  ;(A)>(30H)则大数送30H

LOOP1:

INCR0  ;修改数据块指针R0

DJNZR6,LOOP ;未比较完,转LOOP(循环)

SJMP$

思考:

1、若将程序中的JC指令改为JNC指令,要使程序功能不变,程序将作如何修改。

2、求最小数如何编程?

讲解

 

教师示范

 

教师指导

 

讲解

 

提问

 

 

 

授课教师

常州轻工业学校

单片机原理及应用课程授课教案NO11

授课日期

授课班级

课题

实验三分支和循环结构程序的调试

授课类型

讲授

授课时数

教学

目的

1、掌握分支和循环结构程序的设计

2、进一步掌握WAVE软件调试程序的方法.

重点

难点

分支和循环结构程序设计和调试

分支和循环程序设计

教具

挂图

教学

过程分配

主要教学内容

教学方法

的运用

10分钟

 

80分钟

 

实验三分支和循环结构程序的调试

一、实验目的:

1、掌握分支和循环结构程序的设计

2、进一步掌握WAVE软件调试程序的方法.

、实验内容:

编写下列程序并调试:

1、设a数已存放在累加器A中,b数已存放在寄存器B中,计算下式,并将结果y送入片内RAM的30H单元。

a+b(b≥0)

Y=

a-b(b<0)

2、将片内30H-3FH单元的内容清零。

3、从片内RAM的20H单元开始,有30个带符号数据,统计出正数的个数,并将结果存到35H单元中。

讲解实验要求

 

实验指导

 

 

三、实验程序框图

 

程序1流程图程序2流程图

四、实验步骤:

程序1

①启动WAVE软件,新建一个文件,保存并取名为LX3.ASM。

②输入源程序1,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查A、B和30H单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查30H单元中的内容,并记录在下表的右半边

执行前的单元内容

执行后的单元内容

A

B

30H

30H

⑥修改执行前A、B中的内容,重复执行④-⑤步骤,并记录表格中执行后的数据。

 

程序2

①新建一个文件,保存并取名为LX4.ASM。

②输入源程序2,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查30H-3FH单元中的内容,如果是零值,将它们修改为非零值。

④用全速执行命令开始执行程序

⑤检查30H-3F单元中的内容,是否全为零。

⑥修改执行前30H-3F单元中的内容,重复执行④-⑤步骤,重新检查30H-3F单元中的内容。

程序3

①启动WAVE软件,新建一个文件,保存并取名为LX5.ASM。

②输入源程序3,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查35H、20H-3DH单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查35H单元中的内容,并记录在下表的右半边

执行前的内容

执行后的内容

20H-3DH

35H

35H

 

 

 

⑥修改执行前20H-3DH中的内容,重复执行④-⑤步骤,并记录执行后的数据。

 

课后小记

 

授课教师        

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1