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

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

8页
  • 卖家[上传人]:baiyan****nihao
  • 文档编号:601159493
  • 上传时间:2025-05-16
  • 文档格式:DOC
  • 文档大小:64.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 四、程序分析及编程答案1.(A)= 08H(A)= 02H(A)= 09H(A)= 82H2. (A)=30H (R0)=30H (A)=30H (R0)=30H (A)=A5H (R0)=30H (30H)=30H (A)=D5H (CY)=1 (A)=06H (CY)=1 (A)=D5H (CY)=13.答:交换A、B的内容4.答:(A)=50H , (SP)=50H , (51H)=30H , (52H)=50H , (PC)=5030H5.答:0CBH6.答:DPH=3CH , DPL=5FH , SP=4FH7.答:62H , 30H , 70H8.答:15348us析:((2+2)×255+1+2)×15+1+2=15348us9.答:0CBH10.答:(DPH)= 3CH,(DPL)=5FH,(SP)=50H11.答:累加器A中的内容为(80H)12.答: 1)、该程序是单字节BCD码运算,是将(61H)—(60H)→62H 2)、(62H)=38H13.答:MOV A, 45H ANL A, #0FH ORL A, #0FH MOV 45H, A14.答: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. 解:根据题意,从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. COMPARE:MOV DPTR, #2001HMOVX A , @DPTRMOV R0,AINC DPTRMOVX A,@DPTRSUBB A ,R0JNC LOOPMOV A, R0INC DPTRMOVX @DPTR ,ARETLOOP:INC DPTRMOVX @DPTR ,ARET 17.MOV R0,#40HMOV R1,#50HMOV R2, #10LOOP1:MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2 ,LOOP1RET18.解: MOV TMOD,#02H MOV TH0, #0CEHMOV TL0 ,#0CEHSETB TR0LOOP: JBC TF0,LOOP1 AJMP LOOPLOOP1: CPL P1.019.答:将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.答:编程思路:首先读取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. ORG 0000HMAIN: MOV A,#0 ;送预置数给A MOV R0,#0FFH ;设置循环次数 MOV DPTR,#4000H ;设置数据指针的初值LOOP: MOVX @DPTR,A ;当前单元清零 INC DPTR ;指向下一个单元 DJNZ R0,LOOP ;是否结束 END22.解:本题主要考察对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 @DPTR,A END23.解(1): F BIT 30H X BIT 31H Y BIT 32H Z BIT 33HLOG1:MOV C,Y ;Y→C 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 ;Y→C ANL C,Z ;YZ→C ANL C,/X ;XYZ→C CPL C ;XYZ→C MOV F,C ;XYZ→F RET ;24.解:编程如下: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.解:编程如下:SECH:MOV DPTR,#2000H ;置外RAM数据区首址 MOV R2,#OFH ;置外RAM数据区长度(N-1) MOVX A,@DPTR ;读第一个数据 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. 解:编程如下: DSQR:MOV DPTR,#TABDS ;置ROM平方表首地址 ADD A,Acc ;A×2→A 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;0~100平方表(双字节)27.解:编程如下:ADD3: MOV A,R5 ADD A,R2 ;低位加 MOV @R0,A ;存低位和 INC R0 ;修改存储单元 MOV A,R6 ; ADDC A,R3 ;中位加 MOV @R0,A ;存中位和 INC R0 ;修改存储单元 MOV A,R7 ; ADDC A,R7 ;高位加 MOV @R0,A ;存高位和 RET 28.解:编程如下: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 ;修改源数据区地址 DJNZ R2,DLOP ;判循环结束否? RET29.解:编程如下:。

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