ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:21.12KB ,
资源ID:7749126      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7749126.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51单片机考试常见试题分析题.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51单片机考试常见试题分析题.docx

1、51单片机考试常见试题分析题四、程序分析及编程1.设(A)=04H,(CY)=1, 写出下列各条指令的结果。RL A; (A)= 08HRR A; (A)= 02HRLC A; (A)= 09HRRC A; (A)= 82H2.设(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1, 写出下列各条指令的结果。 MOV A ,R0 (A)=30H (R0)=30H XCH A, R0 (A)=30H (R0)=30H XCHD A,R0 (A)=A5H (R0)=30H (30H)=30H ADD A,#30H (A)=D5H (CY)=1 ADDC A,30H (A)=06H (

2、CY)=1 SUBB A,#30H (A)=D5H (CY)=13.下列程序段的功能是什么? PUSH A PUSH B POP A POP B答:交换A、B的内容4.已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后:请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。 POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,A+DPTR PUSH A MOV A,B INC A MOVC A,A+DPTR PUSH A RET ORG 4000H DB 10H,8

3、0H,30H,50H,30H,50H 答:(A)=50H , (SP)=50H , (51H)=30H , (52H)=50H , (PC)=5030H5.假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为( )。: ANL A,#17H ORL 17H,A XRL A,R0 CPL A 答:0CBH6.如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后则:DPH=( ),DPL=( ),SP=( ): POP DPH POP DPL POP SP 答:DPH=3CH , DPL=5FH , SP=

4、4FH7.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为( ),61H单元的内容为( ),62H单元的内容为( )。 PUSH A PUSH B 答:62H , 30H , 70H8.计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为 12MHz)。 MOV R3,#15H ;1个机器周期 DL1:MOV R4,#255 ;1个机器周期 DL2:MOV P1,R3 ;2个机器周期 DJNZ R4,DL2 ;2个机器周期 DJNZ R3,DL1 ;2个机器周期 RET ;2个机器周期答:15348us析:(22)25512)151215348us9. 假定A=83

5、H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为( )。 ANL A,#17H ORL 17H,A XRL A,R0 CPL A 答:0CBH10. 如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:DPH内容为( ),DPL内容为( ),SP内容为( )。POP DPH;POP DPL;POP SP;答:(DPH)= 3CH,(DPL)=5FH,(SP)=50H11.假设外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A中的内容为( )。 MOV P2,#20H MOV R0,#

6、00H MOVX A,R0答:累加器A中的内容为(80H)12.阅读下列程序段并回答问题 。(1).该程序执行何种操作? (2).已知初值(60H)=23H,(61H)=61H,运行程序后62H内容( ) CLR C MOV A,#9AH SUBB A,60H ADD A,61H DA A MOV 62H,A 答: 1)、该程序是单字节BCD码运算,是将(61H)(60H)62H 2)、(62H)=38H13.试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。答:MOV A, 45H ANL A, #0FH ORL A, #0FH MOV 45H, A14.试编写程序,查找在内

7、部RAM的30H50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。答:START: MOV R0,#30H MOV R2,#20H LOOP: MOV A,R0 CJNE A,#0AAH,NEXT MOV 51H,#01H LJMP EXIT NEXT: INC R0 DJNZ R2,LOOP MOV 51H,#00H EXIT: RET15. 编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400s,占空比为10:1的矩形脉冲。解:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为36

8、3.63s和36.37s。如果系统采用6MHz晶振的话,因此高低电平输出取整,则约为364s和36s。编写程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP IT0PMAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2 MOV TL0,#4AH ;定时364s初值赋值 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB P1.0WAIT: AJMP WAITIT0P: CLR EACLR P1.0 ;关中断 MOV R0,#9DLY: DJNZ R0,DLY ;延时26s MOV T

9、L0,#4AH ;定时364s初值赋值 SETB P1.0 SETB EA RETI16. 设在外部RAM中有三个连续单元2001H,2002H,2003H,其中2001H和2002H单元中分别存放两个8位无符号二进制数,比较这两个数的大小,然后将大数送到2003H单元。COMPARE:MOV DPTR, #2001HMOVX A , DPTRMOV R0,AINC DPTRMOVX A,DPTRSUBB A ,R0JNC LOOPMOV A, R0INC DPTRMOVX DPTR ,ARETLOOP:INC DPTRMOVX DPTR ,ARET 17.将内部RAM 40H开始的10个单元

10、,搬移到50H开始的10个单元中。MOV R0,#40HMOV R1,#50HMOV R2, #10LOOP1:MOV A, R0MOV R1,AINC R0INC R1DJNZ R2 ,LOOP1RET18. 设单片机晶振频率为6MHz,使用定时器0,以工作方式2,在P1.5引脚输出一个周期为200us连续方波?解: MOV TMOD,#02H MOV TH0, #0CEHMOV TL0 ,#0CEHSETB TR0LOOP: JBC TF0,LOOP1 AJMP LOOPLOOP1: CPL P1.019. 编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计

