Microsoft Word - 第3章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第3章.doc"

Transcription

1 第 3 章 51 单片机对中断的控制 中断的概念很容易理解, 例如我们在看书的时候, 电话铃突然响了, 这时我们在书中夹一个书签, 然后去接电话, 接完电话以后, 根据书签的指示, 重新开始阅读 可以说这个电话铃响是一个中断源, 中断了我们的阅读 当中断任务完成以后, 继续进行阅读, 这就是一个中断响应的过程 单片机处理的方式与此是非常类似的, 本章就来学习 51 单片机如何处理这一过程 3.1 流水灯汇编程序的改进 也许很多读者疑惑不解, 本章明明学习的是 51 单片机的中断, 为什么还要再去讨论流水灯呢? 因为中断程序的执行, 还是在流水灯的基础上实现的 另外, 在本章给大家提供一组更灵巧的流水灯编程方法 而本节中非常重要的一点是讲解软件仿真的方法 无论是单片机编程, 还是其他软件类的编程, 软件仿真将会帮助我们快捷地调试出程序 流水灯程序改进的思路 流水灯程序是按如图 3-1 所示的顺序执行的, 第 2 章的关于流水灯的编程也是根据这个图编写出来的 程序虽然直观, 但是代码就显得有点臃肿, 可以说, 第 2 章的流水灯是重复性的引用相同的语句, 这样的代码效率是非常低的 那么怎样写出优质的程序呢? 图 3-1 流水灯执行流程如图 3-2 所示, 从中能不能找出 P1 口数值变化的规律呢? 按照箭头的指示, 在图中 0 是在不断地向左移动, 而 P1 的状态从 FEH 变化至 7FH, 每次都是执行向右移动一位, 右边最高位重新返回到第 0 位, 这种移动方法称之为循环右移 如图 3-3 所示, 归纳了 P1 端口的变化情况, 经过此循环左移, 程序完成了一次流水, 让这个过程不断的重复下去, 就可以实现流水灯功能了 非常幸运的是, 汇编语言和 C 语言都有关于左移的程序语句来供我们使用, 那么怎样

2 第 3 章 51 单片机对中断的控制 来完成整个过程呢? 请看流程图, 如图 3-4 所示 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1 值 (16 进制 ) FEH FDH FBH F7H EFH DFH BFH FH 图 3-2 端口 P1 数值变化的规律 1 图 3-3 P1 口循环变化的规律 2 图 3-4 改进流水灯执行方案 图 3-4 给出了程序设计方案的流程图 在这里运用了一个计数变量来帮助我们统计循 77

3 简简单单学通 51 单片机开发 环的次数 首先, 给 P1 赋初值, 给计数变量赋值 8, 表示执行循环 8 次 然后 P1 移位一次, 调用延时子函数, 计数变量减 1, 并判断计数变量是否为 0, 如果不为 0, 就继续移位 ; 如果为 0, 表示完成了 8 次移位, 再回到程序起始位置重新赋值, 开始下一次的循环 改进后的汇编语言流水灯 谈到了新方法, 就得用到新的语句, 在编程之前先介绍几条汇编指令 1. 汇编语言移位指令组 (1) 循环左移 : RL A 这里的 A 就是在第 2 章中讲到的累加器 A 或 ACC, 这条指令只能使用累加器 A 假设当前累加器 A 的状态为 : 则移位以后它的值为 : A.7 A.6 A.5 A.4 A.3 A.2 A.1 A.0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 A.7 A.6 A.5 A.4 A.3 A.2 A.1 A.0 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit7 这个左移方法和上一节讲到的流水移位过程是一样的 说明运用这条语句可对原流水灯程序进行改进 (2) 循环右移 : RR A 假设当前累加器 A 的状态为 : 则移位以后它的值为 : A.7 A.6 A.5 A.4 A.3 A.2 A.1 A.0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 A.7 A.6 A.5 A.4 A.3 A.2 A.1 A.0 Bit0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 这条语句和循环左移是对应的, 所有的数据位都向右移, 数据 0 位移到数据 7 位 (3) 带进位循环左移 : RLC A 这条指令就有所不同了 第 2 章讲到了程序状态字寄存器 PSW, 它的最高位为进位标 志位 CY 或 C 在这条指令中, 进位标志位 C 和累加器 A 共同参与了移位 假设当前累加器 A 的状态和进位标志位 C 的状态分别为 : C ACC v Bit7 Bit6 Bit5 Bit5 Bit3 Bit2 Bit1 Bit0 当移位以后它们的状态为 : C ACC Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 v 78

4 第 3 章 51 单片机对中断的控制 可以看到, 累加器 A 的最高位移动到 C 上, 而 C 的状态则传送给累加器的最低位 (4) 带进位循环右移 : RRC 假设当前累加器 A 的状态和进位标志位 C 的状态分别为 : C ACC V Bit7 Bit6 Bit5 Bit5 Bit3 Bit2 Bit1 Bit0 当移位以后它们的状态为 : C ACC Bit0 v Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 执行完一次位循环左移指令,C 的状态移位给累加器的最高位, 而累加器的最低位移位给 C 2. 减 1 条件转移指令 : (1) 寄存器减 1 条件转移指令 : DJNE Rn,rel 指令中的 Rn 就是我们第 2 章介绍的寄存器区的 R0~R7, 这条指令可以随便使用 R0~R7 中的任何一个 rel 表示的是程序跳转的地址, 注意两个操作数之间必须有一个逗号隔开 该指令的执行流程, 如图 3-5 所示 图 3-5 指令执行过程 (2) 直接地址减 1 条件转移指令 : DJNE direct,rel 第二条指令和第一条非常相似, 只不过用了直接的地址来表示 Direct 表示的是直接的 RAM 地址, 主要指低 128 单元数据寄存器, 除了我们当前用的工作寄存器组, 其他都可以是 Direct 的区域 如图 3-6 所示, 假设使用工作组 1 作为我们当前的寄存器组, 其他的区域都为 Direct 区 该指令的执行流程图, 如图 3-7 所示 3. 改进流水灯汇编语言编程思路 列出了流水灯改进的两条重要的汇编 图 3-6 Direct 区域描述 79

5 简简单单学通 51 单片机开发 指令, 大家注意到移位指令只能对累加器进行操作, 所以特殊寄存器 P1 不能直接参与运算, 只可以通过累加器用做数据传送 图 3-7 指令功能描述 DJNZ 指令既可以在完成变量的减 1 指令, 又可以完成跳转指令, 所以根据这两条指令的特点来对流程图进行修改, 如图 3-8 所示 图 3-8 改进流水灯汇编语言程序流程图 在流程图 3-8 中, 我们用 R0 作为减 1 判断的寄存器, 当然我们也可以用 R1~R7 中的任何一个, 也可以用直接地址 4. 根据流程图来编写程序根据流程图来编写程序, 如图 3-9 所示 80

6 第 3 章 51 单片机对中断的控制 图 3-9 利用流程图来编写程序 将程序整理一下, 完整的汇编程序如下所示 ORG 0000H JMP MAIN ORG 0030H MAIN: MOV R0,#08h MOV A,#0FEh loop: MOV P1,A CALL DELAY1S RL a DJNZ R0,loop LJMP MAIN DELAY1S: MOV R4,#4 LOOP3: MOV R5,#255 LOOP2: MOV R6,#245 LOOP1: NOP NOP DJNZ R6,LOOP1 DJNZ R5,LOOP2 DJNZ R4,LOOP3 RET ;R0 为计数变量 ;A 为流水灯初值 ; 将 A 的值传递给 P1 ; 循环左移指令, 只能对 A 执行 ; 判断是否完成了 8 次循环 ; 延时一秒子程序 该程序相较于第 2 章的流水灯程序语句减少了很多 实际上这段程序的执行效率和占用 ROM 空间要远小于第 2 章所讲的流水灯程序 81

7 简简单单学通 51 单片机开发 软件仿真介绍 程序编写好后, 建立一个汇编语言项目, 进行程序的编译, 生成可执行程序文件, 然后在 Proteus 中重新仿真一次, 观察程序走向是否正确, 在这里就不再赘述了 在本节将向大家介绍一种调试软件的方法, 在 Keil 环境下进行软件仿真, 这种方法非常实用, 希望大家好好掌握 假设已将改进后的流水灯汇编程序建立了一个项目, 如图 3-10 所示 图 3-10 新流水灯汇编项目界面 (1) 将程序进行一次编译, 如图 3-11 所示 这个步骤必不可少, 必须保障编译成功才可仿真 编译的输出结果如图 3-12 所示, 可以看到项目中没有警告, 也没有错误 图 3-11 将程序重新编译 82 图 3-12 编译输出结果

8 第 3 章 51 单片机对中断的控制 (2) 设置程序调试, 按照图 3-13 所示的操作步骤打开调试设置选项 图 3-13 目标项目设置选项 1 按照图 3-14 所示的操作步骤来设置软件仿真, 一般情况下这样的设置为 Keil 的默认选项, 但为了保险起见, 我们还是要重新设置一下 2 点选 Use Simulator 1 选择 Debug 图 3-14 软件仿真设置方法 (3) 单击仿真按钮, 开始仿真 如图 3-15 所示的箭头所指处为仿真按钮, 此按钮的快捷键为 Ctrl+F5 83

9 简简单单学通 51 单片机开发 图 3-15 仿真按钮 单击仿真按钮以后, 就会出现如图 3-16 所示的界面, 这就是仿真界面 程序执行窗口表示当前程序执行的情况, 黄色箭头所指处是当前将要执行的语句 反汇编窗口是将程序重新汇编, 让我们更直观地看到每条语句在程序寄存器的位置 黄色箭头指示的是当前将要执行的语句 寄存器窗口显示的是 51 单片机最常用的寄存器, 在图中可以看到累计器 A 寄存器 B R0~R7 等寄存器 信息输出窗口表示的是一些仿真信息 通过窗口, 可以观察一些有用的变量, 仿真过程中这个窗口是很重要的 图 3-16 仿真界面 (4) 添加 P1 的观察窗口 流水灯项目主要观察的是 P1 口的变化情况, 可以添加一个 P1 口的观察窗口, 按如图 3-17 所示的步骤操作 84

10 第 3 章 51 单片机对中断的控制 图 3-17 设置 P1 口观察窗口 当然, 其他端口的寄存器也可以调出来 在后面的章节讲到定时器和串口等外设的时候, 也可以调出相应的寄存器 (5) 在观察窗口时, 可以观察 P1 的状态, 如图 3-18 所示 输入 P1 以后, 效果如图 3-19 所示 图 3-18 观察窗口设置 1 图 3-19 观察窗口设置 2 85

