51单片机习题答案_第1页
51单片机习题答案_第2页
51单片机习题答案_第3页
51单片机习题答案_第4页
51单片机习题答案_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 指令系统习题4-36 (1)将 R6的高 4位和 R7的高 4位交换, R6、 R7的低 4位内容保持不变。 MOV A,R6 ;(A)=A1A2ANL A,#0F0H ;(A)=A10MOV R3,A ;(R3)=A10MOV A,R7 ;(A)=B1B2ANL A,#0FH ;(A)=0B2ORL A,R3 ;(A)=A1B2MOV R4,A ;(R4)=A1B2MOV A,R7 ;(A)=B1B2第四章 指令系统习题ANL A,#0F0H ;(A)=B10MOV R5,A ;(R5)=B10MOV A,R6 ;(A)=A1A2ANL A,#0FH ;(A)=0A2ORL A,R5 ;(A)=B1A2MOV R6,A ;(R6)=B1A2MOV A,R4 ;(A)=A1B2MOV R7,A ;(R7)=A1B2第四章 指令系统习题(2) 两个无符号数分别存放在 30H、 31H,试求出它们的和并将结果存放在 32H中。MOV A,30H ADD A,31H MOV 32H,A HLT(3) 将 30H单元的内容循环左移两位,送外部 RAM 3000H中。MOV A,30H RL ARL AMOV DPTR,#3000H MOVX DPTR,A 第四章 指令系统习题(4) 将程序存储器 1000H的内容取出送外部RAM 3000H单元。CLR AMOV DPTR,#1000H MOVC A,A+DPTRMOV DPTR,#3000H MOVX DPTR,A 第四章 指令系统习题4-37 (SP)=20H, (A)=67H, (1FH)=25H,(20H)=34HPUSH ACCPUSH 1FH ;(23H)=34HPUSH 20H ;(22H)=25HSWAP A ;(21H)=67HMOV 1FH, A ;(20H)=34HRL A ;(1FH)=25HMOV 20H, A ;SP=21HPOP DPL ;(A)=ECHPOP DPH ;DPTR=2534HCLR 01H第五章 MCS-51汇编语言程序设计5-4 设常数和数据标号的定义为ORG 2000HDAT1: DB 1,2,3,4,5 DAT2: ABCDN EQU $-DAT2DAT3: DW 1200H,-2TAB: DW DAT1,DAT3(1)画出上述数据或地址的存储形式(2)写出各标号的地址N=2009H-2005H=04H第五章 MCS-51汇编语言程序设计标 号 地址 内容DAT1 2000H 01H2001H 02H2002H 03H2003H 04H2004H 05HDAT2 2005H 41H (A)2006H 42H (B)2007H 43H (C)2008H 44H (D)DAT3 2009H 12H200AH 00H200BH FEHTAB 200CH 20H200DH 00H200EH 20H200FH 09H第五章 MCS-51汇编语言程序设计5-5 双字节加法。被加数放在片内 RAM 30H(高字节 )和 31H(低字节 )单元中,加数放在片内 RAM 32H(高字节 )和 33H(低字节 )单元中,运算结果存放在 30H和 31H单元中,进位存放在位寻址区的 00H位。START:PUSH A ;将 A内容进栈保护MOV R0,#31H ;地址指针MOV R1,#33HCLR 00H ;00H位清零MOV A,R0 ;低位字节数相加ADD A,R1第五章 MCS-51汇编语言程序设计MOV R0,ADEC R0DEC R1MOV A,R0 ;高位字节数相加ADDC A,R1MOV R0, AMOV 00H,CPOP A第五章 MCS-51汇编语言程序设计5-6 编写程序,找出片内 RAM30H 5FH单元中无符号数的最大值,并存放在 60H单元中。MOV R0,#30H MOV B,R0 ;B中存放最大值L0: INC R0MOV A,R0CLR CSUBB A,B ;Xi+1- XiJC L1 ;Xi+1 Xi,则交换L1: CJNE R0,#5FH,L0MOV 60H,BSJMP 第五章 MCS-51汇编语言程序设计5-7 从片内 RAM 30H开始存放 20个数,找出其中的最小数。MOV R0,#30H ;首地址MOV R2,#20 ;20个数MOV B,R0 ;B中存放最小值L0: INC R0MOV A,R0CLR CSUBB A,B ;Xi+1- XiJNC L1 ;Xi+1 XiMOV B,R0 ;Xi+1 XiJNB 00H,STOP ;(00H)=0则转移DJNZ R2,LP1STOP: RET第五章 MCS-51汇编语言程序设计5-10 编写程序,统计片内 RAM20H 5FH中出现 55H的次数,并将统计结果送入 60H单元。MOV R0,#20H ;地址指针指向首地址MOV 60H, 00H ;清零L0: MOV A,R0 ;取数CJNE A,#55H,L1 ;(A) 55H,则转到 L1INC 60H ;(A)=55H,L1: INC R0 ;取下一个数CJNE R0,#60H,L0 ;是否到末地址?HLT第五章 MCS-51汇编语言程序设计5-11 编程将片内 RAM30H 7FH单元清零。方法 1:控制循环体的执行次数BE1: MOV R0,#30HMOV R7,#50HLP1: MOV R0,#00HINC R0DJNZ R7, LP1RET方法 2:判断循环体的结束条件BE2: MOV R0,#2FHLP2: INC R0MOV R0,#00H CJNE R0,#7FH,LP2RET第五章 MCS-51汇编语言程序设计5-12编程序,将片外 RAM3000H 30FFH单元全部清零。MOV DPTR,#3000HMOV R0,#00H L1: MOV A,#00H MOVX DPTR,A INC DPTRDJNZ R0,L1SJMP $第五章 MCS-51汇编语言程序设计5-13 从片内 RAM DATA1起,存放 20H个数据 ,编写程序,将这 20H个数据逐一移到片外 RAM DATA2单元开始的存储空间。MOV R0,#DATA1 ;地址指针指向首地址MOV R7,#20H ;循环次数MOV DPTR,#DATA2 L1: MOV A,R0MOVX DPTR,A INC DPTRINC R0DJNZ R7,L1SJMP $第五章 MCS-51汇编语言程序设计5-14 将片外 RAM 8000H开始的 20个字节数据传送到片外 RAM 8100H开始的地址单元中。MOV R0, #00H MOV R1, #00H MOV R2, #20HL1: MOV P2, #80H ;地址指针指向 8000HMOVX A,R0 ;输入数据MOV P2, #81H ;地址指针指向 8100HMOVX R1, A ;输出数据INC R0INC R1DJNZ R2, L1HLT第五章 MCS-51汇编语言程序设计5-15 编程统计累加器 A中 “ 1” 的个数。MOV R2,#07H ;循环次数MOV R3,#00H ;存放 “ 1” 的个数LP1:RLC AJNC LP2 ;C=0INC R3 ;C=1LP2: DJNZ R2,LP1HLT 第五章 MCS-51汇编语言程序设计5-16 从片内 30H开始,存放 50个数据。编写程序,将其中正数、负数分别送入片外 RAM 5000H和 5500H开始的单元,分别记下正数和负数的个数并送入片内 RAM70H和 71H单元。MOV R0,#30H ;片内 RAM首地址MOV R1,#00H ;清零MOV R2,#50 ;数据的个数MOV R3,#00H ;R3存放正数个数清零MOV R4,#00H ;R4存放负数个数清零T1: MOV A,R0 ;取数INC R0 ;指针指向下一个单元CLR CSUBB A,#00HJC T2 ;有借位 ,Xi0第五章 MCS-51汇编语言程序设计MOV P2,#50H ;片外正数首地址MOV R1,R3 ;5000HDEC R1MOVX R1,A ;输出数据JMP T0 ;比较一个数结束T2: INC R4 ;Xi0MOV R1,R4DEC R1 ;片外负数首地址MOV P2,#55H ;5500HMOVX R1,A ;输出数据T0: DJNZ R2,T1MOV 70H,R3 ;正数的个数MOV 71H,R4 ;负数的个数HLT第五章 MCS-51汇编语言程序设计5-19 编写程序,将 30H 34H单元中压缩的BCD码转换为 ASCII码,并将结果存放在片内RAM60H 69H单元中。MOV R0,#30HMOV R1,#60HT1: MOV A,R0MOV B,AINC R0T2: ANL A,#0FHADD A,#30HMOV R1,AINC R1MOV A,B 第五章 MCS-51汇编语言程序设计SWAP AANL A,#0FHADD A,#30HMOV R1,AINC R1CJNE R0,#35H,T1HLT第五章 MCS-51汇编语言程序设计5-20 将片内 RAM 30H单元的内容转换成三位BCD码,并将结果存入片外 RAM 1000H开始的单元。解:将 BCD码先放入 31H(百位 )、 32H(十位 )、 33H(个位 )单元中。方法一:先得到百位BD1: MOV A,30HMOV B,#100DIV ABMOV 31H,AMOV A,B 第五章 MCS-51汇编语言程序设计MOV B,#10DIV ABMOV 32H,AMOV 33H,B方法二:先得到个位BD2: MOV A,30HMOV B,#10DIV ABMOV 33H,BMOV B,#10DIV AB 第五章 MCS-51汇编语言程序设计MOV 32H,BMOV 31H,A将结果存入片外 RAM 1000H开始的单元MOV R0,#30HMOV DPTR,#1000HLP: INC R0MOV A,R0MOVX DPTR,AINC DPTRCJNE R0,#33H,LPRET 第七章 定时器 /计数器7-14 设 MCS-51单片机晶振频率为 12MHz,使用定时器 1的工作方式 1,在 P1.0端输出周期为 100ms的方波 ,使用中断方式设计程序,写出相应的是初始化程序和中断服务程序。分析 :晶振频率 fosc=12MHz,计数周期 =1s 周期 100ms的方波 ,中断周期 T1=100ms/2=50ms初值 N=65536-T112MHz/12=15536=3CB0HORG 0000HAJMP MAINORG 001BH ;T1的中断入口地址AJMP T1_INT ;T1的中断服务程序第七章 定时器 /计数器ORG 0100HMAIN:MOV SP,#60H ;设置堆栈MOV TMOD,#10H ;送模式字MOV TH1,#3CH ;初值的高 8位MOV TL1,#0B0H ;初值的低 8位SETB ET1 ;ET1=1允许 T1中断 SETB EA ;开中断 ,中断总允许SETB TR1 ;TR1=1 启动 T1工作HERE:SJMP HERE ;等待T1_INT: MOV TH1;#3CH ;中断服务程序MOV TL1,#0B0HCPL P1.0 ;P1.0取反形成方波RETIEND第七章 定时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论