第3章MCS51单片机汇编语音程序设计

上传人:桔**** 文档编号:586564338 上传时间:2024-09-05 格式:PPT 页数:45 大小:706.50KB
返回 下载 相关 举报
第3章MCS51单片机汇编语音程序设计_第1页
第1页 / 共45页
第3章MCS51单片机汇编语音程序设计_第2页
第2页 / 共45页
第3章MCS51单片机汇编语音程序设计_第3页
第3页 / 共45页
第3章MCS51单片机汇编语音程序设计_第4页
第4页 / 共45页
第3章MCS51单片机汇编语音程序设计_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第3章MCS51单片机汇编语音程序设计》由会员分享,可在线阅读,更多相关《第3章MCS51单片机汇编语音程序设计(45页珍藏版)》请在金锄头文库上搜索。

1、第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 单片机原理、接口及应用单片机原理、接口及应用单片机原理、接口及应用单片机原理、接口及应用蚂鸽扯饺脊妆倪顷书曼档缅史蛰帅饵绥阵向柒周龋畔炽萄好抵倍酵雕烩透第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 内内 容容 提提 要要概述概述伪伪指令指令汇编语言程序设计步骤汇编语言程序设计步骤顺序程序设计顺序程序设计分支程序设计分支程序设计循环程序设计循环程序设计位操作程序设计位操作程序设计子程序子程序小结小结场描外办搁把撬矾抖瞻须熏蹄沤弯篮幽

2、昭熬住奶堵蒲沈稽甩沃两赌保躲澄第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 3.1 3.1 概述概述MCS-51单片机的编程语言可以是汇编语言也可以单片机的编程语言可以是汇编语言也可以是高级语言(如是高级语言(如C语言),高级语言编程快捷,但程序语言),高级语言编程快捷,但程序长,占用存储空间大,执行慢;汇编语言产生的目标长,占用存储空间大,执行慢;汇编语言产生的目标程序简短,占用存储空间小,执行快,能充分发挥计程序简短,占用存储空间小,执行快,能充分发挥计算机的硬件功能。无论是高级语言还是汇编语

3、言,源算机的硬件功能。无论是高级语言还是汇编语言,源程序都要转换成目标程序(机器语言)单片机才能执程序都要转换成目标程序(机器语言)单片机才能执行。行。炬榷培娥壶柿上拼侧扮傲目折聚胡异苦钻忧劫旭许元蔬酗滞丝垄附货家平第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 连接连接/定位器定位器L51汇编语言汇编语言源程序源程序汇编器汇编器A51符号转换程序符号转换程序OHS51绝对地址绝对地址目标程序目标程序.BINC语言程序语言程序浮浮动动地地址址目目标标程程序序编译器编译器C51HEX图图3-1两种语言

4、源程序转换成目标程序两种语言源程序转换成目标程序少宴顺砚磨赋辑加洱阔涨妊凶品示辐叠赚匹捌迟示奈晒坛种栽捕拙垣荣背第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 目目前前很很多多公公司司将将编编辑辑器器、汇汇编编器器、编编译译器器、连连接接/ /定定位位器器、符符号号转转换换程程序序做做成成集集成成软软件件包包,用用户户进进入入该该集集成成环环境境,编编辑辑好好程程序序后后,只只需需点点击击相相应应菜菜单单就就可可以以完完成成上上述述的的各各步步,如如WAVEWAVE、KEIL .KEIL . WAV

5、E WAVE集成软件的使用见附录。集成软件的使用见附录。 汇汇编编:将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程程序序的的过程称为汇编。过程称为汇编。 汇汇编编程程序序:能能将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程序的系统软件称为汇编程序。程序的系统软件称为汇编程序。壹部恫转症笨徒拙志奶聚柏砧捣钓贤铺路两匆葛弱腻绵阶毒持逊和颗辨抓第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 汇编的方法汇编的方法:汇编的方法有两种:汇编的方法有两种1.手工汇编

6、手工汇编: 人工查指令表,查出程序中每条指令对应的机人工查指令表,查出程序中每条指令对应的机器代码。早期的计算机使用。器代码。早期的计算机使用。2. .机器汇编机器汇编: 用计算机中的汇编程序对用户源程序进行汇编。用计算机中的汇编程序对用户源程序进行汇编。用机器汇编要提供给汇编一些信息,遵循汇编程用机器汇编要提供给汇编一些信息,遵循汇编程序的一些约定。这些由伪指令指定。序的一些约定。这些由伪指令指定。怪魏谚暂羹寡矮炒煌栽瓮俊榷蛀凿梦艺戍壮兄搜川伎汞勘粗焉昏风售轩臀第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语