11 简简单单学通 51 单片机开发 (6) 进行单步仿真 如图 3-20 所示的菜单为单步仿真按钮, 单击这个按钮程序就会模拟内部执行的方法向前走一步, 也可按快捷键 F11 来完成这个操作 图 3-20 单步执行按钮 单步仿真, 并观察各个窗口的变化 当程序执行完 MOV R0,#08h 这条语句时, 如图 3-21 所示, 在寄存器窗口, 我们可以看到 R0 已经变成 0X08, 在反汇编和主程序执行窗口, 黄色的指示箭头已经指向了下一条语句 MOV A,#0FEh 注意一个重要的寄存器 PC, 在第 2 章讲到它表示程序计数器 在反汇编窗口,PC 的值随着程序的走向在不断地递增, 这个寄存器同时也可以表示每段程序在程序存储器中的位置 图 3-21 程序执行的效果图 (7) 当执行完语句 MOV P1,A, 在主程序执行窗口的黄色箭头就会指向下一条程序 CALL DELAY1S, 如图 3-22 所示 此时可以观察一下 P1 窗口和 watch 窗口中 P1 的值, 它们都指示 P1 的值为 0XFE 因为前一条语句将 0XFE 传送给 A, 所以执行完此条语句 P1 的值就变成了这样 86

12 第 3 章 51 单片机对中断的控制 图 3-22 观察 P1 的值 (8) 继续单步仿真, 就进入了延时子程序, 如图 3-23 所示, 如果继续单步仿真的话, 将耗费大量的时间在延时子程序中不断地循环 此外, 延时子程序不是我们主要执行的程序, 那么如何跳出延时子程序的执行呢? 图 3-23 延时子程序的执行 如果想跳出一个子程序时, 可单击如图 3-24 所示的按钮, 这个按钮为跳出子程序按钮, 也可以按快捷键 Ctrl+F11 来完成这个操作 图 3-24 跳出子程序按钮如果遇到一个子程序, 需要计算机自动完成, 有一个按钮可以帮助我们实现这一过程, 如图 3-25 所示, 这个按钮称为跳过子程序命令, 它的快捷键为 F10 如果执行一般的程序指令, 它的执行和单步执行的效果是一样的, 如果遇到子程序调用, 单击这个按钮, 系统将帮助我们自动执行子程序里面的内容 当程序执行到图 3-22 所示的效果的时候, 使用这一命令, 就可快速执行完 CALL DELAY1S 这个子程序, 然后转向下一条语句 RL A 87

13 简简单单学通 51 单片机开发 图 3-25 跳过子程序按钮 (9) 想让程序执行到指定的行, 但是不想一步步地执行, 还有一个按钮来帮助我们 首先将鼠标光标定位到想到达的位置, 然后单击如图 3-26 所示的按钮, 程序就会自动执行, 直到到达我们指定的位置才会停止, 该命令的快捷键为 Ctrl+F10 图 3-26 程序自动执行到光标所在行 (10) 如果想让程序全速执行而不是逐条语句仿真, 可以通过如图 3-27 所示的全速运行按钮来实现 这个命令是让计算机模拟单片机全速运行, 该命令的快捷键为 F5 图 3-27 自动运行命令按钮在自动运行程序的过程中, 可以看到 P1 的值在不断地发生变化, 这与在 Proteus 仿真中小灯在不同时刻的变化是一样的道理 我们观察 P1 口的变化比在 Proteus 中变化的速度要快, 这是因为我们在设置仿真选项中, 没有设置 严格按照实际时间 选项 单击如图 3-28 所示的按钮可以停止自动执行 在程序陷入死循环无法停止的情况下, 同样可以使用这个命令 88

14 第 3 章 51 单片机对中断的控制 图 3-28 停止自动运行按钮 想让程序回到开始执行的位置时, 可以单击如图 3-29 所示的按钮将程序复位 这个按钮和第 1 章所讲的复位电路的按键功能一样, 都是让程序恢复到初始位置 图 3-29 程序复位按钮 (11) 再次单击仿真按钮就会停止仿真, 如图 3-30 所示 图 3-30 停止仿真在这一节讲解了软件仿真的方法, 读者要多多练习, 尽可能掌握这种方法, 因为在后面章节会运用这种方法来进行程序的调试 不管是单片机还是其他可编程器件, 软件仿真都得到了广泛的运用, 所以学习好这方面的内容还是非常重要的 3.2 流水灯 C 语言的改进 在本节将讲解流水灯 C 语言改进方案, 这和汇编语言实现的思路几乎没有区别, 主要通过此节介绍一些 C 语言的知识 同样,C 语言也可以进行软件仿真, 而且比汇编语言更 89

15 简简单单学通 51 单片机开发 加直观, 本节将重点介绍这方面的知识 新流水灯 C 语言设计思路 1.C 语言指令介绍 1) 自增 自减运算符 自增 1 运算符记为 ++, 其功能是使变量的值自增 1 自减 1 运算符记为 --, 其功能是使变量的值自减 1 自增 1 和自减 1 运算有下列几种形式 ++i:i 自增 1 后再参与其他运算 --i:i 自减 1 后再参与其他运算 i++:i 参与运算后,i 的值再自增 1 i--:i 参与运算后,i 的值再自减 1 对于初学者来说, 比较容易出错的是 ++i 和 i++, 在编程的时候要格外注意 2) 移位指令 C 语言也有自己的移位命令, 但和汇编语言有所区别, 下面来了解一下 例如,P1<<1: 表示 P1 逐位向左移动一位 ;P1<<n: 表示 P1 逐位向左移动 n 位 同样,P1>>1: 表示 P1 逐位向右移动一位 ;P1>>n: 表示 P1 逐位向右移动 n 位 但是要注意,C 语言的移位并不像汇编语言那样是循环移动的, 假设 P1 的状态为 0XFE 则 : P1=0XFE 左移一位为 : P1=0XFC 再左移一位为 : P1=0XF 再左移一位为 : P1=0XF 在上例中, 右边的位不断向左移动, 但左边的最高位并不返回, 右边移空的位置用 0 代替 再看看 C 语言右移指令的效果, 同样假设 P1 的状态为 0XFE 则 : P1=0XFE 右移一位为 : P1=0X7F 再右移一位为 : P1=0X3F 再右移一位为 : P1=0X1F 可以看到, 左边的位不断向右移动, 但右边的最低位并不返回到左边最高位, 左边移 空的位置用 0 代替 从这两个例子我们看到,C 语言的左移和右移是不循环的 90

16 第 3 章 51 单片机对中断的控制 3) 循环左移 右移子程序虽然 C 语言中没有专门用来循环左移或循环右移的运算符, 但是 C 语言有强大的库函数, 在库函数中有专门的循环左移或循环右移的子程序来让我们调用 它们分别是 _crol_ 和 _cror_ _crol_ 为循环左移子程序,_cror 为循环右移子程序 我们举个例子来说明这两个子程序的用法 假如, 要将 P1 循环左移一位, 则调用的格式为 P1=_crol_(P1,1), 如果循环左移两位为 P1=_crol_(P1,2), 非常方便吧 _cror_ 是循环右移子程序, 调用的格式和循环左移是一样的 由于调用的是子函数, 所以我们必须文件包含 #include<intrins.h>,intrins.h 是包含这两个子程序的库函数文件 C 语言还有很多这样的库函数可供我们调用, 从这点来说学习 C 语言是相当重要的 4) 复合的赋值运算符在赋值符 = 之前加上其他二目运算符可构成复合赋值符, 如 += -= *= /= %= <<= >>= &= ^= = 例如 : a+=5 等价于 a=a+5 x*=7 等价于 x=x*7 r<<=1 等价于 r=r<<1 复合赋值符这种写法, 对初学者来说可能不习惯, 但十分有利于编译处理, 能提高编译效率并产生质量较高的目标代码 随着学习的深入, 读者会慢慢体会到这种编程方法带来的便捷 5)for 语句在 C 语言中,for 语句的使用最为灵活, 它完全可以取代 while 语句 它的一般形式为 : for( 表达式 1; 表达式 2; 表达式 3) 语句 for 语句的执行过程, 如图 3-31 所示 进入 for 循环后, 先执行表达式 1 的语句, 表达式 1 一般进行循环变量的初始化 ; 而表达式 2 一般作为判断语句, 判断循环变量条件是否达到指定的要求 ; 如果符合循环条件, 就执行循环体中的程序语句, 再执行表达式 3 的语句 表达式 3 对循环变量递增或递减, 用于控制循环的次数 ; 每一次循环都会执行表达式 2, 判断循环变量是否仍符合循环的条件, 如果不符合, 则跳出 for 循环 上面的讲述方法大家可能不是很好理解,for 语句最简单的应用形式如下 : for( 循环变量赋初值 ; 循环条件 ; 循环变量增量 ) 语句 ; 或 for( 循环变量赋初值 ; 循环条件 ; 循环变量增量 ) { 语句 ;} 循环变量赋初值是一个赋值语句, 它用来给循环控制变量赋初值 ; 循环条件是一个关系表达式, 它决定什么时候退出循环 ; 循环变量增量, 定义循环控制变量每循环一次后, 按什么方式变化 这三个部分之间用 ; 分开 图 3-31 for 语句执行过程 91

17 简简单单学通 51 单片机开发 例如 : for(i=1; i<=100; i++)sum=sum+i; 先给 i 赋初值 1, 然后判断 i 是否小于等于 100, 若是, 则执行语句, 之后值增加 1, 再重新判断 i 是否小于等于 100, 直到条件为假, 即 i>100 时, 结束循环 for 语句的执行相当于如下的 while 语句 : i=1; while(i<=100) { sum=sum+i; i++; } 2. 用 C 语言来编写流水灯 流水灯的 C 程序流程图, 如图 3-32 所示 在汇编语言中, 用寄存器 R0 作为计数变量, 在 C 语言中声明了一个无符号字符型的变量 j 作为计数变量, 在图中虚线箭头指向的三条程序流程共同构成了 for 语句的功能, 通过这个流程图大家尝试编写程序吧 图 3-32 新流水灯的 C 程序流程图 92

18 第 3 章 51 单片机对中断的控制 现将程序整理一下, 完整代码如下所示 #include <at89x52.h> //keil 的库函数, 包括声明的寄存器 #include<intrins.h> void Delay500ms(); // 声明一个延时子函数 main() //C 语言程序开始执行的标志 { unsigned char data j; // 声明一个计数变量 while(1) // 循环语句 { P1=0XFE; for(j=8;j>0;j--) //for 语句 { Delay500ms(); P1=_crol_(P1,1); // 调用循环左移程序 //P1<<=1; // 这条程序不参与程序执行, 它被注释掉了 } } } void Delay500ms() // 延时子函数名字 { unsigned char i,j,k; for(i=200;i>0;i--) for(j=20;j>0;j--) for(k=250;k>0;k--); } 可以看到, 新的流水灯程序的代码比原来的流水灯程序少很多, 程序执行更紧凑 这段程序的执行效率更高, 耗费程序内部资源更少 将此程序在 Keil 中重新建立一个 C 语言项目, 通过编译以后, 生成 hex 文件, 然后在 Proteus 中仿真, 观察程序执行的效果如何 硬件电路图使用第 2 章的图 2-30 就可以了 在程序中, 注释了一条语句 : //P1>>=1; 这是一个 P1 左移语句, 因为在程序中有了循环左移的程序 在这里提出来, 就是想让大家在实际仿真中比较一下这两种语句执行的区别 如果大家想观察循环左移的效果, 就按照上面的程序进行编译 如果想观察左移的效果, 则可以将循环左移的语句注释掉, 恢复 P1>>=1 的执行 //P1=_crol_(P1,1); P1<<=1; 软件仿真 C 语言项目 前面讲过了汇编语言进行软件仿真的方法, 本节将介绍 C 语言实现软件仿真的方法 其实它们的仿真过程基本是一样的, 但还是有一些区别值得我们注意 (1) 首先 C 语言的项目文件必须经过了编译, 并且保证没有错误, 如图 3-33 所示 93

