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

下载本文档

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

文档简介

1、第四章 指令系统习题,4-36 (1)将R6的高4位和R7的高4位交换,R6、R7的低4位内容保持不变。 MOV A,R6 ;(A)=A1A2 ANL A,#0F0H ;(A)=A10 MOV R3,A ;(R3)=A10 MOV A,R7 ;(A)=B1B2 ANL A,#0FH ;(A)=0B2 ORL A,R3 ;(A)=A1B2 MOV R4,A ;(R4)=A1B2 MOV A,R7 ;(A)=B1B2,.,第四章 指令系统习题,ANL A,#0F0H ;(A)=B10 MOV R5,A ;(R5)=B10 MOV A,R6 ;(A)=A1A2 ANL A,#0FH ;(A)=0A2

2、 ORL A,R5 ;(A)=B1A2 MOV R6,A ;(R6)=B1A2 MOV A,R4 ;(A)=A1B2 MOV 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 A RL A MOV DPTR,#3000H MOVX DPTR,A,.,第四章 指令系统习题,(4) 将程序存储器1000H的内容取出送外部RAM 3000H单元。

3、 CLR A MOV DPTR,#1000H MOVC A,A+DPTR MOV DPTR,#3000H MOVX DPTR,A,.,第四章 指令系统习题,4-37 (SP)=20H,(A)=67H,(1FH)=25H,(20H)=34H PUSH ACC PUSH 1FH ;(23H)=34H PUSH 20H ;(22H)=25H SWAP A;(21H)=67H MOV 1FH,A;(20H)=34H RL A;(1FH)=25H MOV 20H,A;SP=21H POP DPL ;(A)=ECH POP DPH ;DPTR=2534H CLR 01H,.,第五章 MCS-51汇编语言程

4、序设计,5-4 设常数和数据标号的定义为 ORG 2000H DAT1:DB 1,2,3,4,5 DAT2:ABCD NEQU $-DAT2 DAT3:DW 1200H,-2 TAB:DW DAT1,DAT3 (1)画出上述数据或地址的存储形式 (2)写出各标号的地址 N=2009H-2005H=04H,.,第五章 MCS-51汇编语言程序设计,.,第五章 MCS-51汇编语言程序设计,5-5双字节加法。被加数放在片内RAM 30H(高字节)和31H(低字节)单元中,加数放在片内RAM 32H(高字节)和33H(低字节)单元中,运算结果存放在30H和31H单元中,进位存放在位寻址区的00H位。

5、 START:PUSH A ;将A内容进栈保护 MOV R0,#31H;地址指针 MOV R1,#33H CLR 00H;00H位清零 MOV A,R0;低位字节数相加 ADD A,R1,.,第五章 MCS-51汇编语言程序设计,MOV R0,A DEC R0 DEC R1 MOV A,R0;高位字节数相加 ADDC A,R1 MOV R0,A MOV 00H,C POP A,.,第五章 MCS-51汇编语言程序设计,5-6 编写程序,找出片内RAM30H5FH单元中无符号数的最大值,并存放在60H单元中。 MOV R0,#30H MOV B,R0 ;B中存放最大值 L0: INC R0 MO

6、V A,R0 CLR C SUBB A,B ;Xi+1- Xi JC L1 ;Xi+1 Xi,则交换 L1:CJNE R0,#5FH,L0 MOV 60H,B SJMP,.,第五章 MCS-51汇编语言程序设计,5-7 从片内RAM 30H开始存放20个数,找出其中的最小数。 MOV R0,#30H ;首地址 MOV R2,#20 ;20个数 MOV B,R0 ;B中存放最小值 L0: INC R0 MOV A,R0 CLR C SUBB A,B ;Xi+1- Xi JNC L1 ;Xi+1 Xi MOV B,R0 ;Xi+1 Xi,则交换 L1:DJNZ R2,L0 SJMP $,.,第五章

7、 MCS-51汇编语言程序设计,5-8 编写程序,查找片内RAM 31H50H单元中是否有常数41H,若有则将51H单元置-1;若没有,则将51H单元清0。 MOV R0,#30H ;首地址 L0:INC R0 CJNE R0,#41H,NEQ EQ:MOV 51H,#0FFH ;51H单元置-1SJMP ED1 NEQ:CJNE R0,#51H,L0 MOV 51H,#00H ED1:HLT,.,第五章 MCS-51汇编语言程序设计,5-9 编写程序,将片内RAM 40H6FH单元中的无符号数按照从小到大的次序排列,结果仍放在原存储空间。 MOV R2,#2FH ;个数 LP1:MOV A,

