单片机第四章 80C51单片微机的程序设计.ppt

单片机第四章 80C51单片微机的程序设计.ppt

  1. 1、本文档共110页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 80C51单片微机的程序设计 4.1概述 4.1.1 汇编语言格式 4.2 80C51汇编语言程序设计 图4–1 汇编过程示意图 图4–2 单分支结构示意图 图4–3 多分支结构示意图 图4–4 计数循环结构示意图 图4–5 条件循环结构示意图 图4–6 子程序调用与返回过程示意图 0007H 08 PX1:INC R0 0008H F9 MOV R1,A 0009H 96 SUBB A , @R0 ; DX-DX+1 000AH E9 MOV A , R1 000BH 40 06 JC PX2 ; DX<DX+1则转PX2,不交换 000DH D2 00 SETB 00H ;DX>DX+1量交换标志位,20H.0=1 000FH C6 XCH A , @R0 ; DX与 DX+1交换 0010H 18 DEC R0 0011H C6 XCH AV@R0 0012H 08 INC R0 0013H E6 PX2:MOV A , @R0 ;A< DX+1 0014H DB F1 DJNZ R3 , PX1 ;比较9次 0016H 20 00 E7 JB 00H , PX ;有交换则再比较一遍 0019H 80 FE END0:SJMP END0? 执行结果(50H)中为最小数,(59H)中为最大数。 ⒉ 已知采样值(无符号数)存放在外部RAM 1000H~100FH中,试编程找出其中的最大值存入内部RAM区的20H中。 ORG 0000H MOV R0,#10H ;采样值数据区长度 MOV DPTR,#1000H ;采样值存放首址 MOV 20H,#00H ;最大值单元初始值设为最小数 LP:MOVX A,@DPTR ;取采样值 CJNE A,20H,CHK ;数值比较 SJMP LP1 ;相等,则转移 查找无符号数中最大值程序 CHK:JC LP1 ;A值小,转移 MOV 20H,A ;A值大,则送20H LP1: INC DPTR DJNZ R0,LP ;继续 HERE:SJMP HERE ;结束 注:20H中始终存放两个数比较后的大值,比较结束后存放的即是最大值。 *若要寻找最小值,只要在初始化时,把可能的最大值放入最小值存放单元, 比较转移用的标志位由C改为NC即可。 3.数据搜索程序 在数据区中寻找关键字,称为数据搜索。常用的方法有两种,即顺序搜索和对分搜索。 顺序搜索:把关键字与数据区中的数据逐个比较,相等者即为找到的关键字。 对分搜索:按对分原则进行取数与关键字比较,但前提是数据区中的数已排好序,这样搜索一次后,搜索的数据区范围缩小一半,搜索速度快 已知数据区内有16个数,从内部RAM30H开始存放,要搜索的关键字在20H中,若数据区中搜索到关键字,则在21H中记录关键字在数据区中的序号,若数据区中没有搜索到关键字,则置用户标志F0为1。 ORG 0000H MOV R0,#30H ;数据区首址 MOV R1,#16 ;数据区长度 MOV 20H,#KEY ;关键字送20H单元 CLR F0 ;清用户标志位 MOV 21H,#01 ;序号置1 例.搜索关键字 LP:MOV A,@R0 ;取数 CJNE A,20H,LP1 HERE:SJMP HERE ;找到关键字,结束 LP1:INC 21H ;序号加1 INC R0 ;数据区地址指针加1 DJNZ R1,LP;继续 SETB F0 ;未搜索到关键字,则置位用户标志 SJMP HERE END CHK6:CJNE A , #6 , CHK7 INC 26H ;是“6”,则“6”计数单元加1 SJMP END0 CHK7:CJNE A , 7 , CHK8 INC 27H ;是“7”,则“7”计数单元加1 SJMP END0 CHK8:CJNE A , #8 , CHK9 INC 28H ;是“8”,则“8”计数单元加1 SJMP END0 CHK9:CJNE A , #9 , ERR INC 29H ;是“9”,则“9”计数单元加1 END0:DJNZ R0 , READ ;判是否全部统计完? HERE:SJMP HERE ERR:… ;非0~9,出错 循环:强制CPU重复多次地执行一串指令的基本程

文档评论(0)

经管专家 + 关注
实名认证
内容提供者

各类文档大赢家

版权声明书
用户编号:6055234005000000

1亿VIP精品文档

相关文档