19 简简单单学通 51 单片机开发 图 3-33 新流水灯 C 语言项目 (2) 进行仿真设置, 按照如图 3-34 所示的操作方式, 打开仿真设置菜单, 如图 3-35 所示 1 右击 Target 1 2 左击此选项 图 3-34 仿真设置方法 1 图 3-35 仿真设置方法 2 94

20 第 3 章 51 单片机对中断的控制 一般情况下, 执行 C 语言仿真, 需要勾选 Run to main() 选项, 因为 C 语言的执行是从主函数开始的, 也就是 main() 函数 如果这个选项没有被勾选, 则程序的运行是从启动文件开始的 在图 3-35 中, 选择 limit Speed to Real-Time 选项, 就是为了保证在仿真的运行和实际执行的时间是一样的 在讲汇编语言仿真时, 没有选择这个选项, 所以在程序运行过程中比实际的速度要快 为了保证仿真的时间和实际执行的时间是一致的, 我们还需按如图 3-36 所示的步骤, 将模拟仿真的晶振调整到 12MHZ 图 3-36 仿真晶振设置 (3) 单击仿真按钮, 开始仿真, 如图 3-37 所示 图 3-37 仿真按钮仿真效果如图 3-38 所示 在图中, 我们同样看到了反汇编窗口,Keil 自动将 C 语言转化为汇编语言 事实上,C 程序不能直接生成可执行代码, 它需要先转化为汇编语言, 这个过程叫做程序汇编, 因为汇编语言是直接控制硬件的语言 进入仿真界面后, 程序执行如图 3-39 所示, 黄色的箭头指向了 P1=0XFE, 因为变量的声明和循环语句不参与程序的执行, 所以程序是从这条语句开始执行的 同样我们可以添加 P1 的窗口, 在 watch1 窗口中添加 P1 和计数变量 j, 如图 3-39 所示 这些变量添加方法和汇编语言是完全相同的, 此处不再介绍 95

21 简简单单学通 51 单片机开发 反汇编窗口 图 3-38 C 语言仿真界面 图 3-39 添加观察窗口 在 C 语言仿真中也可以使用单步执行 跳过子程序执行 跳出子程序执行 运行到光标处, 大家可以尝试操作一下 (4) 全速运行程序, 如图 3-40 所示, 单击 运行 按钮或按快捷键 F5 开始运行程序 图 3-40 运行程序如图 3-41 所示为程序全速运行的效果图 程序中采用的是循环左移的方法来执行程序的, 我们可以看到 P1 口的变化过程, 变化的速度和 Proteus 仿真小灯变化的速度是一样的 96

22 第 3 章 51 单片机对中断的控制 图 3-41 循环左移, 运行过程中 P1 变化状态 (5) 如果我们想采用左移的方式观察 P1 口的变化状态, 需要退出仿真状态, 如图 3-42 所示为退出仿真按钮 (6) 按照如图 3-43 所示的修改方法对程序进行修改, 注释掉循环左移程序, 让左移程序发挥作用 图 3-42 退出仿真按钮 图 3-43 修改程序 (7) 重新编译, 如图 3-44 所示, 对程序再次进行编译 (8) 再次进入仿真, 如图 3-45 所示 假如我们对程序进行了修改, 必须重新编译以后进行仿真才能看到效果 若没有编译的过程, 则还是按照原程序的方式执行 图 3-44 重新编译程序 图 3-45 再次仿真 (9) 单击开始运行按钮, 如图 3-46 所示 图 3-46 修改后的程序运行 97

23 简简单单学通 51 单片机开发 程序运行的效果, 如图 3-47 所示, 可以看出循环左移和左移有明显的区别 图 3-47 左移运行过程中 P1 变化状态 3.3 外中断控制概述 本节将通过一个开关控制流水灯的实例来学习外中断控制 在第 2 章中编写过一个开关流水灯程序, 但遗留下一个开关控制不彻底的问题, 本节就来解决这个问题 本节在前面两节的基础上, 添加新的知识点实现控制 中断对于单片机的控制非常重要, 用中断的方法可以彻底解决问题 单片机的中断源 在章首讲了电话铃声打扰我们看书的例子, 电话响了是一个中断源 传统的 51 单片机有 3 类共 5 个中断源, 分别是两个外部中断 两个定时中断 一个串行中断 AT89C52 在此基础上增加了一个定时中断 一个串行中断, 所以 AT89C52 单片机共有 7 个中断源 1. 外部中断 外部中断是由外部信号引起的中断 如图 3-48 所示,51 单片机共有两个外部中断源, 即外部中断 0 和外部中断 1 它们的中断请求信号来自于 P3.2 和 P3.3 引脚的第二功能 INT0 和 INT1 本节将运用外中断来实现开关控制 图 单片机外中断引脚 2. 定时中断定时中断是为满足定时器定时或计数的需要而设置的, 具体内容在后面章节中将会讲到 3. 串行中断串行中断是为了串行数据传输的需要而设置的 在介绍串行通信的时候会给大家详细地讲解 98

24 第 3 章 51 单片机对中断的控制 外部中断的执行方式 1. 外部中断的触发方式 (1) 外部中断的触发有两种信号方式, 即电平触发和脉冲触发 电平触发 :51 单片机在上电复位以后,P0 P1 P2 和 P3 4 个端口电平都是高电平, 当外部中断设置为电平触发时, 单片机在中断请求口 (INT0 和 INT1) 采样有效的低电平就激活了外部中断 (2) 脉冲触发 : 当输入的信号正好是下降沿的脉冲信号时, 就可以激活外部中断 中断请求信号的高电平和低电平的状态至少应该维持一个机器周期, 以确保电平变化能被单片机采样到 如果我们用的晶振频率是 12MHZ, 则这一时间应该大于 1μs 两种触发方式是由设置相应的寄存器来实现的 2. 外中断响应 中断响应就是对中断源提出的中断请求的接受, 当单片机查询到中断的时候, 紧接着就是中断的响应, 看下面程序 : ORG 0000h JMP MAIN ORG 0030H Main: 在程序中, 启动后保留了 30H 的地址, 这部分地址就是为中断响应准备的地址, 各中断响应地址如表 3-1 所示 表 3-1 各中断响应地址 中断源外部中断 0(INT0) 定时 / 计数器 0(TF0) 外部中断 1(INT1) 定时 / 计数器 1(TF1) 串行通讯 (RI+TI) 中断地址 0003H~000AH 000BH~0012H 0013H~001AH 001BH~0022H 0023H~002AH 表 3-1 是 51 单片机为中断保留的地址 假如中断发生, 程序就转到这些预留的地址 假设单片机采样到外中断 0 发生了, 程序自动跳转到程序存储器的地址 0003H, 在编写汇编语言的时候, 常在此处放置一条跳转指令, 跳到中断服务程序的地址 3. 外中断寄存器介绍 (1) 定时器控制寄存器 (TCON), 如表 3-2 所示 表 3-2 定时器控制寄存器位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位符号 IE1 IT1 IE0 IT0 99

25 简简单单学通 51 单片机开发 其实这个寄存器主要为定时器准备的, 所以将这个寄存器叫做定时器控制寄存器, 此寄存器有 4 个位和外中断有关, 其它位的定义将在讲到定时器时再介绍, 该寄存器在内部 RAM 高 128 单元的地址为 88H IT1=0: 外中断 1 采用电平触发的方式 ;IT1=1: 外中断 1 采用脉冲触发的方式 IT0=0: 外中断 0 采用电平触发的方式 ;IT0=1: 外中断 0 采用脉冲触发的方式 IE1: 外中断 1 请求标志位, 当外中断 1 发生,IE1 自动置 1, 中断响应完成以后, 单片机自动清零 IE0: 外中断 0 请求标志位, 当外中断 0 发生,IE0 自动置 1, 中断响应完成以后, 单片机自动清零 (2) 中断允许控制寄存器 (IE), 如表 3-3 所示 表 3-3 中断允许控制寄存器位地址 0AFH 0AEH 0ADH 0ACH 0ABH 0AAH 0A9H 0A8H 位符号 EA EX1 EX0 寄存器在内部 RAM 高 128 单元的地址为 0A8H, 在这里涉及 3 个位和外中断有关, 其它位都是为其他中断控制准备的 EA 中断允许中控制位,EA=0: 中断总禁止 ;EA=1: 中断总允许 这位相当于一个总的中断开关 EX1=0: 禁止外中断 1;EX1=1: 允许外中断 1, 前提是 EA=1 EX0=0: 禁止外中断 0;EX0=1: 允许外中断 0, 前提是 EA= 外中断控制电路 第 2 章完成了一个开关控制流水灯电路, 我们发现当开关断开后流水灯仍然工作, 开关控制效果并不理想 下面我们将这个电路进行一点修改, 如图 3-49 所示, 图中使用外中断 0 来完成此次任务 图 3-49 新开关控制流水灯电路 100

26 第 3 章 51 单片机对中断的控制 在本次实例中选用了点动开关, 如图 3-50 所示, 它和复位电路使用的开关是一样的 在第 2 章用的是单刀双掷开关, 在这里选用点动开关, 因为要让外中断处于脉冲触发的方式 来分析一下 P3.2(INT0) 电平的变化, 没有按下开关的时候, 处于高电平的状态, 当按下开关以后, 触点随后会自动弹开, 让 P3.2(INT0) 端的电平重新处于高电平的状态, 这就形成了一个下降沿脉冲信号, 如图 3-51 所示 图 3-50 运用点动开关实现控制 图 3-51 P3.2 端口电平变化 脉冲中断方式中断请求信号的高电平和低电平的状态至少应该维持一个机器周期 这一点完全可以达到, 我们手触开关的时间远远大于 1 us, 所以大家不必担心无法触发外部中断 3.4 汇编语言控制外中断 本节将用汇编语言完成流水灯程序的方法, 是在前面改进流水灯程序的基础上对程序进行修改 修改的内容并不多, 通过汇编语言控制流水灯, 能更清晰地理解单片机执行中断的过程 汇编知识介绍 在编写程序之前, 需要介绍汇编语言的逻辑运算指令 1. 逻辑运算 51 单片机逻辑运算包括逻辑与 逻辑或 逻辑异或 3 种, 这些指令大部分是需要累加器 A 参与的 1) 逻辑与运算 ANL A,Rn 累加器的值和 Rn 的值逐位相与, 最终值放入 A 中 101