11、数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP IT0PMAIN: JNB P1.0,MAINMOV TMOD,#05H ;定时器/计数器T0为计数方式1 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断WAIT: JB P1.2,WAIT CLR EA CLR TR0 MOV R1,TH0 MOV R0,TL0 AJMP $I

12、T0P: INC R2 RETI20.试编写一个程序(例如将05H和06H拼为56H),设原始数据放在片外数据区2001H单元和2002H单元中,按顺序拼装后的单字节数放入2002H。答:编程思路:首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30H中,然后再读取2002H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002H中。 ORG 0000HMAIN:MOV DPTR,#2001H ;设置数据指针的初值 MOVX A,DPTR ;读取2001H的值 SWAP A ANL

13、 A,#0F0H ;屏蔽掉低四位 MOV 30H,A ;保存A INC DPTR ;指针指向下一个 MOVX A,DPTR ;读取2002H的值 ANL A,#0FH ;屏蔽掉高四位 ORL A,30H ;进行拼装 MOVX DPTR,A ;保存到2002H END21.编写程序,将外部数据存储器中的4000H40FFH单元全部清零。解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了。 ORG 0000HMAIN: MOV A,#0 ;送预置数给A MOV R0,#0FFH ;设置循环次数 MOV DPTR,#4000H ;设置数据指针的初值LOOP:

14、MOVX DPTR,A ;当前单元清零 INC DPTR ;指向下一个单元 DJNZ R0,LOOP ;是否结束 END22.编写程序,采用8255A的C口按位置位/复位控制字,将PC7置0,PC4置1,(已知8255A各端口的地址为7FFCH-7FFFH)。解:本题主要考察对8255A的C口的操作。其方式控制字的高位为0时,低四位对C口进行置位。由题目我们得到了方式控制字的地址为7FFFH。 ORG 0000H MAIN: MOV DPTR,#7FFFH ;控制字寄存器地址送DPTR MOV A,#0EH ;将PC7置0 MOVX DPTR,A MOV A,#09H ;将PC4置1 MOVX

15、 DPTR,A END23.试编写逻辑运算程序,功能为:F=X(Y+Z);F=XYZ其中F X Y Z均为位变量,依次存在以30H为首址的位寻址区中。解(1): F BIT 30H X BIT 31H Y BIT 32H Z BIT 33HLOG1:MOV C,Y ;YC ORL C,Z ;(Y+Z)C ANL C,X ;X(Y+Z)C MOV F,C ;X(Y+Z)F RET ;解(2):LOG2:MOV C,Y ;YC ANL C,Z ;YZC ANL C,/X ;XYZC CPL C ;XYZC MOV F,C ;XYZF RET ;24.试编写程序,统计内RAM 30H50H单元中FF

16、H的个数,并将统计结果存51H。解:编程如下:LOKF:MOV 51H,#0 ;计数器清零 MOV R0,#30H ;置数据区首址LOP: MOV A,R0 ;读数据 CPL A ;取反 JNZ LP1 ;判FFH,非FFH,转 INC 51H ;FFH,计数LP1: INC RO ;指向下一数据CJNE R0,#51H,LOP;判循环RET25试编写程序,找出外RAM 2000H200FH数据区中的最小值,并放入R2中。解:编程如下:SECH:MOV DPTR,#2000H ;置外RAM数据区首址 MOV R2,#OFH ;置外RAM数据区长度(N-1) MOVX A,DPTR ;读第一个数

17、据 MOV B,A ;假设第一个数据为最小值SLOP:INC DPTR ;指向下一个数据 MOVX A,DPTR ;读下一个数据 CJNE A,B,SLP1 ;新数据与最小值比较SLP1:JNC SLP2 ;新数据最小值,判断循环 MOV B,A ;新数据最小值,新数据BSLP2:DJNZ R2,SLOP ;判循环结束否? MOV R2,B ;最小值R2 RET26已知ROM中存有0100的平方表,首地址为TABDS,试根据累加器A(100)中的数值查找对应的平方值,存入内RAM31H30H(双字节)。 解:编程如下: DSQR:MOV DPTR,#TABDS ;置ROM平方表首地址 ADD

18、A,Acc ;A2A MOVC A, A+DPTR ;读平方值高8位 MOV 31H,A ;平方值高8位31H INC A ;指向平方值低8位 MOVC A,A+DPTR ;读平方值低8位 MOV 30H,A ;平方值低8位30H RET TABDS:DW 0,0,0,1,0,4,0,9,0,16,0,25,27H,10H;0100平方表(双字节)27.试编程实现3字节无符号数加法:R7R6R5+R4R3R2R0(3个连续单元)。解:编程如下:ADD3: MOV A,R5 ADD A,R2 ;低位加 MOV R0,A ;存低位和 INC R0 ;修改存储单元 MOV A,R6 ; ADDC A

19、,R3 ;中位加 MOV R0,A ;存中位和 INC R0 ;修改存储单元 MOV A,R7 ; ADDC A,R7 ;高位加 MOV R0,A ;存高位和 RET 28.试编写程序,将外部RAM2000H20FH数据块,传送到3000H30FFH区域。解:编程如下:DMOV:MOV DPTR,#2000H ;置源数据区首址 MOV R2,#00H ;置数据长度(256个)DLOP:MOVX A,DPTR ;读数据 MOV DPH,#30H ;置目的数据区高8位地址 MOVX DPTR,A ;存数据 MOV DPH,#20H ;置源数据区高8位地址 INC DPTR ;修改源数据区地址 DJ

20、NZ R2,DLOP ;判循环结束否? RET29.从内RAM20H单元开始存有一组带符号数(补码),其个数已存放在1FH单元。要求统计其中大于0,等于0和小于0的数的个数,并把统计结果分别存入ONE,TWO,THREE3个单元。解:编程如下: ONE EQU 30H TWO EQU 31H THREE EQU 32HSTOR:MOV R0,#20H ;置数据区首址SLOP: MOV A,R0 ;读数据 JZ LP1 ;数据=0,转 JB Acc.7,LP2 ;数据0,转 INC ONE ;数据0,ONE单元加1LP0: INC RO ;指向下一数据 DJNZ 1FH,SLOP ;判统计结束否

21、?未结束循环 RET ;统计结束,TWO单元加1LP1: INC TWO ;数据=0,TWO单元加1 SJMP LPO ;返回循环体LP2: INC THREE ;数据0,THREE单元加1 SJMP LPO ;返回循环体30.设在内部数据存储器中存放有20个字节数据,其起始地址为M。试编写程序,找出数0AH的存放地址,并送入N单元。若OAH不存在,则将N单元清零。 解:程序如下: M EQU 30H N EQU 2FHSECH:MOV R0,#M MOV R1,#20LOOP:CJNE R0,#0AH,LP1 MOV N,R0 RETLP1: INC R0 DJNZ R1,LOOP MOV

22、N,#0 RET31.试编写程序,求出内RAM20H单元中“1”的个数,并将结果存入21H单元。解:编程如下:LOK1:MOV 21H,#O MOV R2,#08H MOV A,20HLOP: RLC A JNC LP1 JNC 21HLP1:DJNE R2,LOP RET32.试编写统计数据区长度的程序,设数据区从内RAM30H开始,该数据区以0结束,统计结果送入2FH中。解:编程如下:ADUP:MOV 2FH,#0 MOV R0,#30HALOP:MOV A,R0 JNZ LP1 RETLP1: INC 2FH INC R0 SJMP ALOP33.从内RAM30H单元开始存放着一组无符号

23、数,其个数存在21H单元中。试编写程序,找出其中最小的数,并将其存入20H单元中。解:编程如下:SECH: MOV RO,#3OH MOV 20H,#FFHSLOP: MOV A,R0 CJNE A,20H,NEXTNEXT: JNC SLP1 MOV 20H,ASLP1: INC R0 DJNZ 21H,SLOP RET34.用程序实现c=a2+b2。设a2b2存于内RAM,AA,BB单元;c为双字节,存于内RAMCC,DD单元。解:该题可用于程序来实现。通过两次调用查平方表子程序来得到a和b,并在主程序中完成相加。编程如下: AA EQU 40H BB EQU 41H CC EQU 42H

24、 DD EQU 43HFUNC:MOV A,AA LCALL DSQR MOV DD,A MOV CC,31H MOV A,BB LCALL DSQR ADD A,DD MOV DD,A ADDC A,CC MOV CC,A RET35利用定时、计数器T1测量某正脉冲宽度,并存入内RAM31H30H。设fosc=12MHz,脉冲从P3.3引脚输入,宽度小于65536us。解:编程如下:PLUS: MOV TMOD,#90H MOV TH1,#0 MOV TL1,#0 JB P3.3,$ SETB TR1 JNB P3.3,$ JB P3.3,$ CLR TR1 MOV 31H,THO MOV 30H,TLO RET36. 设在内部RAM中50H开始有连续的10个单元,求这10个单元之和,结果放在60H,61H,低位放在60H,高位在61H.解:程序编写如下:ORG 0000HACALL ADDTENWAIT: AJMP WAITADDTEN:MOV R0 ,50HMOV R1,#10MOV A,#00HMOV 60H, AMOV 61H, ALOOP1:ADD A, R0INC R0MOV 60H,AJC LOOP2DJNZ R1,LOOP1RETLOOP2:MOV A,61H;ADD A,#01HDJNZ R1 ,LOOP1RET

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1