8、R2 MOV R3,A MOV R0,#40H ;地址指针指向首地址 CLR 00H ;位地址 位操作 LP2:MOV A,R0 MOV B,A INC R0 CLR C MOV A,R0,.,第五章 MCS-51汇编语言程序设计,SUBB A,B ;Xi+1- Xi JNC LESS ;CY=0则转移到LESS MOV A,B ;CY=1 Xi+1 Xi JNB 00H,STOP ;(00H)=0则转移 DJNZ R2,LP1 STOP:RET,.,第五章 MCS-51汇编语言程序设计,5-10 编写程序,统计片内RAM20H5FH中出现55H的次数,并将统计结果送入60H单元。 MOV R

9、0,#20H ;地址指针指向首地址 MOV 60H,00H ;清零 L0:MOV A,R0 ;取数 CJNE A,#55H,L1 ;(A)55H,则转到L1 INC 60H ;(A)=55H, L1:INC R0 ;取下一个数 CJNE R0,#60H,L0 ;是否到末地址? HLT,.,第五章 MCS-51汇编语言程序设计,5-11 编程将片内RAM30H7FH单元清零。 方法1:控制循环体的执行次数 BE1:MOV R0,#30H MOV R7,#50H LP1:MOV R0,#00H INC R0 DJNZ R7,LP1 RET 方法2:判断循环体的结束条件 BE2:MOV R0,#2F

10、H LP2:INC R0 MOV R0,#00H CJNE R0,#7FH,LP2 RET,.,第五章 MCS-51汇编语言程序设计,5-12编程序,将片外RAM3000H30FFH单元全部清零。 MOV DPTR,#3000H MOV R0,#00H L1: MOV A,#00H MOVX DPTR,A INC DPTR DJNZ R0,L1 SJMP $,.,第五章 MCS-51汇编语言程序设计,5-13 从片内RAM DATA1起,存放20H个数据,编写程序,将这20H个数据逐一移到片外RAM DATA2单元开始的存储空间。 MOV R0,#DATA1 ;地址指针指向首地址 MOV R7

11、,#20H ;循环次数 MOV DPTR,#DATA2 L1: MOV A,R0 MOVX DPTR,A INC DPTR INC R0 DJNZ R7,L1 SJMP $,.,第五章 MCS-51汇编语言程序设计,5-14 将片外RAM 8000H开始的20个字节数据传送到片外RAM 8100H开始的地址单元中。 MOV R0,#00H MOV R1,#00H MOV R2,#20H L1: MOV P2,#80H ;地址指针指向8000H MOVX A,R0 ;输入数据 MOV P2,#81H ;地址指针指向8100H MOVX R1,A ;输出数据 INC R0 INC R1 DJNZ

12、R2,L1 HLT,.,第五章 MCS-51汇编语言程序设计,5-15 编程统计累加器A中“1”的个数。 MOV R2,#07H ;循环次数 MOV R3,#00H ;存放“1”的个数 LP1:RLC A JNC LP2 ;C=0 INC R3;C=1 LP2:DJNZ R2,LP1 HLT,.,第五章 MCS-51汇编语言程序设计,5-16 从片内30H开始,存放50个数据。编写程序,将其中正数、负数分别送入片外 RAM 5000H和5500H开始的单元,分别记下正数和负数的个数并送入片内RAM70H和71H单元。 MOV R0,#30H ;片内RAM首地址 MOV R1,#00H ;清零

13、MOV R2,#50 ;数据的个数 MOV R3,#00H ;R3存放正数个数清零 MOV R4,#00H ;R4存放负数个数清零 T1:MOV A,R0 ;取数 INC R0 ;指针指向下一个单元 CLR C SUBB A,#00H JC T2 ;有借位,Xi0,.,第五章 MCS-51汇编语言程序设计,MOV P2,#50H ;片外正数首地址 MOV R1,R3 ;5000H DEC R1 MOVX R1,A ;输出数据 JMP T0 ;比较一个数结束 T2:INC R4 ;Xi0 MOV R1,R4 DEC R1 ;片外负数首地址 MOV P2,#55H ;5500H MOVX R1,A