27 简简单单学通 51 单片机开发 假设 A 原来的值为 FEH,R0 的值为 3FH: A FEH R FH 执行完逻辑与指令后 A 的值变为 3EH,R0 的值仍为 3FH: A EH R FH 其他逻辑与运算指令为 : ANL A,direct ; 将 A 的值与 direct 地址里的值相与, 结果放入 A 中 ANL A,#data ; 将 A 的值直接与立即数 data 逐位相与, 结果放入 A 中 ANL direct,a ; 将 direct 地址的值与 A 逐位相与, 结果放入地址 direct 中 ANL direct,#data ; 将 direct 地址的值直接与立即数 data 逐位相与, 结果放入地址 direct 中 2) 逻辑或运算 ORL A, Rn 累加器的值和 Rn 的值逐位相或, 最终值放入 A 中 同样, 假设 A 原来的值为 FEH,R0 的值为 3FH: A FEH R FH 执行完逻辑或指令后 A 的值变为 FFH,R0 的值仍为 3FH: A FFH R FH 其他逻辑或运算指令为 : ORL A,direct ORL A,#data ; 将 A 的值直接与立即数 data 相或, 结果放入 A 中 ORL direct,a ; 将 direct 地址的值与 A 相或, 结果放入地址 direct 中 ORL direct,#data; 将 direct 地址的值直接与立即数 data 相或, 结果放入地址 direct 中 3) 逻辑异或指令 异或指令的逻辑规则是相同出 1, 不同出 0 XRL A,Rn 累加器的值和 Rn 的值逐位相或, 最终值放入 A 中 同样, 假设 A 原来的值为 C1H,R0 的值为 3FH: A C1H R FH 执行完逻辑异或指令后,A 的值变为 FEH,R0 的值仍为 3FH: A FEH R FH 其他逻辑异或运算指令为 : XRL A,direct ; 将 A 的值与 direct 地址里的值相异或, 结果放入 A 中 XRL A,#data ; 将 A 的值直接与立即数 data 相异或, 结果放入 A 中 XRL direct,a ; 将 direct 地址的值与 A 相异或, 结果放入地址 direct 中 XRL direct,#data; 将 direct 地址的值直接与立即数 data 相异或, 结果放入地址 direct 中 102

28 第 3 章 51 单片机对中断的控制 4) 累加器 A 清 0 和取反指令累加器清 0 指令 : CLR A 将累加器 A 的值清 0 或将 0 赋值给 A, 等同于 MOV A,#0 累加器逐位取反 : CPL A 将累加器 A 的值逐位取反 例如 : 执行取反指令前 A 的值为 FEH A 执行完此指令后 A 的值为 01H A 位操作指令在这里介绍几组可直接对位进行操作的指令 1) 位与运算进位标志位 C 或在位运算中的作用相当于字节运算中的累加器 A, 很多位运算都用到了进位标志位 C, 此外我们用 bit 表示在单片机中所有可以寻址访问的位 ANL C,bit ANL C, /bit ; 表示 C 的状态和 bit 的状态相与, 结果放入 C 中 ; 表示 C 的状态和 bit 位取反的状态相与, 结果放入 C 中 2) 位或运算 ORL C,bit ORL C, /bit ; 表示 C 的状态和 bit 的状态相或, 结果放入 C 中 ; 表示 C 的状态和 bit 位取反的状态相或, 结果放入 C 中 3) 位取反指令 CPL C CPL bit ; 表示将 C 的状态取反 ; 表示将 bit 的状态取反 4) 位置 1 SETB C SETB bit ; 将 1 赋值给 C ; 将 1 赋值给 bit 5) 位复位 CLR C CLR bit ; 将 0 赋值给 C ; 将 0 赋值给 bit 3. 程序返回指令 1) 子程序返回指令 RET 所有的子程序在最后一行都必须有这个命令, 例如前面用过的延时子程序的最后一句 : 103

29 简简单单学通 51 单片机开发 DELAY1S: RET 2) 中断服务子程序返回指令 RETI 所有的中断服务程序后面必须有这条指令, 在下面的程序中马上就会用到 编写中断控制汇编语言 在本节就来编写外中断控制程序 编程之前, 先给出流程图, 如图 3-52 所示 程序实现的最后效果是当上电复位以后, 流水灯正常工作, 当点动开关以后, 流水灯马上停止工作, 再一次点动开关, 流水灯重新开始执行 在程序中, 设置了一个标志位 : 自定义中断标志位 当中断发生时, 这个标志位的状态取反, 在主程序中不断查询这个标志位的状态, 当此标志位状态为 1 时, 不执行流水灯程序 ; 如果状态为 0 时, 则执行流水灯程序 这个流程图是在原有的流水灯的流程图的基础上改的 如果在流水灯执行的过程中, 发生了中断, 则自动跳到中断服务子程序, 当中断服务子程序执行完毕以后, 自动返回到刚才中断的位置 根据图 3-52 所示, 我们来共同完成汇编程序 : 104 ORG 0000h JMP MAIN ; 跳到主程序 ORG 0003H ; 中断相应地址 JMP inte_addr ; 跳转到外中断服务子程序地址 ORG 0030H ; 限制主程序在 0030H 以后 MAIN: SETB EA ; 开启总的中断开关 SETB EX0 ; 开启外中断 0 中断开关 SETB IT0 ; 设置中断方式位脉冲方式 CLR 20H.0 ; 自定义中断标志位 MOV R0,#08h re_lp: MOV A,#0FEh loop: JB 20H.0,loop ; 判断自定义中断标志位的状态 MOV P1,A CALL DELAY1S RL a DJNZ R0,loop ljmp re_lp DELAY1S: ; 延时一秒的子程序 MOV R4,#4 LOOP3: MOV R5,#255 LOOP2: MOV R6,#245 LOOP1: NOP NOP DJNZ R6,LOOP1 DJNZ R5,LOOP2 DJNZ R4,LOOP3 RET

30 第 3 章 51 单片机对中断的控制 inte_addr: ; 中断服务程序地址 CPL 20H.0 ; 取反自定义中断标志位 RETI ; 中断返回指令 END 图 3-52 汇编语言控制外中断流程图 105

31 简简单单学通 51 单片机开发 大家仔细阅读一下这段程序, 对照流程图, 应该可以理解这段程序 在程序中, 用位地址 20H.0 作为自定义中断标志位, 表示在内部 RAM 低 128 单元中 direct 区的第 20H 个字节的第一位 在 Proteus 中仿真效果 为刚完成的程序建立一个 Keil 项目 将这个项目进行编译, 保证程序中没有错误, 就可以在 Proteus 中进行仿真了, 如图 3-53 所示 图 3-53 中断控制汇编语言项目单击 开始仿真 按钮, 观察流水灯是否正常执行, 如图 3-54 所示 当按动一下开关, 流水灯马上停止了工作 ; 重新按动开关, 流水灯又重新开始了工作, 证明了程序是没有问题的 图 3-54 中断控制流水灯执行效果 106

32 第 3 章 51 单片机对中断的控制 3.5 用 C 语言完成中断控制 上一节介绍了用汇编语言完成中断流水灯的控制, 同样也可以用 C 语言来完成这一功能 在中断程序的执行中,C 语言的编程方法更加简单, 有了一定汇编语言的基础, 相信大家能更好地掌握 C 语言中断的控制方法 C 语言相关知识介绍 先来介绍一点 C 语言的基础知识吧 1.C 语言的关系运算符我们在前面学过了 == 号, 其他关系运算符还有 :<( 小于 ) <=( 小于或等于 ) >( 大于 ) >=( 大于或等于 ) ==( 等于 )!=( 不等于 ) 2.C 语言逻辑运算 C 语言中提供了 3 种逻辑运算符 :&&( 与运算 ) ( 或运算 )!( 非运算 ) C 语言逻辑运算的分为 真 和 假 两种, 用 1 和 0 来表示 其求值规则介绍如下 1) 与运算 && 参与运算的两个量都为真时, 结果才为真, 否则为假 例如,(a>0) &&(b>2): 如果 a>0 为真 (1),b>2 也为真 (1), 相与的结果就为真 (1) 如果它们中有一个为假, 则结果就为假 (0) 2) 或运算 参与运算的两个量只要有一个为真, 结果就为真 两个量都为假时, 结果为假 例如,(a>0) (b>8): 如果这两个条件有一个为真 (1), 则结果就为真 (1) 如果这两个条件都为假 (0), 则结果就为假 (0) 3) 非运算! 参与运算量为真时, 结果为假 ; 参与运算量为假时, 结果为真 例如,!(a>0): 假如 (a>0) 这个条件为真 (1), 则结果就为假 (0) 相反如果(a>0) 这个条件为假 (0), 则结果就为真 (0) 3.C 语言位运算符和汇编语言一样, 位运算符是按位判断的, 如下所示 107

33 简简单单学通 51 单片机开发 & 按位与 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 (1) 按位与运算符 & 是参与运算的两个数各对应的二进位相与 例如 : & 十进制 : 9&5=1 (2) 按位或运算符 是参与运算的两个数各对应的二进位相或 只要对应的 2 个二进位有一个为 1 时, 结果位就为 1 例如: 十进制 : 9 5=13 (3) 按位异或运算符 ^ 参与运算的两个数各对应的二进位相异或, 当两个对应的二进位相异时, 结果为 1 例如: ^ 十进制 : 9^5=13 (4) 求反运算符 ~ 为单目运算符, 其功能是对参与运算的数的各二进位按位求反 例如,~9 的运算为 : ~( ) 结果为 : 局部变量和全局变量 C 语言中的变量, 按作用域范围可分为两种, 即局部变量和全局变量 局部变量也称为内部变量 局部变量是在函数内做定义说明的 其作用域仅限于函数内, 离开该函数后使用该变量是非法的 main() { int s,a; { int b; s=a+b; } // 局部变量 全局变量也称为外部变量, 它是在函数外部定义的变量 它不属于哪一个函数, 而属于一个源程序文件, 其作用域是整个源程序 在函数中使用全局变量, 一般应做全局变量

34 第 3 章 51 单片机对中断的控制 说明 只有在函数内经过说明的全局变量才能使用 全局变量的说明符为 extern 但在一个函数之前定义的全局变量, 在该函数内使用可不再加以说明 int a,b; main() { int b; s=a+b; } Son( ) { int b; s=a+b; } // 全局变量 // 子函数 5.break 和 continue 语句 1)break 语句 break 语句通常用在循环语句和开关语句中 如图 3-55 所示, 当 break 语句用于 do-while for while 循环语句中时, 可使程序终止循环而执行循环后面的语句, 通常 break 语句总是与 if 语句联在一起, 即满足条件时便跳出循环 简单来说,break 语句是跳出当前循环 2)continue 语句 continue 语句的作用是跳过循环中剩余的语句而强行执行下一次循环, 其执行过程如图 3-56 所示 continue 语句用在 for while do-while 等循环体中, 常与 if 条件语句一起使用, 用来加速循环 break 语句是跳出当前循环, 而 continue 语句则是重新开始当前循环 图 3-55 break 语句执行过程 图 3-56 continue 语句执行过程 109

35 简简单单学通 51 单片机开发 6.C51 中断服务程序的编写 C51 中断服务程序的格式是固定的 : 中断服务程序名称 interrupt( 中断号 )using( 使用工作寄存器组序号 ) C51 中断序号如表 3-4 所示 表 3-4 C51 中断序号定义中断序号对应的中断 0 外部中断 0 1 定时 / 计数器 0 溢出中断 2 外部中断 1 3 定时 / 计数器 1 溢出中断 4 串行口中断 前面讲到 51 单片机的寄存器区 (RAM 地址 00H~1FH) 有四组寄存器, 每组包含 8 个寄存器, 为 R0~R7 在 C51 中, 是隐含使用的, 表示在编程过程中, 我们不能直接使用, 而是被系统使用 通过执行寄存器组序号, 指定让系统使用哪种寄存器, 如表 3-5 所示 表 3-5 C51 寄存器组序号寄存器组序号使用哪组寄存器 0 寄存器组 1 1 寄存器组 2 2 寄存器组 3 3 寄存器组 4 假设我们要使用外中断 0 服务程序, 则可以命名为 extr0 () interrupt 0 using 编写 C 语言外中断程序 在编写程序之前, 我们先来列出 C 语言控制外中断程序的流程图, 如图 3-57 所示 根据流程图 3-57 来编写出 C 语言程序 : #include <at89x52.h> #include<intrins.h> void Delay500ms(); void timer0 (void); bit b=0; main() { unsigned char data j; EA=1; EX0=1; IT0=1; IP=0X01; P1=0XFE; while(1) { for(j=8;j>0;j--) { if(b==1) break; // 声明中断服务子程序 // 声明一个全局变量, 用于中断控制标志 // 如果自定义外中断标志为 0, 则跳出 for 循环 110

36 第 3 章 51 单片机对中断的控制 P1=_crol_(P1,1); Delay500ms(); //P1<<=1; } } } void Delay500ms() { unsigned char i,j,k; for(i=200;i>0;i--) for(j=20;j>0;j--) for(k=250;k>0;k--); } // 延时子函数名字 void timer0 (void) interrupt 0 using 2 { b=~b; } // 中断服务子程序 图 3-57 C 语言中断控制流程图 111

37 简简单单学通 51 单片机开发 C 语言外中断控制程序也是在原有流水灯的基础上进行了修改 在程序中, 我们设置了一个全局位变量 b, 这是一个自定义的中断标志位, 这个变量无论是在主程序, 还是在中断子程序中都是可以使用的 当没有中断发生时, 由于设置 b 的状态为 0, 流水灯正常运行 ; 当中断启动,b 的状态被取反, 流水灯停止工作 当再次中断,b 的状态重新取反, 变为 0, 流水灯又正常地运行 程序编写好了, 可以重新建立一个 C 语言 Keil 项目, 将程序编译, 生成 hex 文件, 然后在 Proteus 中进行仿真, 观察程序的执行是不是我们想要的效果 软件仿真 C 语言外中断程序 C 语言外中断程序是可以在 Keil 中仿真的 在本节就来介绍外中断软件仿真的方法 (1) 新建一个 C 语言 Keil 项目, 如图 3-58 所示 图 3-58 外中断 C 语言项目 (2) 进行仿真设置 设置的方法和普通流水灯软件仿真一样, 我们再来复习一下, 如图 3-59 和图 3-60 所示 112 图 3-59 仿真设置 1

38 第 3 章 51 单片机对中断的控制 图 3-60 仿真选项 2 (3) 进入仿真界面, 单击仿真按钮, 如图 3-61 所示 单击仿真按钮 图 3-61 进入仿真界面 (4) 打开中断寄存器观察窗口, 步骤如图 3-62 所示, 打开的中断寄存器观察窗口, 如图 3-63 所示 在图 3-62 中可看到本节介绍过的中断控制位和标志位 图 3-62 打开中断寄存器观察窗口步骤 图 3-63 中断寄存器观察窗口 (5) 我们可以进行单步仿真, 观察中断寄存器的变化情况, 如图 3-64 所示 113

39 简简单单学通 51 单片机开发 图 3-64 单步执行观察中断寄存器变化 (6) 观察全局变量 b, 可以在变量观察添加自定义中断标志位 b, 如图 3-65 所示 当然也可以将 P1 添加到观察窗口 图 3-65 添加标志位 b 到观察窗口 (7) 添加断点 所谓断点就是程序执行到这条语句时, 自动停止运行 这是一个非常有用的功能, 尤其是在仿真中断的时候, 我们可以将断点添加到中断服务程序处, 添加步骤如图 3-66 所示, 添加完断点以后, 效果如图 3-67 所示 图 3-66 添加断点步骤 114

40 第 3 章 51 单片机对中断的控制 图 3-67 添加断点的效果 (8) 还可添加 P1 口和 P3 口的端口观察窗口, 如图 3-68 所示 P1 口是为了方便观察流水效果, 而 P3 口是为方便制造中断 图 3-68 添加 P1 P3 观察窗口 (9) 现在可以单击运行按钮开始全速运行程序了, 如图 3-69 所示 图 3-69 运行按钮在程序运行的过程中, 可以看到 P1 端口循环左移不断变化, 这表示程序正在执行流水程序, 还没有被中断 (10) 我们手动制造中断, 如图 3-70 所示 单击 P3.2 端口, 让它处于非选中状态 这样就制造了一个中断的脉冲信号 因为 P3.2 初始的状态是 1, 我们左击它, 让它脱离高电平, 而变成低电平, 这样就制造了一个下降沿脉冲 然后再左击 P3.2 端口, 使它重新处于高电平的状态, 这一过程模拟了点动开关的效果 执行完这步操作, 看到程序就会在断点处停止运行, 表示制造断点成功 (11) 在中断服务程序中, 进行单步仿真, 如图 3-71 所示 执行这一步, 主要是为观察全局变量 b 的状态的变化情况, 如图 3-72 所示 在主程序中我们根据判断 b 的状态来决定流水灯是否执行 115

41 简简单单学通 51 单片机开发 图 3-70 制造中断 图 3-71 中断处单步仿真 图 3-72 单步仿真执行效果 (12) 取消断点, 操作步骤如图 3-73 所示 图 3-73 取消断点 (13) 没有断点, 全速运行 再次单击运行按钮, 让程序在没有断点的情况下, 直接运行, 如图 3-74 所示 在没有制造中断时, 流水灯正常地运行, 在制造第一次中断后, 全 116

42 第 3 章 51 单片机对中断的控制 局变量 b 变为 1, 且流水灯不再运行 ; 重新制造一次中断后, 全局变量 b 变回 0, 流水灯重新开始工作, 表示程序的执行符合我们的要求 图 3-74 没有中断, 全速运行 3.6 习题和实例演练 1. 填空题 (1) 汇编语言实现循环左移的指令为 ; 带位循环左移指令为 (2)C 语言实现循环左移的库程序为 ; 循环右移库程序为 (3) 外中断 0 外中断 1 对应 51 单片机的引脚为 ( 位序号 ) (4) 外中断触发的两种形式为 触发 触发 (5) 外中断 0 的中断响应地址为 ; 外中断 1 的中断响应地址为 (6) 外中断 0 外中断 1 中断响应标志位对应特殊功能寄存器 TCON 的第 位 和第 位 ; 位符号分别为 (7) 外中断 0 中断允许控制位为 ; 外中断 1 中断允许控制位为 (8) 汇编语言子程序返回指令 ; 中断子程序返回指令为 (9) 在 C 语言中,78H&&50H 的运算结果为 ;78H&50H 的运算结果为 (10) 在 C 语言中,78H 50H 的运算结果为 ;78H 50H 的运算结果为 (11)C 语言中, 外中断 0 中断服务子程序中断序号为 ; 外中断 1 中断序号 为 2. 判断题 (1)C 语言具有循环左移和循环右移语句 (2)DJNZ R0,ADDR; 表示 R0 的数据减 1, 如果为 0, 则跳转到地址 ADDR (3) 软件仿真就是 Proteus 仿真 (4) 在 C 语言中,++i; 和 i++; 运算的效果是一样的 117

43 简简单单学通 51 单片机开发 (5) 在 C 语言中,i<<=1; 和 i=i<<1; 执行结果一致 (6) 开启外中断 0, 只需开启中断允许控制位 EX0 (7) 在汇编语言中,RET 和 RETI 可以相互替代 (8)80&30 的执行结果和 80&&30 的运算结果是一致的 3. 解答题 (1) 简述循环左移和左移的区别 (2) 简述汇编语言 DJNZ 指令的执行过程 (3) 简述 C 语言 for 语句的执行过程 (4) 简述中断响应的过程 (5) 在 C 语言中, 位运算和逻辑运算的区别 (6)C 语言实现中断服务子程序的编写方案 4. 实例扩展 (1) 绘制电路图, 如图 3-75 所示 图 3-75 电路图 (2) 分别尝试软件仿真第 2 章的汇编语言和 C 语言流水灯程序项目 (3) 对 3.5 节中断实例程序进行改进, 外中断 1 接入开关, 为流水灯双灯同时闪烁触发按键 118

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

Microsoft Word - Ö¸Á.doc

Microsoft Word - Ö¸Á.doc 指令集说明 注 由于资源大小问题 其中以下几款 MCU 只有 62 条指令 其余均为 63 条指令 HT48CA0/HT48RA0A 无 RETI 指令 HT48R05A-1 无 TABRDL 指令 指令寻址方式有下面 5 种 立即寻址 此一寻址法是将立即的常数值紧跟在运算码 (opcode) 后 例如 MOV A, 33H ADD A, 33H 直接寻址 直接寻址的情況只允许在存储器之间作数据传送

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

Microsoft Word - P3.doc

Microsoft Word - P3.doc ;P3.3 警报器 ;* ( 程序转载请著明出处, 未声明可适应本站腾龙 /isp 开发套件 / 倚天版开发套件 * ;* E-mail:sxj1974@163.com (51c51 test web) 51 测试网, 自学单片机的网站 * ;* Create by : 石学军 www.51c51.com www.8951.com 更多例程请登陆网站 * org 00h ajmp dlv org 0030h

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

Microsoft PowerPoint - chap5.ppt

Microsoft PowerPoint - chap5.ppt 邏輯運算指令的動作 0 1 0 1 0 0 1 1 OR 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 (a) OR 運算 0 1 0 1 0 0 1 1 XOR 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 (c) XOR 運算 希望設定為 1 的位元 罩網標的位元組 新標的位元組 不改變的位元 希望取補數的位元 罩網標的位元組 新標的位元組 不改變的位元 1

More information

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令

1. 介绍 义隆 8 位单片机指令介绍 Application Notes 义隆 8 位单片机指令介绍 EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 1. 介绍 Application Notes EM78/EM88 系列是基于 RISC 的精简指令微控制器, 每条指令是 13 位 15 位, 除 LCALL LJMP MOV R2,A ADD R2,A 改变 PC 指针的指令是 2 个指令 * 周期, 其余为单指令周期 ( 部分第一代芯片 JMP CALL RET RETL RETI JBS JBC JZ JZA DJZ DJZA 指令为 2

More information

7688使用手冊V10.doc

7688使用手冊V10.doc TP-7688 . 2 2. 3 3. 5 4. 5 5. 6 6. 7 7. 8 8. 9 9.. 4. 7 2 2., 7x9 / 6x9 7x9.3() x 3.()mm 6x9 2.84() x 3.()mm 3 ASCII 7x9 95 ASCII 6x9 95 6x9 7 BIG5 6x9 3973 6x9 28 7x9 24 24 55 6x9 2 2 27 4.23mm (/6 inch)

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

Microsoft Word - 專題封面.doc

Microsoft Word - 專題封面.doc 逢 甲 大 學 資 訊 工 程 學 系 專 題 研 究 報 告 8051 小 遊 戲 -21 點 指 導 教 授 : 陳 德 生 學 生 : 許 博 益 中 華 民 國 九 十 六 年 六 月 I 目 錄 第 一 章 緒 論 1 1-1 研 究 背 景 1 1-2 研 究 動 機 2 1-3 研 究 目 的 3 1-3-1 21 點 源 起 3 1-3-2 21 點 規 則 3 第 二 章 微 電

More information

计算概论A B03 C++语言的基本成分 - 运算成分(2)

计算概论A B03 C++语言的基本成分 - 运算成分(2) 计算概论 A 程序设计部分 C 语言的构成成分 运算成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn C 语言中的运算符 C 语言的运算符范围很宽 求字节数运算符 : sizeof 下标运算符 [ ] 赋值运算符 = 算术运算符 + - * / % 关系运算符 < > == >= > ~

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

More information

单片机学习教程

单片机学习教程 . 89S51 1. 2.p1 3.8 3 4.8 3. 1. 0-F 2. 0000 0255. 1. : BB 2. : ( --- ) : :. 1. 2..232.I 2 C 1. X24C02 MCS-51 2. : 22H 24C02 50H 3. : ; 8 4. :I2C. / 1. 1 2. 2. 1. 1. 2. 2.. 1. 1: 2. 2: 3. 3 1 LED 1 89S51

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知

M8Rxxx 指令集说明 Version 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 M8Rxxx 指令集说明 Version 1.04 2014 年 11 月 上海磐芯电子有限公司 SHANGHAI MASSES ELECTRONIC Co., Ltd. 本公司保留对产品在可靠性, 功能和设计方面的改进作进一步说明的权利 说明文档的更改, 恕不另行通知 修正记录 版本 日期 描述 Ver1.02 2014-5-15 补全指令说明 Ver1.03 2014-10-8 勘误 Ver1.04

More information

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63>

<4D F736F F D204A617661B3CCD0F2C9E8BCC6BBF9B4A1A3A8B5DA35B0E6A3A9CAB5D1E9D6B8B5BCD3EBCFB0CCE2BDE2B4F020B5DA33D5C22E646F63> 第 3 章 结构语句 本章知识点 : 流程控制语句是用来控制程序中各语句执行顺序的语句, 是程序中基本却又非常关键的部分 流程控制语句可以把单个的语句组合成有意义的 能完成一定功能的小逻辑模块 最主要的流程控制方式是结构化程序设计中规定的顺序结构 分支结构 ( 选择结构 ) 和循环结构三种基本流程结构 本章将指导读者掌握 Java 程序中的流程控制语句, 包括这些语句的语法结构和使用中需注意的要点

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

<4D F736F F D20B5A5C6ACBBFAD4ADC0EDD3EBD3A6D3C3BCB B3CCD0F2C9E8BCC65FB5DA33B0E65F2DD6D5B8E52D4E65772DBFB1CEF3B1ED2DB3F6B0E6C9E72E646F6378>

<4D F736F F D20B5A5C6ACBBFAD4ADC0EDD3EBD3A6D3C3BCB B3CCD0F2C9E8BCC65FB5DA33B0E65F2DD6D5B8E52D4E65772DBFB1CEF3B1ED2DB3F6B0E6C9E72E646F6378> 单片机原理与应用及 C51 程序设计 ( 第 3 版 )- 终稿 -New 勘误表 1. P18 页 11 行原来 : 汇编语言 机器语言 功能 MOV AL,01H 1011 0000 0000 0011B ; 把 01 送入累加器 A ADD AL,02H 0000 0100 0000 0101B ;02 与 A 中内容相加, 结 果存入 A HLT 11110100B ; 停止操作 汇编语言

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机比较器原理及实现 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系列单片机的比较器内部结 构 STC 单片机比较器结构 从图中可以看出, 比较器正端输入 CMP+ 的输入电压来自单片机的 P5.5

More information

第十四章 STC单片机比较器原理及实现

第十四章 STC单片机比较器原理及实现 第 14 章 STC 单片机比较器 原理及实现 何宾 2015.02 1 本章主要内容 STC 单片机比较器结构 STC 单片机比较器寄存器组 STC 单片机比较器应用 2 STC 单片机比较器结构 STC15W 系列单片机内置了模拟比较器 对于 STC15W201S STC15W404S, 以及 STC15W1K16S 系 列单片机的比较器内部结构 3 STC 单片机比较器结构 S T C 15W

More information

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63> 七段顯示器控制電路四位數 _ 使用解碼器驅動 +5 V 10 uf 8.2 k 12 MHz 20 pf 1 2 3 4 5 6 7 8 9 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RESET 10 P3.0 11 12 13 14 15 16 17 18 19 20 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 XTAL2 XTAL1

More information

Microsoft Word - 新1-3.doc

Microsoft Word - 新1-3.doc 模块三 80C51 的指令系统和程序设计 (1) 了解 80C51 指令系统的构成 (2) 掌握 80C51 单片机的寻址方式 (3) 掌握 80C51 单片机的各种指令及其应用 (4) 掌握汇编语言程序设计方法, 为以后实际控制系统的程序设计奠定基础 3.1 80C51 指令系统概述 对于任何一台计算机, 如果只有硬件 ( 称为裸机 ), 而没有软件 ( 即程序 ) 的支持是不能工作的 单片机也不例外,

More information

*_* IAP In Applications Program, *_* ROM RAM A/D D/A KELL C51 2 0531-86213622 Micro Controller Unit( ) INTEL MCS-48 MCS-51 MCS-96 51 MCS-51 8 MCS-96 16 INTEL / 51 87 LPC W78L DS87 GSM97 ATMEL 89C51

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

R/W

R/W (HD44780 KS0066 ) 3 3 5 6 10 14 HD44780/KS0066 16 2 LCM 8 1 40 4 LCD HD44780/KS0066 HD44100 IC PCB 0.1 CMOS 1. 2. 3. 4. 5. RH60% 6. 1. 2. 3. PCB 3 4. 5. 6. 1. 280 C 2. 3 4s 3. 4. 5. 3 5 1. 2. IC 3. DC-DC

More information

ARM中C和汇编混合编程及示例.doc

ARM中C和汇编混合编程及示例.doc ARM 中 C 和汇编混合编程及示例 在嵌入式系统开发中, 目前使用的主要编程语言是 C 和汇编,C++ 已经有相应的编译器, 但是现在使用还是比较少的 在稍大规模的嵌入式软件中, 例如含有 OS, 大部分的代码都是用 C 编写的, 主要是因为 C 语言的结构比较好, 便于人的理解, 而且有大量的支持库 尽管如此, 很多地方还是要用到汇编语言, 例如开机时硬件系统的初始化, 包括 CPU 状态的设定,

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 流程控制语句的应用 语句是程序中最小的程序指令, 即程序完成一次完整正操的基本单位 在 C# 中, 可以使用多种类型的语句, 每一种类型的语句又可以通过多个关键字实现 通过这些语句可以控制程序代码的逻辑, 提高程序的灵活性, 从而实现比较复杂的程序逻辑 本章主要内容 : 选择语句的应用 迭代语句的应用 跳转语句的应用 3.1 选择语句的应用 选择语句也叫作分支语句, 选择语句根据某个条件是否成立来控制程序的执行流程

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

CA24064B LED LED LED EL EL CCFL EL CCF /

CA24064B LED LED LED EL EL CCFL EL CCF / CA24064B 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 39 2 6 0755-81995643/27890716 0 13713911853 0755-27890716 1 : VDD-VSS 0 6 V LCD VDD-V0 Ta=25 0 28.0 V VI 0 VDD V : VDD-VSS --- 4.75 5.0 5.25 V

More information

專題最終版.doc

專題最終版.doc The Principle and Application of the Electric Combination Lock The Principle and Application of the Electric Combination Lock Abstract Recently, there are more and more burglaries in the society. It's

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

W77E58中文手册

W77E58中文手册 W77E58 77E58 8051 8051 8051 77E58 8051 1.5 3 COMS 32K EEPROM 1K SRAM 1 8 2 40M 4 3 8051 4 8051 5 4 8 I/O 6 4 I/O 44 PLCC QFP 7 16 / 8 12 9 10 11 1K 12 13 16 DPTR 14 15 DIP40 W77E58 25/40 PLCC44 W77E58P

More information

Microsoft Word - 第1章 MCS-51单片机基础.docx

Microsoft Word - 第1章 MCS-51单片机基础.docx 51 单片机应用开发实战手册 作者 : 华清远见 第 1 章 MCS-51 单片机基础 本章目标 单片机作为嵌入式微控制器在工业测控系统 智能仪器和家用电器中得到广泛 应用 虽然单片机的品种很多, 但 MCS-51 系列单片机仍不失为单片机中的主流机 型 本章主要介绍 MCS-51 单片机的基础知识和学习要点, 以目前应用最为广泛的 AT89SXX 系列单片机为例, 介绍单片机的历史发展 应用领域

More information

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1 TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT 588 4 1 0571-85121224 85121742 85121304(f) 639 2A095 0571-88256346 89902095 f B1618 010-62051209 62000662 62568913 82036512 f http://www.tsingtek.com

More information

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc EEPROM 应用说明 1 适用产品 :SM59D03G2 SM59D04G2 series 2 应用范围 : 针对需使用 EEPORM 功能替换 STC 89C5X 的应用及汇编语言之范例程序 ( 使用内部扩充内存为暂存区 ) 3 功能说明 : 3.1 本公司上述产品 EEPORM 功能皆可替换 STC89C5X, 仅需对特殊功能缓存器定义 ( 详见表 1) 及 ISP 命令定义 ( 详见表 2)

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft Word - ISSFA-0134_A_AP_User-definedDownload_SC_.doc

Microsoft Word - ISSFA-0134_A_AP_User-definedDownload_SC_.doc 自定义下载应用说明 一 适用产品 :SM59XX 系列 SM59D XX 系列 SM59R XX 系列二 应用方式 : 可以让使用者自定义 command 作为进入 ISP 刻录的通关指令, 透过 UART 连接 ISAP 软件做联机更新三 操作说明 ( 使用 SM59D04G2 为例 ): 1. ISAP 操作方式 : 1.1 先将主程序及 ISP 服务程序烧进 MCU 中 1.2 将 MCU 放至系统版上,

More information

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2011A_CH_RTT.doc 基于 SAM7X EK 和 IAR EWARM 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,RTT 代码解读 关键词 AT91SAM7X256 SAM7X EK IAR EWARM J LINK RTT 创建日期 2010 06 08 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档,

More information

逢 甲 大 學

逢    甲    大    學 論 車 Auto Vehicle 立老 磊 年 老 立老 了 見 老 了不 料 利 了 識 更了 力量! i 車. 車 利 89c51 來 流. 令. 車 8051 類 車利 車 ii Abstract The goal of this thesis is to design a small auto vehicle by using IC as its control center. Our auto

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

上海盛瑞电子有限公司

上海盛瑞电子有限公司 2015/5/22 1 / 9 一运动指令 MoveJ MoveJ[\Conc,]ToPoint,Speed[\V] [\T],Zone[\Z][\Inpos],Tool[\WObj]; 1 [\Conc,]: 协作运动开关 (switch) 2 ToPoint: 目标点, 默认为 * (robotarget) 3 Speed: 运行速度数据 (speeddata) 4 [\V]: 特殊运行速度 mm/s

More information

chp3

chp3 Java 软件设计基础 3. 流程控制 3.1 语句控制结构 语句类型 变量声明语句 用来声明变量, 格式为 : 表达式语句 在一个表达式的最后加上一个分号构成的语句, 分号是语句不可缺少的部分, 格式为 : 变量 = 表达式 ; 复合语句 [ 修饰符 ] 类型名变量名 1[, 变量名 2][, ]; [ 修饰符 ] 类型名变量名 1[= 初值 1][, 变量名 2][= 初值 2][, ]; 将相关语句组合在一起就构成复合语句,

More information

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32-- HD61202 C-7 1 HD61202 HD61202 8 HD61203 HD61202, HY-12864 HY-19264 HD61202 HD61202 HD61203 HD61202 1 6464=4096 RAMRAM LCD 2HD61202 64 3HD61202 68 68 4HD61202 1/32--1/64 HD61202 HD61202 2 CS1,CS2,CS3 CS1

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1A1D4F1>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1A1D4F1> 能源与动力工程学院 结构化编程 结构化程序设计 选择 结构化编程的三种基本结构 : 顺序结构 I=1 选择 ( 分支 ) 结构 循环结构 sum=sum+i I = I +1 陈 斌 A?=B NO I>100 No YES Yes 目录 第一节逻辑运算 第一节逻辑运算 第二节 I 语句 逻辑运算 算术运算 关系运算 逻辑运算 关系运算符 运算优先级 第三节浮点数及字符的逻辑运算 90 77 功能

More information

Microsoft Word - SoftICE用户指南.doc

Microsoft Word - SoftICE用户指南.doc SST89E/V5xRD2 SST89E/V554RC SST89E/V564RD SST89E516RD2 单片机 SoftICE 用户指南 1 介绍 SoftICE 的英文是 Software In Circuit Emulator, 翻译成中文是 在电路上的软件模拟, 它是 SST 公司为方便 SST 用户使用 SST89E/V5xRD2 SST89E516RD2 SST89V516RD2 SST89E/V554RC

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

Microsoft Word - LMB402CBC-AppNote-V0.1.doc LMB402CBC 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本描述日期编者 0.1 新版本 2006-02-09 杨军 http://www.topwaysz.com 1 / 1 目录 1 概述 3 2 硬件接口 3 3 软件特性 3 3.1 控制器接口信号说明 3 3.2 模块指令系统 4 4 显示数据存储器的地址 4 5 字符发生器 CGRAM 的地址 5 6 应用举例 5 6.1

More information

Microsoft Word - ISSFA-0109_B_SM59264_WDT_ APN_TC_.doc

Microsoft Word - ISSFA-0109_B_SM59264_WDT_ APN_TC_.doc Watch Dog Timer () 功能使用說明 ( 使用內部 250KHz) 適用產品 :SM59264 SM59128 SM8954A SM8958A SM89516A SM894051 SM79108 SM79164 SM59D03/04G2 應用說明 : 1 針對使用新茂 (SyncMOS)MCU, 如有因程式設計之關係, 需防止當機之發生時, 可啟動 Watch Dog 功能, 以防止當機之發生

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378> 第一章第二章 Q2 1: 高序 : 最低位字节存储在字的最低位 ; 低序 : 最低位字节存储在字的最高位 ; Q2 2: 冯. 诺依曼结构 : 数据和指令都存储在同一存储器中 ; 哈佛结构 : 数据和程序存储在各自独立的存储器中 Q2 3: a) ARM 有 16 个通用寄存器,r0 r15, 其中 r15 还被用作程序计数器 b) CPSR 是程序状态寄存器, 包含了条件码标识 中断禁止位 当前处理器模式和其他状态

More information

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically

More information

93C46串行EEPROM数据读写

93C46串行EEPROM数据读写 一 \ 实验目的 93C46 串行 EEPROM 数据读写 1 学会 93C46 的操作指令, 掌握 93C46 读 / 写程序的编写 2 掌握 93C46 与单片机的接口方式二 实验说明 93C46/56/66 是 1K/2K/4K 位的串行电可擦写的 EPROM 93C46 的 1K 位 EPROM, 可以按 128 字节排列, 也可以 64 字节排列 93C46 芯片有 8 脚, 当 ORG

More information

单片机原理及应用实验指导书.doc

单片机原理及应用实验指导书.doc 1 2 3 4...2...4...9...9 AEDK598 MCS51...9 MCS51...10...10...10...10...10...10...11 P1...12...12...12....12...12...13 P3...14...14...14...14...14...14 I/O...15...15...15...15...15...16...17...17...17...17...17...18...19...19

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

PowerPoint Presentation

PowerPoint Presentation 7.2 并行接口 二. 可编程并行接口芯片 8255A 的功能及其应用 与 CPU 一侧相连的引脚 D0 PA0 ~ ~ ~ ~ ~ D7 PA7 RESET PC7 WR RD PC4 PC3 PC0 A0 PB0 A1 PB7 CS PA 口 PC 口上半部 PC 口下半部 PB 口 A 组 B 组 与 I/O 设备相连的引脚 7.2 并行接口二. 可编程并行接口芯片 8255A 的功能及其应用

More information

Microsoft Word - 第1章 MCS-51单片机概述.docx

Microsoft Word - 第1章 MCS-51单片机概述.docx 单片机 C 语言入门 ( 修订版 ) 作者 : 华清远见 第 1 章 MCS-51 单片机概述 本章目标 单片微型计算机简称单片机, 又称为微控制器 (MCU), 是微型计算机的一个重要分支 单片机是 20 世纪 70 年代中期发展起来的一种大规模集成电路芯片, 将 CPU RAM ROM I/O 接口和中断系统等集 成于同一硅片内 20 世纪 80 年代以来单片机发展迅速, 各类新产品不断涌现,

More information

AN-8203 FCM8531 用户手册

AN-8203 FCM8531 用户手册 www.fairchildsemi.com AN-8203 FCM8531 用户手册 所有指令兼容二进制代码, 与业界标准的 8051 微控制器执行的功能相同 表 1. 指令集和寻址模式 符号 说明 Rn 当前选择的寄存器区中的寄存器 R0 ~ R7 直接 内部 DATA RAM 位置 (0~127) 或特殊功能寄存器 (SFR) @Ri 间接内部 (0~255) 或外部 RAM 位置由寄存器 R0

More information

编译原理与技术

编译原理与技术 编译原理与技术 中间代码生成 2015/11/7 编译原理与技术 讲义 1 中间代码生成 - 布尔表达式翻译 - 控制流语句翻译 2015/11/7 编译原理与技术 讲义 2 布尔表达式的翻译 布尔表达式文法 G 4 E E 1 or E 2 E 1 and E 2 not E 1 ( E 1 ) id 1 relop id 2 true false id 3 布尔运算符 or and 和 not(

More information

Microsoft Word - Codewarrior IDE快速入门.docx

Microsoft Word - Codewarrior IDE快速入门.docx Codewarrior IDE 快速入门 本章我们以 Codewarrior HC08 V3.1 为例, 创建一个工程, 编辑源文件, 编译后进行调试 1 创建新项目 打开 codewarrior IDE 后, 出现如图 2.1 的界面 在 File 菜单中选择 New 图 2.1 codewarrior 在弹出的新窗口中, 选择 HC(S)08 New Project Wizard, 在 Project

More information

微處理機

微處理機 3-1 指令格式 標記運算碼運算元註解 標記 1. 標記前不可有空白, 否則會被視為運算碼 2. 標記代表一個 16 位元的記憶體實際位址 3. 標記名稱最多 32 個字元 ( 視組譯器不同而有所不同 ) 4. 標記有大小寫之分 5. 標記可有可無 運算碼 1. 運算碼與標記名稱間, 至少必須空一格, 如果沒有標記名稱, 則運算碼前最少要空一格, 否則會被視為標記 2. 運算碼大小寫相同 3. 可以是

More information

Microsoft Word - 2CA13內文.doc

Microsoft Word - 2CA13內文.doc 006 公 民 - 歷 屆 試 題 全 解 答 案 是 完 全 正 確 的? : 能 源 使 用 愈 多, 除 了 帶 來 經 濟 成 長 外, 相 對 的, 也 會 帶 來 負 面 的 環 保 問 題 我 們 在 發 展 經 濟 的 過 程 中, 若 不 能 兼 顧 環 境 資 源 的 保 育, 將 賠 上 後 代 子 孫 的 生 存 環 境, 這 是 下 列 那 一 種 理 念? 比 較 利 益

More information

<4D6963726F736F667420576F7264202D203130B5A5C6ACBBFACAB5D1E9D6B8B5BCCAE92E646F63>

<4D6963726F736F667420576F7264202D203130B5A5C6ACBBFACAB5D1E9D6B8B5BCCAE92E646F63> 单 片 机 及 接 口 技 术 实 验 指 导 书 张 勇 编 计 算 机 与 通 信 工 程 学 院 信 息 与 通 信 工 程 系 2004.12 1 - 前 言 单 片 机 及 接 口 技 术 是 通 信 工 程 专 业 的 专 业 技 能 课 程, 在 专 业 知 识 结 构 体 系 中 具 有 十 分 重 要 的 地 位, 课 程 的 实 践 性 很 强, 学 习 必 须 理 论 和 实

More information

微机原理--汇编、连接和调试

微机原理--汇编、连接和调试 微机原理课程 汇编语言程序的编辑 汇编 连接和调试 西安电子科技大学 探测制导系 内容提要 编写汇编语言程序的五个重要步骤 编写源程序 汇编过程 连接过程 汇编语言编程过程 DEBUG 主要功能 DEBUG 命令 程序设计举例 结束语 编写汇编语言程序的五个重要步骤 1. 编写源程序, 如 L1.ASM 2. 汇编源程序, 得到目标代码,L1.OBJ 3. 目标代码文件的连接, 生成可执行文件 L1.EXE

More information

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ]

MSP430ϵÁе¥Æ¬»úµÄÖ¸Áîϵͳ.pps [¼æÈÝģʽ] 作者 : 利尔达 MSP430 系列单片机的指令系统 1 CPU 内核组成 : 16 位的 (ALU) 算术运算单元 16 个寄存器 (PC SP SR R4~R15) 指令控制单元 2 存储器组织结构 3 外围模块寄存器地址 它们被分配在相应的字模块或字节模块当中 分配在 00-FFH 中为字节, 分配在 100-1FFH 中为字 4 寻址模式 : 5 指令格式 : 1) 书写格式标号指令助记符源操作数,

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

» n ¹ú KS0108 x ÍÍÙ q n KS0108 KS KS0107 KS0108 KS *32 128*64 192*64 KS0108 KS0108 KS0107 KS =4096 RAM RAM LCD 2 KS

» n ¹ú KS0108 x ÍÍÙ q n KS0108 KS KS0107 KS0108 KS *32 128*64 192*64 KS0108 KS0108 KS0107 KS =4096 RAM RAM LCD 2 KS KS0108 KS0108 8 KS0107 KS0108 KS0108 128*32128*64 192*64 KS0108 KS0108 KS0107 KS0108 1 6464=4096 RAMRAM LCD 2KS0108 64 3KS0108 68 68 4KS0108 1/48--1/64 KS0108 CS1,CS2,CS3 CS1 CS2 CS3 E E KS0108 E R/W R/W=1

More information

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1>

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1> 第 2 章 单片机 C51 语言基础 2.1 C51 语言的基本知识 2.2 运算符与表达式 2.3 指针与绝对地址访问 2.4 本章小结 2.5 实训二发光二极管流水广告灯 返回首页 教学提示 随着单片机开发技术的不断发展, 目前已有越来越多 的人从普遍使用汇编语言逐渐过渡到使用高级语言开发, 其中又以 C 语言为主, 市场上几种常见的单片机均有其 C 语言开发环境 应用于 51 系列单片机开发的

