考点3 循环和查表程序《单片机原理与应用》四川省(对口招生)电子信息类 知识点讲解

2026-04-03
| 9页
| 30人阅读
| 0人下载
中职电子知识铺
进店逛逛

资源信息

学段 中职
学科 职教专业课
课程 单片机技术与应用
教材版本 -
年级 -
章节 -
类型 题集-综合训练
知识点 汇编语言程序设计方法
使用场景 中职复习-一轮复习
学年 2026-2027
地区(省份) 四川省
地区(市) -
地区(区县) -
文件格式 DOCX
文件大小 1021 KB
发布时间 2026-04-03
更新时间 2026-04-07
作者 中职电子知识铺
品牌系列 上好课·一轮讲练测
审核时间 2026-04-03
下载链接 https://m.zxxk.com/soft/57163998.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

四川省(电子信息大类)对口招生《单片机原理与应用》 复习讲义 模块 4 程序设计方法 考点三 循环和查表程序 【考纲要求】 1. 能够识读和编写循环程序,知道延时程序的控制原理。 2. 知道查表程序的编写方法,能够识读和编写查表程序。 3. 了解子程序的编写基础,掌握子程序调周用和返回的方法,理解延时子程序的功能。 【知识网络】 【知识和技能要点】 一、循环程序的组成 特点是程序中含有可以反复执行的程序段,该程序段通常称为循环体。 (1)可大大缩短程序长度(2)使程序所占的内存单元数量少(3)使程序结构紧凑和可读性变好。循环结构程序主要由以下四部分组成。 1.循环初始化,循环初始化程序段用于完成循环前的的准备工作。例如,循环控制计数初值的设置、地址指针的起始地址的设置、为变量预置初值等。 2.循环处理,循环程序结构的核心部分,完成实际的处理工作,是需反复循环执行的部分,故又称循环体。这部分程序的内容,取决于实际处理问题的本身。 3.循环控制,在重复执行循环体的过程中,不断修改循环控制变量,直到符合结束条件,就结束循环程序的执行。循环结束控制方法分为循环计数控制法和条件控制法 4.循环修改,修改循环参数,为下次循环做准备。 2、 单重循环 只循环一次的循环称为单重循环。 循环程序中,控制循环次数的方式有多种:如果循环次数已知,常用DJNZ指令来控制循环,这种循环程序为“先执行,后判断”结构;如果循环次数未知,可以按条件控制循环,常用条件转移指令来控制,这种循环程序为“先判断,后执行”结构。 1.“先执行,后判断”结构 在这种结构中,进入循环体后,先执行一次循环体后,再判断循环是否结束。对“先执行,后判断”结构而言,至少要执行一次循环体,如图所示: 2.“先判断,后执行”结构 进入这种结构循环后,首先判断循环结束的条件,根据判断结果决定是否执行循环体,如果一进人循环就满足循环结束条件,循环体将一次也不执行,即循环次数为0。如图所示: 三、多重循环 遇到复杂问题时,采用单循环往往是不够的,还必须采用多重循环才能解决。所谓多重循环是指在循环程序中还嵌套其他循环。使用多重循环时,必须注意以下事项: ①循环嵌套,必须层次分明,不允许产生内外层循环交叉。 ②外循环可以一层层向内循环进入,结束时由里往外一层层退出。 ③内循环可以直接转入外循环,实现一个循环由多个条件控制的方式。 在一个循环的循环体内部,又完整包含另一个或多个循环结构,外层循环每执行一次,内层循环就完整执行一遍,用于实现复杂的重复操作,是程序设计中常用的高级循环形式。 计数循环结构 计数循环控制结构是依据计数器的值来决定循环次数,一般为减“ 1” 计数器,计数器减到“0”时,结束循环。计数器的初值是在初始化时设定。 MCS-51的指令系统提供了功能极强的循环控制指令: DJNZ Rn,rel;工作寄存器作控制计数器 DJNZ direct,rel;以直接寻址单元作控制计数器。 最常见的多重循环是由DJNZ指令构成的软件延时程序,它是常用的程序之一。 四、查表程序设计 数据补偿、修正、计算、转换等各种功能,具有程序简单、执行速度快等优点。 查表就是根据自变量x,在表格中寻找y,使y=f(x)。 执行查表指令时,发出读程序存储器选通脉冲PSEN。在MCS-51的指令系统中,给用户提供了两条极为有用的查表指令: (1) MOVC A,@A+DPTR (2) MOVC A,@A+PC 指令“MOVC A,@A+DPTR” 完成把A中的内容作为一个无符号数与DPTR中的内容相加,所得结果为某一程序存储单元的地址,然后把该地址单元中的内容送到累加器A中。使用该指令的优点是表格可以设在64K程序存储器空间内的任何地方 指令“MOVC A,@A+PC” 以PC作为基址寄存器,PC的内容和A的内容作为无符号数,相加后所得的数作为某一程序存储器单元的地址,根据地址取出程序存储器相应单元中的内容送到累加器A中。 指令执行完,PC的内容不发生变化,仍指向查表指令的下一条指令。缺点在于该表格只能存放在这条指令的地址XXXX以下的00~FFH(即256个单元)之中。表格所在的程序空间受到了限制。 【练习题】 1、 填空题 1.定义字节表格数据采用的伪指令是_______________。 2.机器周期是1us 时,执行下列程序 MOV R3,#100 LOOP:NOP DJNZ R3,LOOP 延时时间为______________。 3.循环结构的程序包括________________,_________________,___________________,______________四个部分。 4.判断开关或按键是否按下可采用的指令是____________、____________。 5..假定外部数据存储器2000H单元的内容为60H,执行下列指令后,累加器A的内容为___________。 MOV DPTR,#2000H MOV A,#00H MOV A,@DPTR 6.下列程序段执行后,R0=_________,(7EH)=_________,(7FH)=_________。 MOV R0,#7FH MOV 7EH,#0 MOV 7FH,#40H DEC @R0 二、选择题 1. 单片机指令中不生成机器码的指令是( )。 A. 数据传送指令 B. 控制转移指令 C. 伪指令 D.控制转移指令 2.下列哪个是赋值伪指令( )。 A.ORG B. EQU C. DB D.BIT 3.重复执行某一操作采用( )。 A.顺序结构 B.分支结构 C. 循环结构 D.以上都可以 4.循环次数已知的程序一般采用什么指令 ( )。 A. CJNE B.DJNZ C. JC D. JB 5.以下哪条指令是以直接寻址单元作控制计数器( ) A. MOVC A,@A+DPTR B. MOVC A,@A+PC C. DJNZ Rn,rel D. DJNZ direct,rel 6.查表程序的优点不包括( ) A. 程序简单 B. 执行速度快 C. 表格位置不受限制 D. 可实现数据补偿、转换等功能 7.指令“MOVC A,@A+PC”的缺点是( ) A. 执行速度慢 B. 表格只能存放在查表指令下00~FFH单元中 C. 不能实现查表功能 D. 需要占用大量内存 8.最常见的多重循环是由( )指令构成的软件延时程序 A. MOVC B. MOV C. DJNZ D. 条件转移 三、判断题 1.MCS—51指令系统中,指令CJNE A,#data, rel的作用相当于SUBB A,#data与JNC rel的作用。( ) 2.MCS—51指令系统中,指令JNB bit,rel是判位转移指令,即表示bit=1时转。( ) 3.8031单片机的PC与DPDR都在CPU片内,因此指令MOVC A,@A+PC与指令MOVC A,@A+DPTR执行时只在单片机内部操作,不涉及片外存储器。( ) 4.MCS—51指令系统中,指令AJMP addr11 称绝对转移指令,指令包含有11位的转移地址;它是把PC的高5位与指令第一字节中的第7~5位(第4~0位为00001)和指令的第二字中的8位合并在一起构成16位的转移地址。 ( ) 5.MCS—51单片机中PUSH和POP指令只能保护现场,不能保护断点。( ) 6.绝对调用指令ACALL addr11能在本指令后一字节所在的2K字节程序存贮区内调用子程序。( ) 7.指令LCALL addr16能在64K字节范围内调用子程序。( ) 8.设PC的内容为35H,若要把程序存贮器08FEH单元的数据传送至累加器A,则必须使用指令MOVC A,@A+PC。( ) 四、分析题 1.内部RAM的BLOCK开始的单元中有一无符号数据块,数据块长度存人LEN单元,试编程求其中的最大数并存人MAX单元中。 2.试编写一程序实现数据块传送,将外部数据区DATA1单元开始的50个单字节数依次移至内部RAM中DATA2单元开始的数据区中。 3.编写一个延时1s的子程序(时钟频率为12MHz) 【答案】 一、填空题 1.DB 2.301us 解析: MOV R3,#100 ;1us LOOP:NOP ;1us DJNZ R3,LOOP ;(2+1)*100=300us 总时间300+1=301us 3.循环初始化、循环处理、循环控制、循环修改 4.JB、JNB(或CJNE,合理即可) 5.60H 6.7FH、0、3FH(解析:DEC @R0指令修改7FH单元内容,40H减1为3FH,R0值不变) 二、选择题 1.1.C 2.B 3.C 4.B 5.D 6.C 7.B 8.C 三、判断题 1.× 2.× 3.× 4.√ 5.√ 6.√ 7.√ 8.× 四、分析题(参考答案) 1. LEN EQU 30H ; 数据长度单元 BLOCK EQU 31H ; 数据块起始单元 MAX EQU 40H ; 最大值存放单元 ORG 0000H ; 程序起始地址 LJMP MAIN ; 跳转到主程序 ORG 0030H ; 主程序存放地址 MAIN: MOV R0, #BLOCK ; R0指向数据块起始地址 MOV R1, LEN ; R1 = 数据长度(循环计数器) DEC R1 ; 第一个数作为初值,比较次数=长度-1 MOV A, @R0 ; 取第一个数作为初始最大值 LOOP: INC R0 ; 指向下一个数据 CLR C ; 清进位位 SUBB A, @R0 ; A - 下一个数(无符号比较) JC NEXT ; C=1,说明下一个数更大,跳转更新最大值 MOV A, @R0 ; C=0,当前数更大,保持A不变 NEXT: DJNZ R1, LOOP ; 循环比较,直到所有数遍历完成 MOV MAX, A ; 最终最大值存入MAX单元 SJMP $ ; 程序暂停 END 2.编程思路:利用DPTR指向外部数据区起始地址,R0指向内部数据区起始地址,循环50次,每次将外部数据读入累加器A,再送入内部RAM对应单元,依次完成传送。 程序如下: MOV DPTR,#DATA1 ;DPTR指向外部数据区DATA1 MOV R0,#DATA2 ;R0指向内部数据区DATA2 MOV R1,#50 ;R1存放传送长度(50个字节) LOOP:MOVX A,@DPTR ;读取外部数据送入A MOV @R0,A ;将A中数据送入内部RAM INC DPTR ;外部地址指针加1 INC R0 ;内部地址指针加1 DJNZ R1,LOOP ;循环50次,完成传送 RET 3. DELAY_1S: MOV R5, #10 LOOP1: MOV R6, #200 LOOP2: MOV R7, #248 LOOP3: DJNZ R7, LOOP3 DJNZ R6, LOOP2 DJNZ R5, LOOP1 RET 1. 内层核心 (LOOP3): 248 * 2 = 496 μs 2. 中层核心 (LOOP2): 200 * (1 + 496 + 2) = 200 * 499 = 99,800 μs 3. 外层核心 (LOOP1): 10 * (1 + 99,800 + 2) = 10 * 99,803 = 998,030 μs 4. 进出开销: MOV_R5(1) + RET(2) = 3μs 最终总计: 998,030 + 3= 998,033 μs (约 998ms) 原创精品资源学科网独家享有版权,侵权必究 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

考点3 循环和查表程序《单片机原理与应用》四川省(对口招生)电子信息类 知识点讲解
1
考点3 循环和查表程序《单片机原理与应用》四川省(对口招生)电子信息类 知识点讲解
2
考点3 循环和查表程序《单片机原理与应用》四川省(对口招生)电子信息类 知识点讲解
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。