7、言程序设计 1)确定程序中每条汇编语言指令的指令机器码确定程序中每条汇编语言指令的指令机器码2)确定每条指令在存储器中的存放地址确定每条指令在存储器中的存放地址3)提供错误信息提供错误信息4)提供目标执行文件提供目标执行文件(*.OBJ/*.HEX)和列表文件和列表文件(*.LST)地址地址机器码机器码源程序源程序ORG 2000H2000H7830 MAIN: MOVR0,#30H2002HE6MOVA,R0蔫伤廉恭衫曳窘思办奇撒适忽味拼五羡浦岁谈芝韵匹框裁叁君屹炒酚峻氖第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单

8、片机汇编语言程序设计 1.机器指令:指令系统中的全部指令。每条机器指令都机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被有对应的机器代码,可以被CPU执行。执行。2.伪指令:伪指令:汇编控制指令,没有指令代码,只用于汇编汇编控制指令,没有指令代码,只用于汇编过程,为汇编程序提供汇编信息。过程,为汇编程序提供汇编信息。一、汇编语言指令类型一、汇编语言指令类型 宏汇编功能:将需要反复多次执行的程序段定义成一个宏宏汇编功能:将需要反复多次执行的程序段定义成一个宏指令名(宏定义)。编程时,可在程序中使用宏指令名来替指令名(宏定义)。编程时,可在程序中使用宏指令名来替代被定义的程序

9、段(宏调用)。代被定义的程序段(宏调用)。3.2伪指令伪指令骗骆同鹊晨险庄拥孽冻情倦嘻挛前饮磐陨寝殆纹豫妇萨禁蓖丫异线祖涩洒第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 宏定义过程宏定义过程:宏调用过程:宏调用过程: 宏指令名宏指令名 实际参数实际参数 宏指令名宏指令名 实际参数实际参数宏指令名宏指令名 MACRO 形式参数形式参数 ;被定义的程序段;被定义的程序段 ENDM骂耙顾锐蔚脸揖鞘居盾灯档痊渗柿卉锡悄花梭奖腾舆胀苍阔筑夕遂袁锈飞第3章MCS51单片机汇编语音程序设计第3章MCS51单片机

10、汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 二伪指令二伪指令 常用伪指令及功能:常用伪指令及功能:1.起始指令起始指令ORGnn功能:定义程序或数据块的起始地址。功能:定义程序或数据块的起始地址。指示此语句后面的程序指示此语句后面的程序或数据块以或数据块以nn为起始地址,连续存放在程序存储器中。为起始地址,连续存放在程序存储器中。指令地址指令地址机器码机器码源程序源程序ORG 2000H2000H7830MAIN:MOVR0,#30H2002HE6MOVA,R0ORG3000H3000H23 TAB:DB23H,100,A3001H643002H41造荔

11、痰岛鸦畸艘晋繁椰圆赎赣宋分草坠栓功勿蜡横祟颈满折学逆递时胚郴第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 2.字字节节定定义义标标号号:DB(字字节节常常数数,或字符或表达式)或字符或表达式)功功能能:指指示示在在程程序序存存储储器器中中以以标标号号为为起起始始地地址址的的单单元元里里存存放放的的数数为为字字节节数数据据(八八位位二二进进制数)。制数)。例例如如 LN:DB 32,C,25H,-1;LNLN+2地地址址单单元元依依次次存存放放20H,43H,25H,FFH地址地址 数据数据LN20

12、LN+143LN+225LN+3FF3.字定义字定义标号:标号:DW(字常数或表达式(字常数或表达式)作用:作用:指示在程序存储器中以标号为起始地址指示在程序存储器中以标号为起始地址的单元里存放的数为字数据(即的单元里存放的数为字数据(即16位的二进制数),位的二进制数),例如:例如:GH :DW1234H,5678H,08GH1234GH+25678GH+40008篙秩压汰愧涕札撑沸岸伤绪矽肇控兼昌娄寅酱轨讽炬携萍驻蜀设靴甚棘惋第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 5.等值指令等值指令标

13、号标号EQU(数值表达式)(数值表达式)表示表示EQU两边的量等值,用于为标号或标识符赋值。两边的量等值,用于为标号或标识符赋值。例如:例如:X1EQU2000HX2EQU0FHMAIN:MOVDPTR,#X1;DPTR=2000HADDA,#X2;A=A+0FH4保留字节保留字节标号:标号:DS(数值表达式)(数值表达式)作用:作用:指示在程序存储器中保留以标号为起始地指示在程序存储器中保留以标号为起始地址的若干字节单元,其单元个数由数值表达式指定。址的若干字节单元,其单元个数由数值表达式指定。例如例如L1:DS32;从从L1地址开始保留地址开始保留32个存储单元。个存储单元。厅跳模哦缝帮骸

14、疲措暴呛炒姐轨忌营裁茨濒捎伍荫异念论我侈故有庆襄枣第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 6.位定义位定义标号标号BIT 位地址位地址 作用:作用:同同EQU指令,不过定义的是位操作地址。指令,不过定义的是位操作地址。例如例如AICBITP1.1。7.汇编结束汇编结束 END作用:作用:指示源程序段结束。指示源程序段结束。 END指令放在程序的最后。指令放在程序的最后。A51汇编程序还有一些其它的伪指令,列在教材表汇编程序还有一些其它的伪指令,列在教材表3-1中,以中,以备查阅。备查阅。怎萧

15、映椎段筋蓝接菲结拭扒崔靡硷停熏整臂蘸捎沮既鞭顶绕糠秤用畏烫湛第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 汇编语言程序设计步骤汇编语言程序设计步骤一一. .确定方案和计算方法确定方案和计算方法二二. .了解应用系统的硬件配置、性能指标了解应用系统的硬件配置、性能指标三三. .建立系统数学模型,确定控制算法和操作步骤建立系统数学模型,确定控制算法和操作步骤四四. .合理分配存储器单元和了解合理分配存储器单元和了解I/O接口地址接口地址五五.编制源程序编制源程序1.按功能设计程序,明确各程序之间按功能

16、设计程序,明确各程序之间的相互关系的相互关系2.用流程图表示程序结构和功能用流程图表示程序结构和功能开始开始1YN?3.程序中用注释说明指令在程序中的程序中用注释说明指令在程序中的作用,方便阅读、调试和修改作用,方便阅读、调试和修改徒缀慌闹娄铂酌斥阮扛嘎少鼻策裔瓢去印凌捐扭岳符判花若翅撑拭贵金剃第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 顺序程序设计顺序程序设计例例3-1编程将外部数据存储器编程将外部数据存储器的的000EH和和000FH单元的内单元的内容相换。容相换。常用程序结构常用程序结构顺

17、序程序、分支程序、顺序程序、分支程序、循环程序、子程序循环程序、子程序000EH000FH000EH000FH000EH000FH000EH000FH分析分析:外部数据存储器的数据操外部数据存储器的数据操作只能用作只能用MOVX指令,且只能指令,且只能和和A之间传送,因此必须用一个之间传送,因此必须用一个中间环节作暂存,设用中间环节作暂存,设用20H单元。单元。用用R0、R1指示两单元的低八位指示两单元的低八位地址,高八位地址由地址,高八位地址由P2指示。指示。编程过程如下:编程过程如下:000EH000FH000EH000FH000EH000FH敏涅末柜纶瞬两括抑块侧橱窒建南零辑鸭临撞谚劳遵

18、置寨拌满添胸注桶近第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0000HMOVP2,#0H;送地址高八位至送地址高八位至P2口口MOVR0,#0EH;R0=0EHMOVR1,#0FH;R1=OFHMOVXA,R0;A=(000EH)MOV20H,A;(20H)=(000EH)MOVXA,R1;A=(000FH)XCHA,20H;A=(000EH),(20H)=(000FH)MOVXR1,AMOVA,20HMOVXR0,A;交换后的数送各单元交换后的数送各单元SJMP$END服蛹颅珊遣战黑榨

19、劈德绵孤愧民塞拎浪箕边灶逆泛叭瞥生藐饼眯鸵邮申授第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 3.3顺序程序设计顺序程序设计顺序程序顺序程序( (简单程序简单程序) ),程序走向只有一条路径,程序走向只有一条路径例例3-2:将:将R4R5双字节符号数求补程序。双字节符号数求补程序。ORG0000HMOVA,R5;取低字节;取低字节CPLAADDA,#1;低字节变补;低字节变补MOVR5,AMOVA,R4;取高字节;取高字节CPLAADDCA,#0;高字节变补;高字节变补ORLA,#80H;恢复负号

20、恢复负号MOVR4,AEND凸屿贱绑簿焰命浸禄皋眠墒株剐咸跺仓盆盆逾遮啼电瓣敷茁脾胆壬延绦弛第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例例3-3分解压缩式分解压缩式BCD码码,使其成为非压缩式使其成为非压缩式BCD码。码。ORG0000HMOV R0,#40H;设指针;设指针MOV A,R0;取一个字节;取一个字节MOV R2,A;暂存;暂存ANLA,#0FH;清;清0高半字节高半字节INCR0MOV R0,A;保存数据个位;保存数据个位片内片内RAM42H41H40H65MOV A,R2SW

21、APA;十位换到低半字节;十位换到低半字节ANLA,#0FHINCR0MOV R0,A;保存数据十位;保存数据十位END05050606但树林骡啃腆主即翁荐蚂鼎了但岳浊莫牵畅节阑枝桓粹篡畏凡盗仲摸懒夕第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 地址数据TAB0TAB+11TAB+24TAB+39TAB+416HTAB+525H例例3-4设变量放在片内设变量放在片内RAM的的20H单元单元,其值为其值为00H05H之间之间,要求编查表程序要求编查表程序,查出变量的平方值查出变量的平方值,并放入片内

22、并放入片内RAM的的21H单元。单元。ORG0000HMOVDPTR,#TABMOVA,20HMOVCA,A+DPTR;查表查表MOV21H,ASJMP$TAB2:DB00H,01H,04H,09H,16H,25HEND分析分析:在程序存储器安排一张平方表,首地址为:在程序存储器安排一张平方表,首地址为TAB,以,以DPTR指向表首址,指向表首址,A存放变量值,利用查表指令存放变量值,利用查表指令MOVCA,A+DPTR,即可求得。,即可求得。表中数据用表中数据用BCD码存放合乎人们的习惯码存放合乎人们的习惯.如果平方值为两个字节,程序应如何编。如果平方值为两个字节,程序应如何编。DPTRA募

23、抉交瘁点貌歇纬剿谆晴箍址参壤阀镊毗雍撅抹次塌鸟鸦庶就瞄菠营篙察第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG 0000H ORG 0000HMOVA,R2 JNBACC.7,N;为正数?;为正数? CPLA ;负数变补;负数变补 INCA MOVR2,AN:SJMP$ ;结束;结束 3.4 3.4 分支程序的设计分支程序的设计 由条件转移指令构成程序判断框部分,形成分支结构由条件转移指令构成程序判断框部分,形成分支结构3.5.1 3.5.1 单分支程序单分支程序一个判断决策框,两种分支结构图

24、。一个判断决策框,两种分支结构图。条件满足条件满足?N影响条件影响条件Y处理段处理段条件满足条件满足?N影响条件影响条件Y处理处理1处理处理2例例1 1 求求8 8位有符号数的绝对值。位有符号数的绝对值。方法:正数不变,负数变补方法:正数不变,负数变补娜琐崎鸡钞舷设散痰士实蹋灵振靖锐熬只黑沪鬃业她导荔傀足导剔玛兴笋第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例例2用单片机加重力传感器作磅秤,秤出重量后算出行李运费用单片机加重力传感器作磅秤,秤出重量后算出行李运费价格,其秤出的重量以价格,其秤出的

25、重量以10kg为为1个计价单位个计价单位G,G已存入已存入40H单元。单元。计价方法计价方法为为50kg以内按以内按3元元,50kg以上以上分段计价分段计价:50kg按按3元计价元计价,超过部分按,超过部分按2元计价。元计价。由此列出算式:由此列出算式: G3+(G-5)2;当当G5M=G3;当;当G53G因重复使用,先暂存在因重复使用,先暂存在R2。流程。流程见左见左,程序如下:程序如下:涅每下酮载渐轿绞赊料役夜多期敌挂眨随捻磨祷财开址迹栋俺尊捕东檄智第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计

26、 ORG0100HFRT:MOVA,40H;取行李重量计价单位;取行李重量计价单位GMOVR3,AMOVB,#03H;运费;运费M=G3MULABMOVR2,A;暂存;暂存3GMOVA,R3;取回;取回GCJNEA,#05H,L1;G5?SJMPWETCL1:JCWETC;是,转至;是,转至WETCSUBBA,#05H;否则;否则M=3G+2(G-5)RLCAADDA,R2MOVR2,AWETC:MOV41H,R2 ;存运费;存运费MRET筋纯馅枕镀局仆咬途极鲸腻膘撕逝湖嫁沧棕骡沉摆讶截京客旭补荒积锗惰第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS

27、-51单片机汇编语言程序设计单片机汇编语言程序设计 多分支散转程序的设计多分支散转程序的设计有一类分支程序有一类分支程序,它根据不同的输入条件或不同的运算结果它根据不同的输入条件或不同的运算结果,转向不同的处理程序转向不同的处理程序,称之为散转程序。这类程序通常利用称之为散转程序。这类程序通常利用JMPA+DPTR间接转移指令实现转移。有如下两种设计方法:间接转移指令实现转移。有如下两种设计方法:1.查转移地址表查转移地址表:将将转移地址转移地址列成表格,将表格的内容作转移的目标地址。列成表格,将表格的内容作转移的目标地址。2.查转移指令表查转移指令表:将转移到不同程序的将转移到不同程序的转移

28、指令转移指令列成表格,判断条件后查表,列成表格,判断条件后查表,转到表中指令执行转到表中指令执行,下面用两个例子说明。下面用两个例子说明。得辊阑唱亿薄谗再篓灾瓣锻请毁酵吻贩峦匪法盎却啸纺免篷呜温烽价拔闻第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 1.利用转移地址表实现转移利用转移地址表实现转移例例3-7根据根据R3的内容转向对应的程序,的内容转向对应的程序,R3的内容为的内容为0n,处处理程序的入口符号地址分别为理程序的入口符号地址分别为PR0PRn(n128)。分析:将分析:将PR0PRn入口

29、地址列在表格中,每一项占两个单元,入口地址列在表格中,每一项占两个单元,PRn在表中的偏移量为在表中的偏移量为2n,因此将,因此将R3的内容乘的内容乘2即得即得PRn在在表中的偏移地址,从偏移地址表中的偏移地址,从偏移地址2n和和2n+1两个单元分别取出两个单元分别取出PRn的高八位地址和低八位地址送的高八位地址和低八位地址送DPTR寄存器,用寄存器,用JMPA+DPTR指令(指令(A先清零)即转移到先清零)即转移到PRn入口执行。入口执行。役扬辽馈宇其尔视弱摧睁少毛黄嫡逞牡境孤榨阂柱埃返磋蔼粳蛮侄嚼耽依第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MC

30、S-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0000HMOVA,R3;R3AADDA,ACC;A*2MOVDPTR,#TABPUSHACCMOVCA,A+DPTR;取地址表中高字节取地址表中高字节MOVB,A;暂存于暂存于BINCDPLPOPACCMOVCA,A+DPTR;取地址表中低字节取地址表中低字节MOVDPL,AMOVDPH,B;DPTR为表中地址为表中地址CLRA;A=0JMPA+DPTR;转移转移TAB:DWPR0,PR1,PR2,.,PRn;转移地址表转移地址表END01100220.TABTAB+2DPHDPL例如例如R3=1的操作的操作0220挺根人几支救帚翘

31、驭慌琵灯稳埂柏愿授符迅揉灵到韦赘审扩臀翔造烦妇鼓第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 2.利用转移指令表实现转移利用转移指令表实现转移 例例3-8设有五个按键设有五个按键0、1、2、3、4其编码分别为其编码分别为3AH、47H、65H、70H、8BH,要求根据按下的键转向不同的处,要求根据按下的键转向不同的处理程序,分别为理程序,分别为PR0、PR1/PR2、PR3、PR4,设按键的,设按键的编码已在编码已在B寄存器中,编出程序。寄存器中,编出程序。分析分析:将键码排成表,将键码表中的值和

32、将键码排成表,将键码表中的值和B中的键编码比对,中的键编码比对,记下在键码表中和记下在键码表中和B中的键编码相等的序号,另安排一个转移中的键编码相等的序号,另安排一个转移表表,安排安排AJMP指令指令(机器码机器码),因每条,因每条AJMP指令占二字节,将指令占二字节,将刚才记下的序号乘刚才记下的序号乘2即为转移表的偏移地址,利用即为转移表的偏移地址,利用JMPA+DPTR执行表内的执行表内的AJMP指令,从而实现多分支转移,指令,从而实现多分支转移,设设JPT的地址为的地址为001AH、PR0入口地址为入口地址为0110H、,参考,参考2.4.2节,求节,求AJMPPR0的机器码的机器码00

33、00000100010000001000010000(2110h)a10a9a8a7a6a5a4a3a2a1a0冬瘟嫩舌临贞佯慑聋经额谋猩玻踩颅盆弟惠廷虹僧泞驭妒喂知咐茸农瀑龋第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 AJMPPR0的机器码为的机器码为2110H,PR1入口地址为入口地址为0220HAJMPPR1的机器码为的机器码为4120H,转移指令表转移指令表JPT的内容如下所示。设的内容如下所示。设B=65H,键值为键值为2:2041JPT+42002JPT+21021JPTAJMP P

34、R0AJMP PR1AJMP PR2TAB3AHTAB+147HTAB+265HTAB+370H转移指令表转移指令表JPT键码表键码表TAB65HA2B2AA=1A=2A=065H65H鹅龚挞码咐尤访伸宁盂食飞旗般催罗帝租物经做壁戈陡斟侵听菌伸捧扮苏第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0000HMOVDPTR,#TAB;置键码表首址置键码表首址MOVA,#0;表的起始位的偏移量为表的起始位的偏移量为0NEXT:PUSHACCMOVCA,A+DPTR;A=键码表的编码键码表的编码CJ

35、NEA,B,AGAN;将将B中值和键码表的值比较中值和键码表的值比较POPACCRLA;如相等如相等,序号乘序号乘2得分支表内偏移量得分支表内偏移量MOVDPTR,#JPT;置分支表首址置分支表首址JMPA+DPTRAGAN:POPACC;不相等比较下一个不相等比较下一个INCA;序号加序号加1CJNEA,#5,NEXTSJMP$;键码查完还没有键码查完还没有B中按键编码程序结束中按键编码程序结束JPT:AJMPPR0;分支转移表分支转移表AJMPPR1AJMPPR2AJMPPR3AJMPPR4TAB:DB3AH,47H,65H,70H,8BH;键码表键码表END拥徽旷编涉赦墩搁砷闻臭瞻氦贷妓

36、蹈晃汀馁窑琐渣睫惜晴悍缀漫猾涣惜境第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 当程序中的某些指令需要反复执行多次时,采用循环程当程序中的某些指令需要反复执行多次时,采用循环程序的方式,这样会使程序缩短,节省存储单元(并不节省序的方式,这样会使程序缩短,节省存储单元(并不节省执行时间)。执行时间)。循环次数的控制,有两种控制方式循环次数的控制,有两种控制方式:第一种方法第一种方法先判断再处理即先判断满不满足循环条件,如不满足,就先判断再处理即先判断满不满足循环条件,如不满足,就不循环,多以循环条件

37、控制。不循环,多以循环条件控制。第二种方法第二种方法先处理再判断,即循环执行一遍后,下一轮还需不需要进先处理再判断,即循环执行一遍后,下一轮还需不需要进行,多以计循环次数控制。循环可以有单重循环和多重循行,多以计循环次数控制。循环可以有单重循环和多重循环,在多重循环中,内外循环不能交叉,也不允许外循环环,在多重循环中,内外循环不能交叉,也不允许外循环跳入内循环。下面通过几个实例说明循环程序的设计方法。跳入内循环。下面通过几个实例说明循环程序的设计方法。3.5循循环环程程序序设设计计扰类训氦渝吮蛀匈攻菊孵湖板唐家痕配钧宫鼓玫礁羌本会存遂颁慈湿抿兔第3章MCS51单片机汇编语音程序设计第3章MCS

38、51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例例3-9设计一个延时设计一个延时10ms的延时子程序,已知单片机使用的的延时子程序,已知单片机使用的晶振为晶振为6MHz。分析分析:延时时间与两个因素有关延时时间与两个因素有关:晶振频率和循环次数。由于晶振频率和循环次数。由于晶振采用晶振采用6MHz,一个机器周期是,一个机器周期是2s,用单循环可以实现,用单循环可以实现1ms延时,外循环延时,外循环10次即可达次即可达10ms延时。延时。内循环如何实现内循环如何实现1ms延时呢,程序中可先以未知数延时呢,程序中可先以未知数MT代代替,从附录替,从附

39、录A查每条指令机器周期计算程序的执行时间。查每条指令机器周期计算程序的执行时间。莽煞锐粳玄颤疲夸饲篡裂甄梯秧颅于命我孰淌箭这亭订柄扩潍整掉批霸枢第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0020HMOVR0,#0AH;外循环;外循环10次次DL2:MOVR1,#MT;内循环;内循环MT次次DL1:NOPNOP;空操作指令;空操作指令DJNZR1,DL1DJNZR0,DL2RET内循环内循环DL1到指令到指令DJNZR1,DL1的计算:的计算:(1+1+2)2SMT=1000SMT=125

40、=7DH将将7DH代入上面程序的代入上面程序的MT,计算总的延时时间:,计算总的延时时间:1+1+(1+1+2)125+28102S=10062S=10.062mS若需要延时更长时间,可以采用多重循环。若需要延时更长时间,可以采用多重循环。内内外外此米候宾诉皇欠搬苗闲碗涯膘筷鸿灵几呛谱询韵揩行旷茵鹿委湛泉扑霉渗第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例例3-10编写多字节数编写多字节数10程序。程序。内部内部RAM以以20H为首址的一片单元中存放着一个多字为首址的一片单元中存放着一个多字节符

41、号数,字节数存放在节符号数,字节数存放在R7中,存放方式为低位字节在低中,存放方式为低位字节在低地址,高位字节在高地址,要求乘地址,高位字节在高地址,要求乘10后的积仍存放在这一片后的积仍存放在这一片单元中。单元中。分析分析用用R1作该多字节的作该多字节的地址指针,部分积的低位仍地址指针,部分积的低位仍存放于本单元,部分积的高存放于本单元,部分积的高位存放于位存放于R2,以便和下一,以便和下一位的部分积的低位相加。位的部分积的低位相加。以以R7作字节数计数。作字节数计数。编程如下:编程如下:345H0AH32H28H2BH1EH20BH挂蠢舒吊攒确垮埔老匀话鞍几适蹦溯姨蛹骏弓讨江柒阵牛饼降骚您

42、捌翅矣第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0000HCLRC;清进位位;清进位位CMOVR1,#20H;R1指示地址指示地址MOVR2,#00H;存积的高八位寄存器;存积的高八位寄存器R2清清0S10:MOVA,R1;取一字节送;取一字节送AMOVB,#0AH;10送送BPUSHPSWMULAB;字节乘;字节乘10POPPSWADDCA,R2;上次积高八位加本次积低八位;上次积高八位加本次积低八位MOVR1,A;送原存储单元;送原存储单元MOVR2,B;积的高八位送;积的高八位送R

43、2INCR1;指向下一字节;指向下一字节DJNZR7,S10;未乘完去;未乘完去SH10,否则向下执行,否则向下执行MOVR1,B;存最高字节积的高位;存最高字节积的高位SJMP$蛀盔液的闺啼恤熔缄浴解卉鸯仙梆保添坟肌肮愚驼镊观狡辰向饭疏触娩酒第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例如例如1223650989比较大小比较大小不交换不交换(0)12236509191223650919交换交换(1)1223096519不交换不交换(0)交换交换(1)12236509191223091965最大

44、最大交换交换(1)不交换不交换(0)12230919651209231965交换交换(1)1209192365不交换不交换(0)交换交换(1)12230919651209192365最大最大12091923650912192365091219236509121923650912192365歪啊蹋季屋粹真吊瓢驰午癸慎杂渣伟涣许苑跃宠女蜗鉴沙美慑绳虏侩撮狸第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 寅抠跃准归拧釜抄三糟檬胖填惧椰附捐弘炽翱副瞅奋下撤番毅簧李萤蘸连第3章MCS51单片机汇编语音程序设计

45、第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 MCS-51单片机有着优异的位逻辑功能单片机有着优异的位逻辑功能,可以方便的实现可以方便的实现各种复杂的逻辑运算各种复杂的逻辑运算.这种用软件替代硬件的方法这种用软件替代硬件的方法,可以大可以大大简化甚至完全不用硬件大简化甚至完全不用硬件,但比硬件要多花运算时间。但比硬件要多花运算时间。例例3-17编写一程序编写一程序,以实现图以实现图3-4中的逻辑运算电路中的逻辑运算电路.3.6位操作程序设计位操作程序设计贫伤鸦宾肿木具卡薄邵炸赁吗竟续盔望畸卓彭负痘庚茬蚂冰深肺晓坐蚤长第3章MCS51单

46、片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 其中其中P1.1和和P2.2分别是端口线上的信息分别是端口线上的信息,TF0和和IE1分别是定分别是定时器定时溢出标志和外部中请求标志时器定时溢出标志和外部中请求标志,25H和和26H分别是两个分别是两个位地址位地址,运算结果由端口线运算结果由端口线P1.3输出。输出。图图3-4硬件逻辑运算电路硬件逻辑运算电路钢瞧救淬庙类辕镣污小邮祸享洱驹由番耻类郡塘嘛啃栖叛讣吱惰秽日宫进第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51

47、单片机汇编语言程序设计单片机汇编语言程序设计 程序如下:程序如下:START:MOVC,P2.2ORLC,TF0ANLC,P1.1MOVF0,CMOVC,IE1ORLC,/25HANLC,F0ANLC,/26HMOVP1.3,CSJMP$轧秒差博归挥咨暮河琉劫陋挚藉诧县紫云伴棋连膊羡物读间诵冉排宴美逼第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 例例3-18设累加器设累加器A的各位的各位ACC.0ACC.7分别记为分别记为X0X7,编,编制程序用软件实现下式制程序用软件实现下式:Y=X0X1X2+

48、X0X1X2+X0X1X2X3+X4X5X6X7 X0BITACC.0X1BITACC.1X2BITACC.2X3BITACC.3X4BITACC.4X5BITACC.5X6BITACC.6X7BITACC.7奏盘弄何帚看呕剂菩其浓晕在役枕躬侈抚尘姬愁忘雌喂参伏暇姻啸坯管暖第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 ORG0000HMOVC,X0ANLC,X1ANLC,X2MOV00H,C;X0X1X2MOVC,X0ANLC,/X1MOV01H,C;X0X1ANLC,/X2ORLC,00HMOV

49、00H,CMOVC,X2ANLC,01H ANLC,X3;X0X1X2X3ORLC,/00HMOV00H,CMOVC,X7ANLC,/X6ANLC,/X5ANLC,/X4;X4X5X6X7ORLC,00H;最终结果最终结果YCSJMP$录呆掣悍赶摄谨恳亿铺群介霞氦闻阉回捻或奉耕位税囚盛槽厂挪掷搓状马第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 子程序是构成单片机应用程序必不可少的部分,通过子程序是构成单片机应用程序必不可少的部分,通过ACALL和和LCALL两条子程序调用指令,可以十分方便地两条子

50、程序调用指令,可以十分方便地用来调用任何地址处的子程序。用来调用任何地址处的子程序。子程序节省占用的存储单元,使程序简短、清晰,善子程序节省占用的存储单元,使程序简短、清晰,善于灵活的使用子程序,是程序设计的重要技巧之一。于灵活的使用子程序,是程序设计的重要技巧之一。子程序必须以子程序必须以RET指令结尾指令结尾.在调用子程序时,有以下几点应在调用子程序时,有以下几点应注意注意:3.7子程序子程序当一段程序需多次应用当一段程序需多次应用,或为多人应用时或为多人应用时,这段程序编为子这段程序编为子程序程序.什犁乐过铃罐氓弛棠捐即镜崩样纹选名任晤锚惟妨阳索瓜糙雁盟谐抬碳袱第3章MCS51单片机汇编

51、语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 1)保护现场。)保护现场。如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时,如果在调用前主程序已经使用了某些存储单元或寄存器,在调用时,这些寄存器和存储单元又有其他用途,就应先把这些单元或寄存器这些寄存器和存储单元又有其他用途,就应先把这些单元或寄存器中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。中的内容压入堆栈保护,调用完后再从堆栈中弹出以便加以恢复。如果有较多的寄存器要保护,应使主、子程序使用不同的寄存器组。如果有较多的寄存器要保护,应使主、子程序使用

52、不同的寄存器组。2)设置入口参数和出口参数。)设置入口参数和出口参数。用之前主程序要按子程序的要求设置好地址单元或存储器(称为用之前主程序要按子程序的要求设置好地址单元或存储器(称为入口参数),以便子程序从指定的地址单元或存储器获得输入数据;入口参数),以便子程序从指定的地址单元或存储器获得输入数据;子程序经运算或处理后的结果存放到指定的地址单元或寄存器子程序经运算或处理后的结果存放到指定的地址单元或寄存器(称为出口参数),主程序调用后从指定的地址单元或寄存器读取(称为出口参数),主程序调用后从指定的地址单元或寄存器读取运算或处理后的结果,只有这样,才能完成子程序和主程序间的数运算或处理后的结

53、果,只有这样,才能完成子程序和主程序间的数据的正确传递。据的正确传递。臃队磊音雍椎阿刊渗坦级峨卤试登客爷仑童嫩刹套毯领性岭躯剔趁掣站挝第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 3)子程序中可包括对另外子程序的调用,称为子程序嵌套。)子程序中可包括对另外子程序的调用,称为子程序嵌套。例例3-19用程序实现用程序实现c=a2+b2,设,设a,b均小于均小于10。a存放在存放在31H单元,单元,b存放在存放在32H单元,把单元,把c存入存入34H和和33H单元。(和要求为单元。(和要求为BCD码)码

54、)。解解:因该算式两次用到平方值,所以在程序中采用把求平方:因该算式两次用到平方值,所以在程序中采用把求平方编为子程序的方法。求平方采用查表法编为子程序的方法。求平方采用查表法,主程序和子程序编写如主程序和子程序编写如下:下:有掘旗料哩森闹膊万妥字遇另穆哺司炼檀哉埂带狙甲敌霍抹票暮商羚户帘第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 主程序:主程序:ORG0000HMOVSP,#3FHMOVA,31H;取;取aLCALLSQR;求求a方方MOVR1,AMOVA,32H;取;取bLCALLSQR;求

55、求b方方ADDA,R1;求和求和DAA;调整;调整MOV33H,AMOVA,#0ADDCA,0MOV34H,ASJMP$子程序:子程序:ORG0030HSQR:INCAMOVCA,A+PCRETTAB:DB00H,01H,04HDB09H16H,25H,DB36H,49H64H,81HEND烤碳荫徊孺楼姑球恕脖钨透躺鞘葱胎牟础茵墒染嘛烫惫又布案离铺剖吼铂第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计第第3章章MCS-51单片机汇编语言程序设计单片机汇编语言程序设计 3.8小小结结1、程序设计的关键在于指令熟悉和算法、程序设计的关键在于指令熟悉和算法(思路思路)正确

56、、清晰,正确、清晰,对复杂的程序应先画出流程图。只有多做练习多上机调试,对复杂的程序应先画出流程图。只有多做练习多上机调试,熟能生巧,才能编出高质量的程序。熟能生巧,才能编出高质量的程序。2、伪指令是非执行指令,提供汇编程序以汇编信息,应正确、伪指令是非执行指令,提供汇编程序以汇编信息,应正确使用。使用。3、本章应掌握顺序程序、分支程序、循环程序、子程序等各、本章应掌握顺序程序、分支程序、循环程序、子程序等各类程序的设计方法,并能熟练应用查表技术简化程序的设类程序的设计方法,并能熟练应用查表技术简化程序的设计。计。扒纽鹤钻聚剖钓殴靠普辽惫慰疗怀惰沽薪渣敖品耘它蔬战冰谎素净圾蒂疟第3章MCS51单片机汇编语音程序设计第3章MCS51单片机汇编语音程序设计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号