14、 ;输出数据 T0:DJNZ R2,T1 MOV 70H,R3 ;正数的个数 MOV 71H,R4 ;负数的个数 HLT,.,第五章 MCS-51汇编语言程序设计,5-19 编写程序,将30H34H单元中压缩的BCD码转换为ASCII码,并将结果存放在片内RAM60H69H单元中。 MOV R0,#30H MOV R1,#60H T1:MOV A,R0 MOV B,A INC R0 T2:ANL A,#0FH ADD A,#30H MOV R1,A INC R1 MOV A,B,.,第五章 MCS-51汇编语言程序设计,SWAP A ANL A,#0FH ADD A,#30H MOV R1,A

15、 INC R1 CJNE R0,#35H,T1 HLT,.,第五章 MCS-51汇编语言程序设计,5-20 将片内RAM 30H单元的内容转换成三位BCD码,并将结果存入片外RAM 1000H开始的单元。 解:将BCD码先放入31H(百位)、32H(十位)、 33H(个位)单元中。 方法一:先得到百位 BD1:MOV A,30H MOV B,#100 DIV AB MOV 31H,A MOV A,B,.,第五章 MCS-51汇编语言程序设计,MOV B,#10 DIV AB MOV 32H,A MOV 33H,B 方法二:先得到个位 BD2:MOV A,30H MOV B,#10 DIV AB

16、 MOV 33H,B MOV B,#10 DIV AB,.,第五章 MCS-51汇编语言程序设计,MOV 32H,B MOV 31H,A 将结果存入片外RAM 1000H开始的单元 MOV R0,#30H MOV DPTR,#1000H LP:INC R0 MOV A,R0 MOVX DPTR,A INC DPTR CJNE R0,#33H,LP RET,.,第七章 定时器/计数器,7-14 设MCS-51单片机晶振频率为12MHz,使用定时器1的工作方式1,在P1.0端输出周期为100ms的方波,使用中断方式设计程序,写出相应的是初始化程序和中断服务程序。 分析:晶振频率fosc=12MHz

17、,计数周期=1s 周期100ms的方波,中断周期T1=100ms/2=50ms 初值N=65536-T112MHz/12=15536=3CB0H ORG 0000H AJMP MAIN ORG 001BH ;T1的中断入口地址 AJMP T1_INT ;T1的中断服务程序,.,第七章 定时器/计数器,ORG 0100H MAIN:MOV SP,#60H ;设置堆栈 MOV TMOD,#10H ;送模式字 MOV TH1,#3CH ;初值的高8位 MOV TL1,#0B0H ;初值的低8位 SETB ET1 ;ET1=1允许T1中断 SETB EA ;开中断,中断总允许 SETB TR1 ;TR

18、1=1 启动T1工作 HERE:SJMP HERE ;等待 T1_INT: MOV TH1;#3CH ;中断服务程序 MOV TL1,#0B0H CPL P1.0 ;P1.0取反形成方波 RETI END,.,第七章 定时器/计数器,7-15 对上题,在P1.0端输出周期为100ms方波的同时,还要在P1.1端输出周期为10s方波,写出相应的初始化程序和中断服务程序。 分析:晶振频率fosc=12MHz,计数周期=1s 周期100ms方波,中断周期T1=100ms/2=50ms 采用软件延时方法,在P1.1端输出周期为10s的方波,延时次数:5s/50ms = 100 ORG 0000H AJMP MAIN ORG 001BH ;T1的中断入口地址 AJMP T1_INT ;T1的中断服务程序,.,第七章 定时器/计数器,ORG 0100H MAIN:MOV SP,#60H ;设置堆栈 MOV TMOD,#10H ;送模式字 MOV TH1,#3CH ;送初值的高8位 MOV TL1,#0B0H ;送初值的低8位 MOV R2,#100 SETB ET1 ;ET1=1允许T1中断 SETB EA ;开中断,中断总允许 SETB TR1 ;TR1=1 启动T1工作 HERE:SJMP HERE ;等待COUNT T1_INT:MOV T

温馨提示

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

评论

0/150

提交评论