单片机原理与应用.ppt_第1页
单片机原理与应用.ppt_第2页
单片机原理与应用.ppt_第3页
单片机原理与应用.ppt_第4页
单片机原理与应用.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章MCS 51指令系统 一 汇编语言指令格式 标号 操作码 操作数1 操作数2 注释 例 LOOP MOVA 40H 40H A 1 标号 指令的符号地址 1 8个字母或数字 并以冒号 结尾 2 操作码 指明指令功能 2 5个字母 例如 MOV 传送ANL 逻辑与MUL 乘法RR 右循环SJMP 短跳转RET 子程序返回 3 1指令格式 3 操作数 指令操作对象数据 地址 寄存器名及约定符号 4 注释行 说明指令在程序中的作用 操作码和操作数是指令主体 标号 操作码 操作数1 操作数2 注释 例 LOOP MOVA 40H 40H A 二 伪指令 汇编时不产生机器码 仅供汇编识别控制 1 定位伪指令 ORGm例3 3ORG0000HSTART SJMPMAIN ORG0030HMAIN MOVSP 30H以START开始的程序汇编为机器码后从0000H存贮单元开始连续存放 2 结束伪指令 END 4 定义字伪指令 DWY1 Y2 Yn 3 定义字节伪指令 DBX1 X2 Xn例3 4ORG7F00HDB01110010B 16H 45 8 A 汇编后存贮单元内容为 7F00H 72H 7F01H 16H 7F02H 2DH 7F03H 38H 7F04H 40H 5 定义空间伪指令 DS表达式例3 6ORG0F00HDS10HDB20H 40H汇编后 从0F00H开始 保留16个字节的内存单元 然后从0F10H开始 按照下一条DB伪指令给内存单元赋值 得 0F10H 20H 0F11H 40H 6 等值伪指令 EQU数据或汇编符 例3 7ORG8500HAAEQUR1A10EQU10HDELAYEQU87E6HMOVR0 A10 R0 10H MOVA AA A R1 LCALLDELAY 调用起始地址为 87E6H的子程序ENDEQU赋值后 AA为寄存器R1 A10为8位直接地址10H DELAY为16位地址87E6H 7 数据地址赋值伪指令 DATA表达式8 位地址赋值伪指令 BIT位地址 3 2指令寻址方式 寻找操作数的方法叫寻址方式 一 立即寻址方式指令中给出实际操作数据 立即数 一般用于为寄存器或存储器赋常数初值 举例 8位立即数 MOVA 40H A 40H16位立即数 MOVDPTR 2100H DPTR 2100H 二 直接寻址方式 指令操作数是存储器单元地址 数据在存储器单元中 MOVA 40H A 40H 直接寻址方式对数据操作时 地址是固定值 而地址所指定的单元内容为变量形式 56H 例 设存储器两个单元的内容如图所示 执行指令MOVA 40H后A 三 寄存器寻址方式指令操作数为寄存器名 数据在寄存器中 例 MOVA R0 A R0设指令执行前A 20H R0 40H 执行指令后 A R0 四 寄存器间接寻址方式指令的操作数为寄存器名 寄存器中为数据地址 存放地址的寄存器称为间址寄存器或数据指针 例 MOVA R0 A R0 设指令执行前A 20H R0 40H 地址为40H存储器单元内容如图所示 执行指令后 A R0 40H 34H 40H 34H 40H 40H R0 五 变址间接寻址方式数据在存储器中 指令给出的寄存器中为数据的基地址和偏移量 数据地址 基地址 偏移量 例 MOVCA A DPTR A A DPTR 设指令执行前A 09H DPTR 2000H 存储器单元内容如图所示 执行指令后 A DPTR 12H 2000H 六 相对寻址方式以PC的内容作为基地址 加上偏移量 所得结果送PC寄存器作为转移地址 偏移量在 128 127之间 例 SJMP80H 短跳转 六 位寻址方式指令给出位地址 一位数据在存储器位寻址区 例 MOVC 40H Cy 位地址40H 设指令执行前Cy 1 位地址40H存储器单元如图 执行指令后 Cy 0 3 3指令的类型 字节和周期 MCS 51指令系统中共有111条指令 按功能可分为以下四大类 数据传送类 算术操作类 逻辑操作类 控制转移类 3 4数据传送指令 实现寄存器 存储器之间的数据传送 1内部传送指令 片内数据存储器数据传送 2 外部传送指令 片外数据存储器数据传送 3 交换指令 片内数据存储器数据传送 4 堆栈操作指令 片内数据存储器数据传送 5 查表指令 程序存储器数据传送 一 内部传送指令 实现片内数据存储器中数据传送 指令格式 MOV目的操作数 源操作数寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间址 MOVA Rn A Rn Rn R0 R7MOVA direct A direct MOVA Ri A Ri Ri R0 R1MOVA data A dataMOVRn direct Rn direct MOV Ri direct Ri direct MOVdirect1 direct2 direct1 direct2 MOVDPTR d1d2 DPTR d1d2 数据传送指令 例 顺序执行下列指令序列 求每一步执行结果 MOVA 30HMOV4FH AMOVR0 20HMOV R0 4FHMOV21H 20H A 30H 4FH 30H R0 20H 20H 30H 21H 30H 说明 1 一条指令中不能同时出现两个工作寄存器 非法指令 MOVR1 R2MOVR2 R0 2 间址寄存器只能使用R0 R1 非法指令 MOVA R2 3 SFR区只能直接寻址 不能用寄存器间接寻址 非法指令 MOVR0 80HMOVA R0 二 外部传送指令实现片外数据存储器和A累加器之间的数据传送 指令格式 MOVX目的操作数 源操作数寻址方式 片外数据存储器用寄存器间址方式 1 DPTR作16位数据指针 寻址64KB片外RAM空间MOVXA DPTR A DPTR MOVX DPTR A DPTR A2 Ri作8位数据指针 寻址256B片外RAM空间MOVXA Ri A Ri MOVX Ri A Ri A 例 实现片外数据存储器数据传送 2000H 2100H MOVDPTR 2000HMOVXA DPTRMOVDPTR 2100HMOVX DPTR A DPTR 2000H A X DPTR 2100H 2100H X 片外数据存储器不能直接寻址 下列为非法指令 MOVXA 2000HMOVX2100H 2000H 三 查表指令实现从程序存储器读取数据到A累加器 只能使用变址间接寻址方式 多用于查常数表程序 可直接求取常数表中的函数值 1 DPTR为基址寄存器MOVCA A DPTR A A DPTR 查表范围为64KB程序存储器任意空间 称为远程查表指令 2 PC为基址寄存器MOVCA A PC A A PC 常数表只能在查表指令后256B范围内 PC内容为下一条指令的起始地址 例 查表法求Y X2 设X 0 X 15 在片内RAM的20H单元中 要求将查表求Y 存入片内RAM21H单元 1 ORG1000HSQU MOVDPTR TAB 确定表首地址 基地址 MOVA 20H 取X 偏移量 MOVCA A DPTR 查表求Y X2MOV21H A 保存YRET 子程序结束 其它程序段ORG3000H 常数表格首地址TAB DB00 01 04 09 225 平方表 2 指令地址源程序ORG1000H 程序起始地址1000HSQU MOVA 20H 取X1002HADDA 3 修正偏移量1004HMOVCA A PC 查表求Y X21005HMOV21H A 存结果1007HRET 子程序结束1008HTAB DB00 01 04 平方表100BHDB09 225 例 查表法求Y X2 设X 0 X 15 在片内RAM的20H单元中 要求将查表求Y 存入片内RAM21H单元 四 堆栈操作指令入栈指令 PUSHn SP SP 1 SP n 出栈指令 POPn n SP SP SP 1 例 设A 02 B 56H 执行下列指令后 SP A B SP SP 02 SP 56H02 56H02HSP SP 56H02 SP 56H02 56HSP 02 02H A 00H 02H 00H 02H 02H SBR MOVSP 30H 设栈底PUSHAPUSHBMOVA 0MOVB 01 POPBPOPA 02 56H 30H 五 交换指令实现片内RAM区的数据双向传送 1 字节交换指令XCHA Rn A RnXCHA Ri A Ri XCHA direct A direct 例 设A 29H 执行指令XCHA 2AH后 A 2AH 38H 29H 29H 2 半字节交换指令 XCHDA Ri A0 3 Ri 0 3SWAPA A4 7 A0 3 例 将片内RAM2AH和2BH单元中的BCD码转换成压缩式BCD码存入20H单元 MOVA 0MOVR0 2AHMOVR1 2BHXCHDA R0SWAPAXCHDA R1XCHA 20H 3 5算术运算指令 与数据传送指令不同 多数算术运算指令会影响标志位的状态 即CPU执行算术运算指令后 根据数据操作情况自动设置标志位的状态 状态标志 MCS 51的程序状态字寄存器PSW为标志寄存器 其格式如下 1 标志位 自动设置状态 1 Cy 进位标志位保存运算后最高位的进位 借位状态 当有进位 借位 Cy 1 否则Cy 0 2 AC 辅助进位标志位保存低半字节的进位 借位状态 当D3产生进位 借位 AC 1 否则AC 0 用于十进制调整 3 OV 溢出标志位OV Cy7 Cy6 补码运算产生溢出OV 1 否则OV 0 4 P 奇偶标志位反映累加器A中数据的奇偶性 当1的个数为奇数 P 1 否则P 0 2 用户选择位 编程设置状态 1 F0 用户自定义标志位 2 RS1 RS0 工作寄存器区选择位 复位时 PSW 00H 例 复位后 设置使用工作寄存器3区 其余标志位不变 解 MOVPSW 18H 3 5 1加减指令完成片内RAM和A中数据的加减乘除运算 1 加法指令 1 不带进位加法 ADDA 源操作数ADDA RnADDA directADDA RiADDA data影响Cy OV AC P 00111011 0011101101110110 76H0011 例 A 3BH PSW 0 执行指令ADDA 3BH求 A Cy OV AC P PSW 01000001 41H 1001101011100011 0101111101 2 带进位加法 ADDCA 源操作数ADDCA RnADDCA directADDCA RiADDCA data影响Cy OV AC P 7DH1100 例 A 9AH R2 E3H PSW 0 执行指令ADDCA R2后求 A Cy OV AC P PSW 10000100 84H 带进位加法指令ADDC用于多字节运算 例 设双字节数X存在片内RAM41H 40H单元 Y存在42H 43H单元 编程求Z X Y 并存入片内RAM单元44H 45H 46H ADDS CLRCMOVA 40HADDA 42HMOV44H AMOVA 41HADDCA 43HMOV45H AMOVA 0ADDCA 0MOV46H ARET 取被加数低字节 加上加数低字节 保存和的低字节 取被加数高字节 加上加数高字节 保存和的高字节 求高字节进位 子程序结束 十进制加法指令 ADDA 源操作数DAA带进位十进制加法指令 ADDCA 源操作数DAA 3 BCD调整指令 DAA 对A中加法结果进行调整 若在加法过程中低4位向高4位有进位或累加器A中低4位大于9 则累加器A作加6调整 若在加法过程中最高位有进位或累加器A中高4位大于9 则累加器A作加60H调整 即高4位作加6调整 例3 39 编制85 59的BCD加法程序 并对其工作过程进行分析 解 相应BCD加法程序为 MOVA 85H A 85ADDA 59H A 85 59 0DEHDAA A 44 Cy 1 二进制加法和进制调整过程为 8510000101 A 5901011001data144 0 11011110110 低4位 9 加6调整11100100110 高4位 9 加60H调整 1 01000100运算结果为 A 44H Cy 1即十进制的144 2 减法指令SUBBA 源操作数 带借位减法指令 SUBBA RnSUBBA directSUBBA RiSUBBA data影响 Cy OV AC P 000000 例 A 5AH R2 5AH Cy 0 执行下列指令SUBBA R2求 A Cy OV P AC 例3 36设 A 0C9H R0 60H 60H 54H Cy 1 执行指令 SUBBA R0运算过程为 1110100借位11001001 A 01010100 R0 1Cy01110100 结果为 A 74H标志位为Cy 0 0V 1 AC 0 P 0 3 增量 减量指令 增量指令 INC单操作数INCAINCRnINCdirectINC RiINCDPTR除对A操作影响标志位P以外 不影响标志位状态 减量指令 DEC单操作数DECADECdirectDEC RiDECRn除对A操作影响标志位P以外 不影响标志位状态 注意 没有指令DECDPTR可用指令DECDPL代替 3 5 2 乘除指令 MULAB BA A B Cy 0 当积高字节B 0 OV 0 B 0 则OV 1 例 A 96 60H B 192 0C0H 执行指令MULAB后 求 A B Cy OV P 解 96 192 18432 4800H 00H48H010 12H0CH000 例 A 156 F6H B 13 0DH 执行指令DIVAB后求 A B Cy OV P 解 156 13 18 12H 余数 12 0CH DIVAB A B A 商 B 余数 Cy 0 当除数B 0 OV 1 B 0 则OV 0 3 6逻辑运算指令 一 单操作数指令 A累加器为操作数 1 A清0指令 CLRA A 02 A取反指令 CPLA A A 3 循环移位指令 1 8位循环指令 RLA A循环左移一位RRA A循环右移一位 2 9位循环指令 RLCA 带Cy循环左移一位RRCA 带Cy循环右移一位 例 设A 11000101 Cy 0 分别执行下列单条指令 CPLA A Cy RLA A Cy RLCA A Cy 001110100 100010110 100010101 用9位循环指令实现多字节移位例 编程将寄存器R6R5中的双字节数X左移一位 CLRCMOVA R5RLCAMOVR5 AMOVA R6RLCAMOVR6 A Cy 0 设R6 55H R5 AAH R6 01010101 R5 10101010 Cy 0 R6 01010101 R5 01010100 Cy 1 R6 10101011 R5 01010100 Cy 0 二 双操作数逻辑运算指令 对位逻辑运算 ANL ORL XRL 例A 01 B 表示随机状态 为1或0 执行下述一组指令执行后A的值如何 ANLA 0E7H 将累加器A的内容D4 D3清0ORLA 03H 将累加器A的内容D1 D0置1XRLA 0C0H 将累加器A的内容D7 D6取反解 执行上述指令后 A 10 00 11B 3 6位操作指令对片内RAM中位寻址区操作 位累加器Cy和位地址b 一 位传送MOVC b Cy b MOVb C b Cy 例 将位地址20H的一位数传送到位地址30H中 MOVC 20HMOV30H C二 位清0 置1 取反 CLR SETB CPL CLRC Cy 0 CLR40H 位地址40H 0 三 逻辑运算 ANL ORL ANLC 40H C C 40H ANLC 40H C C 40H 例 设Cy 0 位地址40H 1 执行指令ANLC 40H后 Cy 位地址40H 位地址表示法 位地址40H 位寄存器F0 字节加位ACC 0 0 1 3 7控制转移指令转移指令通过改写PC的当前值 从而改变CPU执行程序的顺序 使程序发生跳转 按转移条件分类 1 无条件转移 执行无条件转移指令 程序无条件转移到指定处 2 条件转移 指令中给出转移条件 执行指令时 先测试条件 若满足条件 则程序发生转移 否则 仍顺序执行程序 按转移方式分类 1 绝对转移 指令给出转移目的的绝对地址nn 执行指令后 PC nn 2 相对转移 指令给出转移目的与转移指令的相对偏移量e 执行指令后 PC PC e 例 地址源程序1000HLJMP2000H1003H 2000H 转移目的指令 例 地址源程序1000HSJMP02 1004H 转移目的指令 一 无条件转移指令1 长转移指令 LJMPaddr16 PC addr16指令转移范围 64KB 无条件转移 不影响任何标志位 2 绝对转移指令 AJMPaddr11 PC PC 2 PC10 0 pn10 0 PC15 11不变指令转移范围 2KB转移时要求转移前后保持PC15 11不变 相对偏移量e的计算式 e 目的指令地址 转移指令地址 指令字节数 目的地址 PC当前值 3 短转移指令 SJMPe PC PC 2 PC PC e相对偏移量e为8位补码 指令转移范围 前128 后127字节 编程时 用标号代替转移目的地址 转移指令的操作数交给汇编程序计算 LJMPNEXT AJMPNEXTSJMPNEXT NEXT 例 计算转移指令的相对偏移量e 并判断是否超出转移范围 相对偏移量 2150H 2130H 2 001EH 只取低8位 e 1EH 指令地址源程序2130HSJMPNEXT 2150HNEXT MOVA R2 4 间接转移指令 多分支转移指令 JMP A DPTR PC A DPTR指令转移范围64KB KEY MOVDPTR KTABMOVA 40HADDA 40HJMP A DPTRKTAB AJMPFUNC0AJMPFUNC1 FUNC0 FUNC1 应用 处理功能键 要求不同功能键执行不同程序段 设每个功能键对应一个键值X 0 X FH 设X已存入片内RAM的40H单元中 若X 0 则执行程序段FUNC0若X 1 则执行程序段FUNC1 二 条件转移指令 1 判零转移指令JZe PC PC 2 若A 00H PC PC e 转移 若A 00H PC不变 不转移 条件转移指令形成程序的分支 赋予计算机判断决策能力 转移条件 1 标志位的状态2 位地址中的状态 JNZe PC PC 2 若A 00H PC PC e 转移 若A 00H PC不变 不转移 2 判Cy转移指令JCe Cy 1则转移 Cy 0不转移JNCe Cy 0则转移 Cy 1不转移 3 判位转移指令JBb e b 1转移 否则不转移JNBb e b 0转移 否则不转移 4 判位清0转移指令 JBCb e b 1转移 且 b 0 否则不转移 5 比较不相等转移指令 CJNE操作数1 操作数2 e CJNEA n e PC P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论