More information

PowerPoint 簡報

PowerPoint 簡報 微算機原理與實驗 (UEE 2301/1071 ) Chap 5. MCS-51 Addressing Modes 宋開泰 Office:EE709 Phone:5731865( 校內分機 :31865) E-mail:ktsong@mail.nctu.edu.tw URL:http://isci.cn.nctu.edu.tw 1 Addressing Modes Addressing mode is

More information

Microsoft PowerPoint - 第一章(07版).PPT

Microsoft PowerPoint - 第一章(07版).PPT 单片机原理及综合设计 嵌入式微控制器的开发入门 微机及单片机原理原理实验室综合楼 419 室 大连理工大学电信学院陈育斌 1 ( 理论课 ) 上课时间表 (10~17 周 ) 周次 星期 一 二 三 四 五 六 日 1 至 6 时间地点 大五节综 309 (18:00) 大连理工大学电信学院陈育斌 2 课程总体安排 总学时 : 理论课 + 实验课 =36 学时 其中 : 理论课 :24: 学时 ;

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2013/3/26 林子雨 ziyulin@xmu.edu.cn 2013/3/26 厦门大学非计算机专业本科生公共课 (2012-2013 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要 第一章绪论 第二章

More information

林子雨《C语言程序设计》讲义PPT

林子雨《C语言程序设计》讲义PPT C 语言程序设计 厦门大学计算机科学系 2012-03-18 林子雨 ziyulin@xmu.edu.cn 2012-03-18 厦门大学非计算机专业本科生公共课 (2011-2012 第 2 学期 ) C 语言程序设计 林子雨厦门大学计算机科学系 E-mail: ziyulin@xmu.edu.cn 个人主页 :http://www.cs.xmu.edu.cn/linziyu 课程提要 第一章绪论

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

第一章

第一章 单片机原理 STC15F2K60S2 微机原理与单片机接口技术复习要点 第一章微型计算机概述 ( 了解概念 ) 1.1.2 微型计算机基本构成 ( 基本结构由哪些部分构成 ) 1.1.3 单片微型计算机简介 ( 什么是单片机, 单片机的结构及各个部分的功能, 常见的单片机有哪些 ) 1>. 微型计算机基本构成 : 微处理器, 存储器 (ROM RAM) 与输入输出接口 (I/O 接口 ) 及外部设备及连接他们的系统总线组成

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示 实验题目 : 串行接口芯片 8251 实验目的 : 1. 掌握 8251 的工作方式及应用 2. 了解有关串口通讯的知识 串行接口芯片 8251 3. 掌握使用 8251 实现双机通讯的软件编程和电路连接 实验设备 : IA-32 架构的微机系统及应用教学平台两套 实验原理 : 1. 8251 的基本性能 性能 : 8251 是可编程的串行通信接口, 可以管理信号变化范围很大的串行数据通信 有下列基本

More information

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD2 1...2 1.1...2 1.2...2 1.3 /...2 2 SoftICE...2 3 SoftICE MCU...2 4 SoftICE...3 4.1 SST BootLoader SOFTICE...3 4.2 SoftICE SST MCU...6 5 SoftICE...7

More information

Date: :32:44 若要重复运行上面的命令, 也可以在调试程序的提示符处按 E n t e r 键 Date: :35:25 若要设置断点, 必须在程序中选定一个要停止运行的位置 命令 l 用于列出程序的下面 1 0 行 再次键 l, 可以列出下面的

Date: :32:44 若要重复运行上面的命令, 也可以在调试程序的提示符处按 E n t e r 键 Date: :35:25 若要设置断点, 必须在程序中选定一个要停止运行的位置 命令 l 用于列出程序的下面 1 0 行 再次键 l, 可以列出下面的 Summary of Comments on ebook65-12 Page: 1 Date: 2001-8-5 21:25:15 P e r l 的 - d 开关可使 P e r l 以调试方式启动运行 命令行上也指明了被调试的程序 Page: 2 Date: 2001-8-5 21:26:01 每当调试程序向你显示程序中的一个语句时, 它就是准备要执行的语句, 而不是上一个运行的语句 Date:

More information

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc

MSP430µ¥Æ¬»úCÓïÑԺͻã±àÓïÑÔ»ìºÏ±à³Ì.doc MSP430 单片机 C 语言和汇编语言混合编程 Mixing C and Assembler With the MSP430 刘玉宏 Liu,Yuhong 摘要 : 为了发挥 C 语言和汇编语言各自的优点, 二者需要相互调用函数 本文首先介绍了 MSP430 单片机的 C 语言函数的参数传递规则, 然后对 C 语言和汇编语言的混合编程进行了详细描述, 最后给出应用实例 关键字 :MSP430 单片机

More information

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63> 臺 北 市 立 松 山 高 級 工 農 職 業 學 校 資 訊 科 專 題 製 作 報 告 題 目 : 反 彈 空 間 指 導 老 師 : 余 耀 銘 學 生 : 廖 國 銓 趙 信 瑋 中 華 民 國 102 年 5 月 摘 要 在 這 高 速 科 技 的 起 飛 下, 科 技 都 建 立 起 於 基 礎, 有 些 人 把 這 基 礎 轉 為 理 論, 教 給 大 眾 學 習 ; 有 些 人 利

More information

Microsoft Word - ha0013s.doc

Microsoft Word - ha0013s.doc 文件编码 :HA0013s 简介 : 本文介绍利用 8 位微控制器控制 DV16100NRB 液晶显示驱动器的方法 该 LCM 由内置的 Hitachi HD44780 进行驱动及控制 本文应用中, 着重考虑如何使微控制器产生正确的信号以符合 LCM 所需的时序 若要获得详细的时序及指令信息, 请查阅 LCM 厂商的资料 LCM 能以 4 位或 8 位模式工作 在 4 位模式下, 传送一个字符或一条指令需两个传输周期完成

More information

Microsoft Word - mcu-an z-10.doc

Microsoft Word - mcu-an z-10.doc 富士通微电子 ( 上海 ) 有限公司应用笔记 MCU-AN-500007-Z-10 F²MC-8FX 家族 8 位微控制器 MB95200H/210H 系列 外部中断 应用笔记 变更履历 变更履历 日期作者修正记录 2008-03-20 Levi Zhang V1.0, 第一版 本手册共 22 页 1. 本文档记载的产品信息及规格说明如有变动, 恕不预先通知 如需最新产品信息和 / 或规格说明, 联系富士通销售代表或富士通授权分销商

More information

EMC单片机学习笔记.doc

EMC单片机学习笔记.doc EMC 单片机学习笔记 (0) 引子因为工作的缘故, 必须学习 EMC 单片机了 我会把我的学习历程写下来, 算是对坛子的一点贡献, 也算是自己的一个总结吧 因为以前学过 51 的和 PIC HOLTEK 的单片机, 并且也大致了解过 EMC 的指令集, 所以学起来并不是太难 为了学习, 而又没有仿真器, 于是去 emc 的网站下载了一个 simulator 来软件仿真 第一感觉还不错, 把里面的例子程序跑了一下,

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

粤社保函〔2013〕80号

粤社保函〔2013〕80号 맣 뚫 쪡 짧 믡 놣 쿕 믹 뷰 맜 샭 뻖 粤 社 保 函 2016 120 号 맘폚뾪햹2016쓪뛈쪡횱웳튵횰릤믹놾퇸샏뷰 쇬좡룱죏횤폐맘쫂쿮뗄춨횪 参 加 省 直 企 业 职 工 社 会 保 险 各 单 位 和 离 退 休 人 员, 社 会 申 办 退 休 人 员 : 根 据 国 家 和 省 的 有 关 规 定, 省 社 保 局 从 2016 年 4 月 1 日 起, 开 展 2016 年

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章流程控制和数组 3.1 实验目的 (1) 熟练掌握控制台应用程序的代码编写和调试, 以及运行方法 (2) 掌握选择结构的一般语法格式和应用 (3) 掌握 switch 语句的用法 (4) 掌握选择结构的嵌套的用法, 能灵活使用选择结构解决实际问题 (5) 掌握 while 循环语句的一般语法格式 (6) 掌握 for 循环语句的一般语法格式 (7) 掌握循环嵌套的语法格式 (8) 掌握一维数组的定义

More information

从MCS51向AVR的快速转换.PDF

从MCS51向AVR的快速转换.PDF MCS51 AVR MCS51 AVR ATMEL AVR RISC MCS51 AVR 1 MHZ 1MIPS 8MHZ AVR 224MHZ MCS51 FLASH EEPROM ISP WatchDog AVR MCS51 AT90S1200/2313 AT89C1051/2051 AT90S4414/8515 AT89C51/52 PCB / AVR C ICCAVR60 AVR C IAR

More information

AT89C2051中文资料.doc

AT89C2051中文资料.doc 图形点阵液晶显示模块使用手册 TG12864C(L) 广州捷胜吉电子科技 地址 : 广州市天河区天河路 561# 新赛格电子城 B2226 电话 :(020)33550997 13829772038 网址 :WWW.GZJSJDZ.COM E-mail:CJKD@21CN.COM 目 录 ( 一 ) 概述 (1) ( 二 ) 外形尺寸图 (1) ( 三 ) 模块主要硬件构成说明 (2) ( 四 )

More information