欢迎来到人人文库网! | 帮助中心 人人文档renrendoc.com美如初恋!
人人文库网
全部分类
  • 图纸下载>
  • 教育资料>
  • 专业文献>
  • 应用文书>
  • 行业资料>
  • 生活休闲>
  • 办公材料>
  • 毕业设计>
  • ImageVerifierCode 换一换
    首页 人人文库网 > 资源分类 > PPT文档下载  

    《查表程序设计》PPT课件.ppt

    • 资源ID:19202255       资源大小:618.31KB        全文页数:39页
    • 资源格式: PPT        下载积分:15积分
    扫码快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
    二维码
    微信扫一扫登录

    手机扫码下载

    请使用微信 或支付宝 扫码支付

    • 扫码支付后即可登录下载文档,同时代表您同意《人人文库网用户协议》

    • 扫码过程中请勿刷新、关闭本页面,否则会导致文档资源下载失败

    • 支付成功后,可再次使用当前微信或支付宝扫码免费下载本资源,无需再次付费

    账号:
    密码:
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源(1积分=1元)下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《查表程序设计》PPT课件.ppt

    第九课,复习,4.3.3 查表程序设计,4.3 汇编语言实用程序设计,4.3.8 循环程序设计,4.3.7 分支转移程序设计,复习,一个源程序的四个要素 子程序:形式、功能、入口参数、出口参数 子程序的调用:调用过程示意图 子程序调用及返回指令的执行过程 子程序的现场保护和参数传递 查表程序,一个完整的源程序必备的四个要素:,有ORG 0000H,即源程序的机器码从ROM的0000H单元开始存放。 通常源程序的存放要跳过中断向量区。实现方法:在0000H单元存放一条转移指令,转向中断向量区后的主程序的真实的入口地址,如START、MAIN等。 有END,告知汇编程序,你的源程序结束了。 源程序的主程序框架一定是一个顺序执行的无限循环的程序,运行过程必须构成一个圈;子程序与主程序相对独立。,4.3 汇编语言实用程序设计,MOV 30H, #20 MOV 40H, #50H CLR A LCALL ABC 按照规则包装成.ASM,ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV 30H, #20 MOV 40H, #50H CLR A LCALL ABC SJMP $ ABC: MOV R3, #30H ;?30H MOV R1, #40H ;?40H CLR A L1: MOV R1,A INC R1 DJNZ R3, L1 RET END,4.3 汇编语言实用程序设计,LENG EQU 10 SUM EQU 21H BLOCK EQU 22H ORG 0000 LJMP START ORG 0030H START: CLR A MOV R7, #LENG MOV R0, #BLOCK LOOP: ADD A, R0 INC R0 DJNZ R7, LOOP MOV SUM, A END,复习EQU,功能?,有错吗?,包装成子程序?,SJMP $ END,LENG EQU 10 SUM EQU 21H BLOCK EQU 22H ORG 0000 LJMP START ORG 0030H START: CLR A MOV R7, # LENG MOV R0, #BLOCK LCALL LOOP SJMP $ LOOP: ADD A, R0 INC R0 DJNZ R7, LOOP MOV SUM, A RET END,首先是用DB、DW伪指令建表,把握表格中的数据的位置与x的关系。由x来表达y在程序存储器中的地址,然后用MOVC指令实现查表。 例如:求x平方时的表格结构。 DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H 举例:自编例1、例2、例3及课本上的例4-5、例4-6、例4-7。,4.3.3 查表程序设计,4.3 汇编语言实用程序设计,数据补偿、修正、计算、转换等各种功能,具有程序简单、执行速度快等优点。,查表就是根据自变量x,在表格中寻找y,使y=f(x)。,指令“MOVC A,A+DPTR”完成把A中的内容作为一个无符号数与DPTR中的内容相加,所得结果为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器A中。 指令“MOVC A,A+PC”以PC作为基址寄存器,PC的内容和A的内容作为无符号数,相加后所得的数作为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器A中。,4.3 汇编语言实用程序设计-查表程序设计,指令系统中给用户提供了两条极为有用的查表指令: MOVC A,A+DPTR MOVC A,A+PC 执行查表指令时,发出读程序存储器选通脉冲/PSEN。,例4-5 子程序的功能为:根据累加器A中的数x(09之间)查x的平方表y,根据x的值查出相应的平方y。x和y均为单字节数。 地 址 子程序 Y ADD A,#01H Y+2 MOVC A,A+PC Y+3 RET Y+4 DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H 第1条指令 ADD A,#01H 的作用是加上偏移量,可以根据A的内容查出X对应的平方。,MOVC A,A+PC的学习,4.3 汇编语言实用程序设计-查表程序设计,TAB1: DB 00H,01H,04H,09H,10H DB 19H,24H,31H,40H,51H,例1:求x的平方,x:09 特点:x、y均为一字节, y=f(x)在ROM中的地址是TAB1+x,ABC: MOV A, R0 PUSH DPH ;保存DPH PUSH DPL ;保存DPL MOV DPTR,#TAB1 MOVC A,A+DPTR POP DPL ;恢复DPL POP DPH ;恢复DPH RET,ABC: MOV A, R0 MOV DPTR,#TAB1 MOVC A,A+DPTR RET,堆栈指令的使用,4.3 汇编语言实用程序设计-查表程序设计,例2:求一个09的数是立方 特点:x为一字节、y为两字节, y=f(x)在ROM中的地址 是TAB1+2x及TAB1+2x+1 入口参数:在R0中; 出口参数:在R2、R1中,高字节在R2中,ABC: MOV A , R0 RL A MOV B, A MOV DPTR, #TAB MOVC A, A+DPTR MOV R2, A MOV A, B INC A MOVC A, A+DPTR MOV R1, A RET TAB: DW 0, 1, 8, 27, 64 DW 125, 216, 343, 512, 729,4.3 汇编语言实用程序设计-查表程序设计,例4-6,例4-6 在一个以MCS-51为核心的温度控制器中,温度传感器输出的电压与温度为非线性关系,传感器输出的电压已由A/D转换为10位二进制数x。根据测得的不同温度下的电压值数据构成一个表,表中放温度值y,x为电压值数据。设测得的电压值x放入R2R3中,根据电压值x,查找对应的温度值y,仍放入R2R3中。,特点:本例的x和y均为双字节无符号数。 y=f(x)在ROM中的地址 是TAB2+2x及TAB2+2x+1 入口参数:在R2R3 中; 出口参数:在R2R3 中; *学习双字节无符号数乘2的解决方法。 读P81 例4-6,4.3 汇编语言实用程序设计-查表程序设计,例4-7,例4-7 设有一个巡回检测报警装置,需对16路输入进行检测,每路有一最大允许值,为双字节数。运行时,需根据测量的路数,找出每路的最大允许值。看输入值是否大于最大允许值,如大于就报警。根据上述要求,编一个查表程序。 取路数为x(015),y为最大允许值,事先存放在表格中。,特点:x为单字节、 y均为双字节无符号数。 y=f(x)在ROM中的地址是TAB3+2x及TAB3+2x+1 入口参数:在R2 中; 出口参数:在R3R4 中; *又一种单字节无符号数乘2的解决方法。 用MOVC A,A+PC,偏移量的求法。 读P81 例4-7 问题:出口参数R3R4中哪个是高字节?,4.3 汇编语言实用程序设计-查表程序设计,子程序与查表的综合举例,例3 编写程序,实现 。设a,b,c分别存于内部RAM的30H,31H,32H三个单元中。程序段如下: START:MOV A,30H ;取a ACALL SQR ;调用查平方表 MOV R1,A ;a2 暂存于R1中 MOV A,31H ;取b ACALL SQR ;调用查平方表 ADD A,R1 ;a2+b2 存于A中 MOV 32H,A ;存结果 SJMP $ SQR :MOV DPTR,#TAB ;子程序 MOVC A,A+DPTR ; RET TAB :DB 0,1,4,9,16 ,25,36,49,64,81,4.3 汇编语言实用程序设计-查表程序设计,思考题,求 x平方,x在R0中,取值范围在515,ABC: MOV A, R0 MOV DPTR,#TAB1 MOVC A,A+DPTR RET TAB1: DB 25, 36, 49, 64,81 DB 100,121,169,196,225,ABC: MOV A, R0 CLR C SUBB A, #5 MOV DPTR,#TAB1 MOVC A,A+DPTR RET TAB1: DB 25, 36, 49, 64,81 DB 100,121,169,196,225,4.3 汇编语言实用程序设计-查表程序设计,特点是程序中含有转移指令。 转移指令有分为无条件转移和有条件转移。 有条件分支转移程序按结构类型来分,又分为单分支转移结构和多分支转移结构。,4.3.7 分支转移程序设计,1单分支转移结构 程序的判别部分仅有两个出口,两者选一。,2多分支转移结构 程序的判别部分有两个以上的出口流向。,4.3 汇编语言实用程序设计-分支转移程序设计,4.3 汇编语言实用程序设计-分支转移程序设计,4.3 汇编语言实用程序设计-分支转移程序设计,4.3 汇编语言实用程序设计-分支转移程序设计,有条件转移指令通常可以完成单分支转移 下列两种转移指令可以完成多分支转移 间接转移指令: JMP A+DPTR; 比较转移指令: CJNE A,direct,rel; CJNE A,#data,rel; CJNE Rn,#data,rel; CJNE Ri,#data,rel;,4.3 汇编语言实用程序设计-分支转移程序设计,例4两个无符号数比较,例4-13 散转,例4-12 求符号函数的值。,例5 :求50H单元后30个数的累加和,例4-16 测试字符串长度的程序。,例4-17 50ms延时程序,练习:写一个延时10ms的子程序。(钟频12MHz ),(2)分支程序设计,例4两个无符号数比较,内部RAM的40H单元和41H单元各存放了一个8位无符号数, 请比较这两个数的大小,比较结果通过单片机对LED的控制显示出来。即:,若(40H)(41H),则P1.0管脚连接的LED发光; 若(40H)(41H),则P1.1管脚连接的LED发光。,4.3 汇编语言实用程序设计-分支转移程序设计,N,开始,(40H)-(41H),CY0?,(40H)(41H) P1.0灯亮,(40H)(41H) P1.1灯亮,结束,图 两个无符号数比较流程图,流程图,4.3 汇编语言实用程序设计-分支转移程序设计,ORG 1000H CLR C ;清CY为零 MOV A,40H ;取第一个数送A SUBB A,41H ;两数比较 JNC LED0 ;CY=0,转至LED0 CLR P1.1 ;CY=1,(40H)(41H),点亮P1.1 LED LED0: CLR P1.0 ;CY=0,40H(41H),点亮P1.0 LED FINISH: RET,方法1:使用SUBB指令,依据借位CY状态判断两个数的大小!,4.3 汇编语言实用程序设计-分支转移程序设计,SJMP FINISH ;跳转到结束,ORG 0000H MOV A,40H ;取40H单元数据送A CJNE A,41H,COMP ;两数比较 COPM: JNC LED0 ;相等后的判别 CLR P1.1 ;CY=1,(40)(41H) ;点亮P1.1;连接的LED SJMP FINISH ;跳转到结束 LED0: CLR P1.0 ;CY=0,40H(41H), ;点亮P1.0连接的LED FINISH: SJMP $ END,方法2:使用CJNE指令比较,借位CY来判断两个数的大小!,4.3 汇编语言实用程序设计-分支转移程序设计,例4-12 求符号函数的值。程序框图如图4-6所示。,数据规划:X放40H Y放41H 用CJNE指令,借助于CY,可以判别X的符号。,4.3 汇编语言实用程序设计-分支转移程序设计,读P89,注意其中的转移指令AJMP NEGT,练习题: 设变量 x 以补码的形式存放在片内RAM的30H单元,变量 y 与 x 的关系是:当 x 大于0时,y =x;当 x =0时,y =20H;当 x 小于0时,y =x+5。编制程序,根据 x 的大小求y并送回原单元。,4.3 汇编语言实用程序设计-分支转移程序设计,多分支转移结构,典型的例子,当单片机系统中的键盘按下时,就会得到一个键值,根据不同的键值,跳向不同的键处理程序入口。,根据某一单元的内容是0,1,n,来分别转向处理程序0,处理程序1,处理程序n。 对于这种情况,可用直接转移指令(LJMP或AJMP指令)组成一个地址转移表,然后把该单元的内容(键值)读入累加器A(?),地址转移表首地址放入DPTR中,再利用间接转移指令(JMP A+DPTR)实现分支转移。,4.3 汇编语言实用程序设计-分支转移程序设计,例4-13 根据寄存器R2的内容,转向各个处理程序PRGx (x=0n) (R2)=0,转PRG0 (R2)=1,转PRG1 (R2)=n, 转PRGn,JMP6: MOV DPTR, #TAB6 MOV A, R2 MOV B, #03 ; MUL AB JMP A+DPTR TAB6: LJMP PRG0 LJMP PRG1,4.3 汇编语言实用程序设计-分支转移程序设计,地址转移表,4.3.8 循环程序设计,优点:(1)可大大缩短程序长度 (2)使程序所占的内存单元数量少 (3)使程序结构紧凑和可读性变好。,4循环结束,2循环处理,3循环控制,1循环初始化,4.3 汇编语言实用程序设计,一、循环程序的结构 循环结构程序主要由以下四部分组成。,1循环初始化 循环初始化程序段用于完成循环前的的准备工作。例如,循环控制计数初值的设置、地址指针的起始地址的设置、为变量预置初值等。 2循环处理 循环程序结构的核心部分,完成实际的处理工作,是需反复循环执行的部分,故又称循环体。这部分程序的内容,取决于实际处理问题的本身 3循环控制 在重复执行循环体的过程中,不断修改循环控制变量,直到符合结束条件,就结束循环程序的执行。循环结束控制方法分为循环计数控制法和条件控制法 4循环结束 这部分是对循环程序执行的结果进行分析、处理和存放。,4.3 汇编语言实用程序设计-循环程序设计,二、循环结构的控制 图4-8是计数循环控制结构,图4-9是条件控制结构。,直到型,当性,4.3 汇编语言实用程序设计-循环程序设计,1计数循环结构,计数循环控制结构是依据计数器的值来决定循环次数,一般为减“1” 计数器,计数器减到“0”时,结束循环。计数器的初值是在初始化时设定。 MCS-51的指令系统提供了功能极强的循环控制指令: DJNZ Rn, rel;工作寄存器作控制计数器 DJNZ direct,rel;以直接寻址单元作控制计数器 例如,计算n个数据的和。 程序框图见图4-10 。P92,计数控制方法只有在循环次数已知的情况下才适用。,4.3 汇编语言实用程序设计-循环程序设计,ABC: MOV R7,#30 MOV R0,#50H CLR A LOOP: ADD A,R0 INC R0 DJNZ R7,LOOP MOV B,A RET,初始化,循环体,循环结束,4.3 汇编语言实用程序设计-循环程序设计,例5 :求50H单元后30个数的累加和,放入B,如果结果有进位,怎么办?见P93,2条件控制结构,例4-16 设有一串字符,依次存放在内部RAM从30H单元开始的连续单元中,该字符串以0AH为结束标志,编写测试字符串长度的程序。,4.3 汇编语言实用程序设计-循环程序设计,本例采用逐个字符依次与“0AH”比较的方法。为此设置一个长度计数器和一个字符串指针。长度计数器用来累计字符串的长度,字符串指针用于指定字符。如果指定字符与“0AH”不相等,则长度计数器和字符串指针都加1,以便继续往下比较;如果比较相等,则表示该字符为“0AH”,字符串结束,长度计数器的值就是字符串的长度。程序见P93。,3.多重循环,延时程序与MCS-51指令执行时间有很大的关系。在使用12MHz晶振时,一个机器周期为1µs,执行一条DJNZ指令的时间为2µs。这时,可用双重循环方法写出下面如下的延时50ms的程序: DEL: MOV R7,#200 DEL1: MOV R6,#125 DEL2: DJNZ R6,DEL2 ;125*2=250µs DJNZ R7,DEL1 ;0.25ms*200=50ms RET,4.3 汇编语言实用程序设计-循环程序设计,例4-17 50ms延时程序。,机器周期T1S,t= 1+200(1+2*125+2)+2*T = 50603*T = 50.603mS,125 200,4.3 汇编语言实用程序设计-循环程序设计,如果要求比较精确的延时,可按如下修改: DEL: MOV R7,#200 DEL1: MOV R6,#123 NOP DEL2: DJNZ R6,DEL2 ;2*123+2=248µs DJNZ R7,DEL1 ;(248+2)*200+1=50.001ms RET,t= 1+200(1+1+2*123+2)+2*T = 50003*T = 50.003mS,注意: 软件延时程序,不允许有中断,否则将严重影响定时的准确性。,4.3 汇编语言实用程序设计-循环程序设计,练习:,写一个延时10ms的子程序。(近似值,钟频12MHz ) 写一个延时1s的子程序。,DEL10: MOV R7,#200 DEL1: MOV R6,#25 DEL2: DJNZ R6,DEL2 ;25*2=50µs DJNZ R7,DEL1 ;0.05ms*200=10ms RET,DEL1S: MOV R5, #100 LLL: ACALL DEL10 DJNZ R5, LLL RET,九结束,4.3 汇编语言实用程序设计-循环程序设计,

    注意事项

    本文(《查表程序设计》PPT课件.ppt)为本站会员(xt****7)主动上传,人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知人人文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    网站客服QQ:2881952447     

    copyright@ 2020-2024  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

    备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!