电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

单片机幻灯片51

46页
  • 卖家[上传人]:F****n
  • 文档编号:88136953
  • 上传时间:2019-04-19
  • 文档格式:PPT
  • 文档大小:347.50KB
  • / 46 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第4章 汇编语言程序设计,80C51汇编语言语句结构的基本格式 伪指令的功能和应用 汇编的概念 程序设计的步骤和基本方法 顺序程序 分支程序 循环程序 查表程序 散转程序,本章要点,标号:操作码 目的操作数,源操作数;注释,4-1 汇编语言程序设计基本概念,4.1.1 汇编语言及其语句结构,汇编语言程序设计中的数,计算机只能识别二进制数机器指令,它原本是不认识常用的十六进制数和十进制数的。,机器指令/目标代码: 由0/1代码组成的操作码与操作数。,BCD码:用二进制数表达的十进制数。 (09表示为:00001001B 后缀:B/b,H/h),二进制数:由0/1组成、“逢2进1”的数制。 如:01011110B (01 后缀:B/b),十六进制数:便于读写记忆的二进制数的简写形式。 (09,AF 后缀:H/h),汇编语言编程基本规则,汇编语言:用助记符描述的指令的集合。,指令中以 AF 开头的十六进制数前必须添一个 “0”。,二进制数必须带后缀“B”或“b”;十六进制数必须带后缀“H”或“h”;十进制数的后缀是“D”或“d”或无.,标号:操作码 目的操作数,源操作数;注释,汇编程序:汇编

      2、语言编写的程序借助编译工具 编译成为目标代码,计算机才能识别。这个编译工具称为汇编程序。,4.1.2 伪指令,在汇编时起控制作用,自身并不产生机器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51指令系统。 常用的伪指令有以下几种:, 起始伪指令 ORG(Origin),功能:规定ORG下面目标程序的起始地址。,格式:ORG 16位地址,ORG 0100H START:MOV A,#05H ADD A,#08H MOV 20H,A ORG 0100H表示该伪指令下面第一条指令的起始地址是0100H,即MOV A,#05H指令的第一个字节地址为0100H,或标号START代表的地址为0100H。,功能:将一个数据或特定的汇编符号赋予规定 的字符名称。, 结束伪指令 END,功能:汇编语言源程序的结束标志。 在END后面的指令,汇编程序不再处理。,格式:END, 等值伪指令 EQU(Equate),格式:字符名称 EQU 数据或汇编符号,例如: PP EQU R0 ;PP=R0 MOV A,PP ;A R0 这里将PP等值为汇编符号R0,在指令中PP就可以代替R0来使用。,

      3、 数据地址赋值伪指令 DATA,格式:字符名称 DATA 表达式,功能:将数据地址或代码地址赋予规定的 字符名称。, 定义字节伪指令DB(Define Byte),格式:DB 8位二进制数表,功能:从指定的地址单元开始,定义若干 个8位内存单元的数据。 数据与数据之间用“,”分割。,例如: ORG 4000H TAB: DB 73H,45,“A”,“2” TAB1:DB 101B 以上指令经汇编后,将对4000H开始的若干内存单元赋值。 (4000H)=73H,(4001H):2DH(注:45的16进制数),,格式:字符名称 BIT 位地址, 定义字伪指令DW(Define Word),格式:DW 16位二进制数表,功能:从指定的地址单元开始,定义 若干个16位数据。, 定义位地址伪指令BIT,功能:将位地址赋予所规定的字符名称。,AQ BIT P0.0 DEF BIT 30H 把P00的位地址赋给字符AQ,把位地址30H赋给字符DEF。在其后的编程中,AQ可作P0.0使用,DEF可作位地址30H使用。,三.汇编,将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。

      4、汇编可分为: 手工汇编 计算机汇编,【例4-1】对下段程序进行手工汇编。, 汇编和调试,四. 程序设计的基本方法,编写程序要求: 不仅要完成规定的功能任务,而且还要求: 执行速度快、占用内存少、条理清晰、 阅读方便、便于移植、巧妙而实用。 一般应按以下几个步骤进行:, 分析问题,确定算法或解题思路, 画流程图, 编写源程序,流程图符号和说明:,顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。 顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。,第二节 汇编语言程序设计举例,一. 顺序程序,CONT: MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H ;加进位及符号位 MOV R3,A ;存高8位 RET ;,【例4-2】 已知16位二进制负数存放在R1R0中, 试求其补码,并将结果存在R3R2中。,解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位的

      5、进位。注意这里不能用INC指令,因为INC指令不影响标志位。,程序如下:,ORG 2000H BCD2B:MOV A, R2 ;取入口数据 ANL A, #0F0H ;取出十位 SWAP A ;高4位 低4位 MOV B, #0AH MUL AB ;十位乘10 MOV R3,A ;积暂存进R3 MOV A, R2 ;再取入口数据 ANL A, #0FH ;取出个位 ADD A, R3 MOV R2,A ;结果 R2 RET ;若不是子程序可用END,例:将R2中BCD码数转为二进制数存进R2。 (此子程序在下一例中还要用到),根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。 80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。,二.分支程序,【例45】 已知X、Y均为8位二进制有符号数,分别存在30H31H中,试编制能实现下列符号函数的程序:,实现程序如下:,【例46】将ASCII码转换为十六进制数。设ASCII码放在累加器A中,转换结果放到B中。 解:由ASCII码表(表1-4)可知,30H39H为09的ASCII码,41H46H为AF的ASC

      6、II码。将ASCII码减30H(09)或37H(AF)就可获得对应的十六进制数。程序如下:, S0单独按下, 红灯亮,其余灯灭; S1单独按下, 绿灯亮,其余灯灭; 其余情况, 黄灯亮。,【例4.8】已知电路如图4-5所示,要求实现:,解:程序如下 SGNL:ANL P1,#11100011B;红绿黄灯灭 ORL P1,#00000011B;置P1.0、P1.1输入态, P1.5P1.7状态不变 SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮 YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环 SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮 GREN:SETB P1.3 ;绿灯亮 CLR P1.2 ;红灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4

      7、;黄灯灭 SJMP SL0 ;转循环,课堂练习题: 电路及灯亮灭要求同上述【例】题,其中第3、4两条指令JNB P1.0和JNB P1.1按下列要求修改,试重新编程。 JB P1.0, JB P1.1, JB P1.0, JNB P1.1, JNB P1.0, JB P1.1,,循环程序一般包括以下几个部分: 循环初值; 循环体; 循环修改; 循环控制; 以上四部分可以有两种组织形式,其结构如图4-6所示。,三. 循环程序,【例4.10】设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,数据长度(个数)N存在R2中,试编程求和S=X1+X2+XN,并将S(双字节)存放在R3R4中,(设S65536)。,解:程序如下: SXN: MOV R2,#N ;置数据长度(循环次数) MOV R3,#00H ;和单元(高8位)清0 MOV R4,#00H ;和单元(低8位)清0 MOV R0,#50H ;求和数据区首址 LOOP:MOV A,R4 ;读前次低8位和 ADD A,R0 ;低8位累加 MOV R4,A ;存低8位和 CLR A ; ADDC A,R3 ;高8位加进

      8、位 MOV R3,A ;存高8位和 INC R0 ;指向下一数据 循环修改 DJNZ R2,LOOP ;判N个数据累加完否? 循环控制 RET ;退出循环 退出循环,置循环初值,循环体,【例411】 设在内RAM 40H开始的存储区有若干个字符和数字,已知最后一个为字符“$”(并且只有惟一一个),试统计这些字符和数字的个数,统计结果存人30H单元。 解:程序如下:,【例412】 内部RAM 20H单元开始存有8个数,试找出其中最大的数,送入MAX单元。 解:程序如下:,ORG 1000H DELAY:MOV R6,#200 ; 1Tm LOOP1: MOV R7,#248 ; 1Tm NOP ; 1Tm LOOP2: DJNZ R7,LOOP2 ; 2Tm DJNZ R6,LOOP1 ; 2Tm RET ; 1Tm,补充例:软件循环延时100mS(晶振12MHz), 1Tm =1uS 100mS = 100000 uS MOV Rn #data 和 NOP 是单机器周期指令 DJNZ Rn,rel 是双机器周期指令 200 = 0C8H ; 248 = 0F8H,1+1+ 248x2

      9、=498,(498+2)x200,ORG 1000H DL1S:MOV R7,#10 DL1: MOV R6,#200 DL2: MOV R5, #250 DL3: DJNZ R5, DL3 DJNZ R6,DL2 DJNZ R7,DL1 RET,补充例:软件循环延时1S(晶振12MHz), 1Tm =1uS 1S = 1000000 uS MOV Rn #data 是单机器周期指令 DJNZ Rn,rel 是双机器周期指令,1+ 250x2,1+ (1+250x2) +2)x200,1+ (1+250x2+2) x200+2x10=,【例4-13(2)】编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1s。 DY10ms:MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周250 =500机周 DJNZ R6,DLP1 ; 500机周20= 10000机周 RET ; 说明:MOV Rn指令为1个机器周期; DJNZ指令为2个机器周期; RET指令为2个机器周期; (2机周250)+1+220+1+21s/机周=10063s10ms 【课堂练习题】 按下列要求编写延时子程序: 延时2ms,fosc=6MHz; 延时5ms,fosc=12MHz; 延时10s,fosc=12MHz;,设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反

      《单片机幻灯片51》由会员F****n分享,可在线阅读,更多相关《单片机幻灯片51》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.