1、1初级班注新授指令后()内数字为配套教材中页数第一次课1什么是单片机微型计算机由运算、控制、存储、输入、输出五部分组成。微型计算机 单片微型计算机2.单片机的用途凡是用到智能控制和自动控制的领域都离不开单片机。3数据利用 DP-801 单片机处理的信息全部用两位的十进制数表示。通常有两种形式的数据:带点数:表示存储单元的地址不带点数:表示指令、代码4输入、调试程序修改数据: +1/-1修改地址: D/A+ +1/-1练 习: 读取前 5 个单元格中的数据。CPU:运算、控制 AT89C2051 芯片存储:硬盘、U 盘 24C02 存储芯片输入:鼠标、键盘 5 个按键输出:显示器、打印机 数码管
2、、二极管0.0. 0.1. 0.2. 0.3. 0.4. 0.5. 0.6. 0.7. 0.8.00 05 02 04 01 15 RES +1 -1 D/A WRI2存储数据: WRI运行程序: D/A(1.0.)+ WRI【练习】1输入并运行程序0.0. 00 0500 0400 0300 0200 0100 0002 05 01152输入 1822 页上的 6 个实例,并运行程序。第二次课1电路在生活中,开灯关灯是我们最熟悉的事物了。在 DP-801 上,我们利用指令来实现开灯关灯。DP-801 单片机主板上的 6 个发光二极管的正极与电源正极相连,二极管的负极经限流电阻与输出口相连。2
3、接通指令(15)3接通指令功能:使 N 指向的输出口变为低电平,点亮发光二极管。DP-801单片机只有 8 个输出口,所以 N 的取值为 0007。其中 0005 在正常状态下表示 05 这 6 个发光二极管。结束指令功能:告诉单片机一段程序的结束。使用 DP801 单片机可以编写多段程序并能运行指定段的程序,就是靠结束指令来区分的。【例 1】点亮 5 号灯。0.0. 00 0515同学们会发现灯闪了一下就关上了,怎样延长灯亮的时间呢?3延时指令(16)M 03 时 02 分 01 秒 00 0.1 秒 延时指令功能:使 CPU 停止工作,保持上一条指令执行后的状态在延时时间内不变,数码管显示
4、倒计时。例如:延时 5 秒02 05 01延时 1.5 秒02 15 00【例 2】让 5 号灯亮 5 秒钟0.0. 00 0502 05 0115【例 3】让 0 号灯亮 5 秒,然后让 1 号灯亮 2 秒,最后让 2 号灯亮 10 秒。机器码 助记符指令名称操作码 操作数 操作码 操作数接通 00 0007 JT N结束 15 - JEISH -机器码 助记符指令名称操作码 操作数 操作码 操作数延时 02 (0199) (0003) YS N,M4大部分同学的实验结果是:0 号灯亮了 17 秒,1 号灯亮了 12 秒。因为一个灯点亮后,没有关闭,就点亮下一个灯了。3断开指令(17)断开指
5、令功能:使 N 指向的输出口变为高电平,使发光二极管关闭。【例 3】让 0 号灯亮 5 秒,然后让 1 号灯亮 2 秒,最后让 2 号灯亮 10 秒。0.0. 00 0002 05 0101 0000 0102 02 0101 0100 0202 10 0115【练习】点亮 6 个发光二极管,延时 5 秒。第三次课1转向指令(20)转向指令功能:又叫无条件转移指令,运行到这条指令,就转去执行 N 地址处的指令。【例 1】让 0 号灯闪起来,闪动间隔 0.5 秒。【例 2】让 0 号灯与 1 号灯交替闪起来,闪动间隔 0.5 秒。机器码 助记符指令名称操作码 操作数 操作码 操作数断开 01 0
6、007 DK N机器码 助记符指令名称操作码 操作数 操作码 操作数转向 10 0099(地址) ZX N闪点亮延时关闭延时0.0. 00 0002 05 0001 0002 05 0010 0015交替闪点亮 0 号延时关闭 0 号点亮 1 号延时关闭 1 号0.0. 00 0002 05 0001 0000 0102 05 0001 0110 00155【例 3】让 0,1,2 号灯模仿交通灯,0 号灯亮 5 秒,1 号灯亮 2 秒,2 号灯亮5 秒,无限循环。0.0. 00 0002 05 0101 0000 0102 02 0101 0100 0202 05 0101 0210 001
7、5(做什么用的?)标志吗?【练习】模仿十字路口的交通灯工作。西 东 北 南第四次课编写程序的过程可以分为四个步骤【例 1】让 0 号灯亮 5 秒钟第一步是画流程图。就是把任务用流程图的方式表示出来,形式直观,一目了然。见下图。第二步是根据流程图 中的任务选择指令,利用指令助记符形式来编写源程序。第三步是按照指令表的规定,把助记符指令翻译成机器码。机器码,也称作目标程序。只有目标程序才能输入到单片机中由 CPU 执行。第四步是给指令代码分配存储地址。DP-801 型单片机要求从存储器的第一个单元开始存放数据。第一个单元的地址号是 00,为了把地址号与存储数据区分开,通常把地址号记作“0.0.”
8、,写在第一条指令机器码的左边。安排存储地址,并不是在每个机器码的左边都写上地址号。而是只在每条指令的第一个机器码左边,写上分给它的一个地址号。第二步 第四步 第三步 源程序 地址 机器码 注释开始结束点亮 0 号发光二极管延时 5 秒关闭 0 号发光二极管6JT N 0.0. 00 00 ;点亮 0 号发光二极管YS N M 0.2. 02 05 01 ;延时 5 秒DK N 0.5. 01 00 ;关闭 0 号发光二极管JIESH 0.7. 15 ;结束【练习】1让 6 个发光二极管从前向后循环跑,延时 0.1 秒。2让 6 个发光二极管由前向后,再由后向前来回跑,延时 0.1 秒。 (23
9、 页练习)3顺序点亮 0 至 5 号发光二极管,再逆序关闭这 6 个发光二极管,循环。4让 0 号灯闪 5 次。5让 0 号灯与 5 号灯交替闪 3 次。第五次课【例 1】让 0 号灯闪 5 次。方法一:1500 0002 01 0101 0002 01 010.0.00 0002 01 0101 0002 01 0100 0002 01 0101 0002 01 0100 0002 01 0101 0002 01 0100 0002 01 0101 0002 01 015 段程序完全相同7这种方法简单,但使得程序冗长,浪费时间。如果闪的次数更多,实现起来困难。方法二:用调用子程序的方法(33
10、)调用指令功能:用于调用子程序。把程序中需要多次重复的一段程序作为子程序,需要的时候只要用调用指令就可以了。返回指令功能:由子程序返回到主程序中调用指令的下一条去执行。是子程序结束的标志。将方法一中需要重复的程序(0 号灯闪 1 次)作为子程序,写在主程序的后面,在主程序中连续调用 5 次,即可以实现让 0 号灯闪 5 次的效果,大大简化了程序。如下图所示:主程序一定从起始单元地址输入,然后再输入子程序。主程序与子程序之机器码 助记符指令名称操作码 操作数 操作码 操作数调用 12 0099(地址) DY N返回 13 - FH主程序子程序00 0002 01 0101 0002 01 011
11、312 M12 M12 M12 M12 M150.0.N:M:M 为子程序的起始地址需要重复循环的部分做子程序。8间可以空若干个单元,主程序以 15 为结束标志,子程序以 13 为结束标志。这种方法可以大大简化程序。【练习】1让 4 号灯闪 5 次。2让 2 号灯与 3 号灯交替闪 4 次。3让 6 个发光二极管由前向后,再由后向前来回跑 3 次。4顺序点亮 0 至 5 号发光二极管,再逆序关闭这 6 个发光二极管,循环 6 次。第六次课【例 1】让 0 号灯闪 3 次,然后 1 号灯闪 3 次,再让 2 号灯闪 3 次。主程序子程序 1 00 0002 01 0001 0002 01 001
12、312 M12 M12 M12 L12 L150.0.N:M:子程序 2 00 0102 01 0001 0102 01 0013L:子程序 3 00 0202 01 0001 0202 01 0013P:9当程序中出现多个子程序时,主程序从起始单元地址输入,然后输入子程序,多个子程序之间没有先后次序,执行的顺序由主程序来决定,每个子程序都以 13 为结束标志。【练习】1让 0 号灯闪 1 次,让 1 号闪 2 次,让 2 号闪 3 次,让 3 号闪 4 次,让 4 号闪5 次,让 5 号闪 6 次。2让 0、3 号灯交替闪 3 次,然后 1、4 号交替闪 3 次,再 2、5 号交替闪 3 次
13、,大循环。第七次课【练习】1让发光二极管按 0-5-4-1-2-3-4-1-0-5 的顺序跑,循环 3 次。2让发光二极管按 2-3-4-1-0-5-4-1-2-3 的顺序跑,循环 3 次。3让 0 号灯闪 3 次,然后从 0 跑到 5,再让 5 号灯闪 3 次,再从 5 跑到 0,大10循环。分析:这三道题有共同的特点,都用到了 6 个发光二极管的闪,将每个发光二极管闪一次的过程作为子程序。画图写指令分配地址上机提示:1. 子程序的起始单元地址最大只能为 9.9.2. 尽可能给主程序留出足够的空间。3数据范围 0099地址范围 0255第八次课1清用户程序(1)清成 15主程序 12 A12 B12 C12 D12 E150.0.N:子程序 1 00 0002 01 0001 0002 01 0013A:子程序 2 00 0102 01 0001 0102 01 0013B:子程序 3 00 0202 01 0001 0202 01 0013C:子程序 4 00 0302 01 0001 0302 01 0013D:子程序 5 00 0402 01 0001 0402 01 0013D:子程序 6 00 0502 01 0001 0502 01 0013D: