好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《单片机C语言项目式教程》分析题.doc

11页
  • 卖家[上传人]:baiyan****nihao
  • 文档编号:601159318
  • 上传时间:2025-05-16
  • 文档格式:DOC
  • 文档大小:78KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 四、程序分析及编程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 (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,80H,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=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析:((2+2)×255+1+2)×15+1+2=15348us9. 假定A=83H,(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,#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.试编写程序,查找在内部RAM的30H~50H单元中是否有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输出周期为400μs,占空比为10:1的矩形脉冲解:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36.37μs如果系统采用6MHz晶振的话,,因此高低电平输出取整,则约为364μs和36μs编写程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP IT0PMAIN: MOV TMOD,#02H ;定时器/计数器T0为定时方式2 MOV TL0,#4AH ;定时364μs初值赋值 SETB TR0 ;启动T0,开始计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB P1.0WAIT: AJMP WAITIT0P: CLR EACLR P1.0 ;关中断 MOV R0,#9DLY: DJNZ R0,DLY ;延时26μs MOV TL0,#4AH ;定时364μs初值赋值 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个单元,搬移到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的输入脉冲进行计数;当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 $IT0P: 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 A,#0F0H ;屏蔽掉低四位 MOV 30H,A ;保存A INC DPTR ;指针指向下一个 MOVX A,@DPTR ;读取2002H的值 ANL A,#0FH ;屏蔽掉高四位 ORL A,30H ;进行拼装 MOVX @DPTR,A ;保存到2002H END21.编写程序,将外部数据存储器中的4000H—40FFH单元全部清零。

      解:本题主要考察了对外部数据块的写操作;编程时只要注意循环次数和MOVX指令的使用就可以了 ORG 0000HMAIN: MOV A,#0 ;送预置数给A MOV R0,#0FFH ;设置循环次数 MOV DPTR,#4000H ;设置数据指针的初值LOOP: 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 MO。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.