分享
分销 收藏 举报 申诉 / 46
播放页_导航下方通栏广告

类型2022年单片机-2.ppt

  • 上传人:二***
  • 文档编号:12673688
  • 上传时间:2025-11-22
  • 格式:PPT
  • 页数:46
  • 大小:609.54KB
  • 下载积分:5 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    2022 单片机
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4章 汇编语言程序设计,80,C51,汇编语言语句结构的基本格式,伪指令的功能和应用,汇编的概念,程序设计的步骤和基本方法,顺序程序,分支程序,循环程序,查表程序,散转程序,本章要点,标号:操作码 目的操作数,源操作数;注释,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”或无.,标号:操作码 目的操作数,源操作数;注释,汇编程序:汇编语言编写的程序借助编译工具,编译成为目标代码,计算机才能识别。这个编译工具称为汇编程序。,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来使用。,绿灯亮,其余灯灭;,LJMP PRGM1 ;转PRGM1(减法),LOOP1:MOV R7,#248 ;1Tm,A,一般应按以下几个步骤进行:,间隔字节数)A;,ORG 1000H,RET ;,SJMP SL0 ;转循环,汇编语言程序设计中的数,MUL AB;P1P3,GRET:RET ;,这个编译工具称为汇编程序。,标号:操作码 目的操作数,源操作数;注释,第二节 汇编语言程序设计举例,数据地址赋值伪指令,DATA,格式:,字符名称,DATA,表达式,功能:将数据地址或代码地址赋予规定的 字符名称。,格式:,字符名称,BIT,位地址,定义字伪指令,DW(Define Word),格式:,DW 16,位二进制数表,功能:从指定的地址单元开始,定义 若干个,16,位数据。,定义位地址伪指令,BIT,功能:将位地址赋予所规定的字符名称。,DEF BIT 30H,把P00的位地址赋给字符AQ,把位地址30H赋给字符DEF。在其后的编程中,AQ可作P0.0使用,DEF可作位地址30H使用。,三.,汇编,将汇编语言源程序转换为计算机所能识别的机器语言代码程序的过程称为汇编。,汇编可分为:,手工汇编,计算机汇编,【例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位再加上低位的进位。注意这里不能用INC指令,因为INC指令不影响标志,位。,程序如下:,根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。,80C51,指令系统中的,条件转移指令,、,比较转移指令,和,位转移指令,,可以实现分支程序。,二.,分支程序,【例45】已知X、Y均为8位二进制有符号数,分别存在30H31H中,试编制能实现下列符号函数的程序:,实现程序如下:,【例46】将ASCII码转换为十六进制数。设ASCII码放在累加器A中,转换结果放到B中。,解:由ASCII码表(表1-4)可知,30H39H为09的ASCII码,41H46H为AF的ASCII码。将ASCII码减30H(09)或37H(AF)就可获得对应的十六进制数。程序如下:,S0单独按下,,红灯亮,其余灯灭;,S1单独按下,,绿灯亮,其余,灯灭;,其余情况,,黄灯亮。,【例4.8】已知电路如图,4-5,所示,要求实现:,解:程序如下,SGNL:ANL P1,#11100011B,;红绿黄灯灭,ORL P1,#00000011B,;置P1.0、P1.1输入态,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,;黄灯灭,SJMP SL0,;转循环,课堂练习题:,电路及灯亮灭要求同上述【例】题,其中第3、4两条指令JNB P1.0和JNB P1.1按下列要求修改,试重新编程。,JBP1.0,,JBP1.1,,JBP1.0,,JNB P1.1,,JNB P1.0,,JBP1.1,,循环程序一般包括以下几个部分:,循环初值;,循环体;,循环修改;,循环控制;,以上四部分可以有两种组织形式,其结构如,图,4-6,所,示。,三.,循环程序,【例4.10】,设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,数据长度(个数)N存在R2中,试编程求和S=X,1,+X,2,+,+X,N,,并将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位加进位,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=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+250 x2,1+,(1+250 x2),+2)x200,1+,(1+250 x2+2)x200,+2x10=,【例4-13(2)】编写延时10ms子程序,fosc=12MHz。,解:fosc=12MHz,一个机器周期为1,s,。,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+21,s,/机周=10063,s10ms,【课堂练习题】,按下列要求编写延时子程序:,延时2ms,fosc=6MHz;,延时5ms,fosc=12MHz;,延时10s,fosc=12MHz,;,设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实现:,每个灯,闪烁点亮,10次,,,再转移到下一个灯,闪烁点亮10次,循环不止。,【例4.15】编制一个循环闪烁灯的程序。,FLASH:MOV A,#01H,;置灯亮初值,FSH0:MOV R2,#0AH,;置闪烁次数,FLOP:MOV P1,A,;点亮,LCALL DY1s,;延时1s,MOV P1,#00H,;熄灭,LCALL DY1s,;延时1s,DJNZ R2,FLOP,;闪烁10次,RL A,;左移一位,SJMP FSH0,;循环,RET,;,解:程序如下:,延时子程序可根据延时长短,自行编写。,【课堂练习题】,根据图4-8电路,设计灯亮移位程序,要求8只发光二极管每次点亮一个,点亮时间为250ms,顺序是从下到上一个一个地循环点亮。设fosc=6,MHz,。,【例4.16】,已知P1口数据每隔10ms刷新一次,试求其1s内的平均值,平均值存30H。,解:本题需求100个数据的平均值,,一般有两种方法:,一种是全部累加后再平均;,另一种是边平均边累加,,现给出两种方法的程序。,AVRG1:MOV R2,#0,;低8位累加寄存器清0,MOV R3,#0,;高8位累加寄存器清0,MOV R4,#100,;置平均次数,ALOP:MOV A,P1,;读P1口数据,ADD A,R2,;低8位累加,MOV R2,A,;回存,CLR A,;高8位与进位累加,ADDC A,R3,;,MOV R3,A,;回存,LCALL DY10ms ;,延时10ms,DJNZ R4,ALOP,;判100次累加完否?未完继续,MOV A,R3,;100次累加完,求平均值,被除数A、B,MOV B,R2,;,MOV R0,30H,;置商间址,MOV R6,#0;,置除数100,除数R6R5,MOV R5,#100,;,LCALL SUM,;(A、B)(R6、R5)=商 R0,余数A,CJNE A,#50,NEXT,;四舍五入,NEXT:JC GRET,;C=1,50,舍,INC 30H,;C=0,50,入,GRET:RET,;,全部累加后再平均,注:SUM子程序可参阅例4-9,AVRG2:MOV 30H,#0,;商累加寄存器清0,MOV31H,#0,;余数累加寄存器清0,MOVR4,#100,;置平均次数,ALOP:MOVA,P1,;读P1口数据,MOVB,#100,;置除数(平均次数),DIVAB,;P1口数据除以100,ADDA,30H,;商累加,MOV 30H,A,;回存,MOV A,B,;,ADDA,31H,;余数累加,MOV31H,A,;回存,CLRC,;,SUBBA,#100,;,JCGON,;余数累加100,余数累加寄存器不变,INC30H,;余数累加100,商累加寄存器+1,MOV31H,A,;减去100后差余数累加寄存器,GON:LCALLDY10ms,;延时10ms,DJNZR4,ALOP,;判100次累加完否?未完继续,MOVA,31H,;100次累加完毕,余数累加四舍五入,CJNEA,#50,NEXT,;,NEXT:JCGRET,;C=1,50,舍,INC30H,;C=0,50,入,GRET:RET,;,边平均边累加,【课堂练习题】,已知某单片机系统每隔20ms测一次温度,8位温度A/D值存在特殊功能寄存器SBUF中,试分别求其1s和1分内的平均值,分别存30H和31H。,当用PC作基址寄存器时,,其表格首地址与PC值间距不能超过256字节,且编程要事先计算好偏移量,比较麻烦。,因此,一般情况下用DPTR作基址寄存器,。,四.,查表程序,用于查表的指令有两条:,MOVC A,A+,DPTR,MOVC A,A+,PC,当用DPTR作基址寄存器时,,查表的步骤分三步:,基址值(表格首地址)DPTR;,变址值(表中要查的项与表格首地址之间的,间隔字,节数)A;,执行MOVC A,A+DPTR。,解:编程如下:,CHAG:MOV DPTR,#TABD,;置共阴字段码表首址,MOV A,30H,;读显示数字,MOVC A,A+DPTR,;查表,转换为显示字段码,MOV 30H,A,;存显示字段码,RET,;,TABD:DB 3FH,06H,5BH,4FH,66H,;04共阴字段码表,DB 6DH,7DH,07H,7FH,6FH,;59共阴字段码表,【例4.17】,在单片机应用系统中,常用LED数码管显示数码,但显示数字(,9)与显示数字编码并不相同,需要将显示数字转换为显示字段码,通常是用查表的方法。现要求将30H中的显示数字转换为显示字段码并存入30H。已知共阴字段码表首址为TABD。,【课堂练习题】,已知8位显示数字已存入首址为30H的内RAM中,试将其转换为共阴显示字段码,存入首址为40H的内RAM中。,解:编程如下:,CUBE:MOV DPTR,#TAB,;置立方表首址,MOV A,30H,;读数据,ADD A,30H,;数据2A,MOV 30H,A,;暂存立方表数据序号,MOVC A,A+DPTR,;读立方数据高8位,XCH A,30H,;存立方数据高8位,立方表数据序号,A,INC A,;指向立方数据低8位,MOVC A,A+DPTR,;读立方数据低8位,MOV 31H,A,;存立方数据低8位,RET,;,TAB:DW 0,0,0,1,0,8,0,27,0,64,;040立方表,DW 0,125,0,216,0FAH,00H,;,说明:数据2A原因是立方表数据为双字节,【例4.19】,用查表程序求040之间整数的立方。已知该整数存在内RAM 30H中,查得立方数存内RAM 30H(高8位)31H。已知立方表(双字节)首地址为TAB。,在单片机系统中设置+、,、,、,四个运算命令键,它们的键号分别为0、1、2、3。当其中一个键按下时,进行相应的运算。操作数由P1口和P3口输入,运算结果仍由P1口和P3口输出。具体如下:P1口输入被加数、被减数、被乘数和被除数,输出运算结果的低8位或商;P3口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8位或余数。键盘号已存放在30H中。,五.,散转程序,散转程序是,一种并行多分支程序。,【例4-20】单片机四则运算系统。,解:程序如下:,PRGM:MOV P1,#0FFH,;P1口置输入态,MOV P3,#0FFH,;P3口置输入态,MOV DPTR,#TBJ,;置“”表首地址,MOV A,30H,;读键号,RL A,;键号,2A,ADD A,30H,;键号,3A,JMP A+DPTR,;散转,TBJ:LJMP,PRGM0,;转PRGM0(加法),LJMP,PRGM1,;转PRGM1(减法),LJMP,PRGM3,;转PRGM3(除法),LJMP,PRGM2,;转PRGM2(乘法),PRGM0:MOV A,P1,;读加数,ADD A,P3,;P1+P3,MOV P1,A,;和P1,CLR A,;,ADDC A,#00H,;进位A,MOV P3,A,;进位P3,RET,;,OVER!,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:2022年单片机-2.ppt
    链接地址:https://www.zixin.com.cn/doc/12673688.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork