单片机习题(苏州大学)_第1页
单片机习题(苏州大学)_第2页
单片机习题(苏州大学)_第3页
单片机习题(苏州大学)_第4页
单片机习题(苏州大学)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

章指令系统习题4-36(1)将R6的高4位和R7的高4位交换,R6、R7的低4位内容保持不变。MOVA,R6;(A)=A1A2ANLA,#0F0H;(A)=A10MOVR3,A;(R3)=A10MOVA,R7;(A)=B1B2ANLA,#0FH;(A)=0B2ORLA,R3;(A)=A1B2MOVR4,A;(R4)=A1B2MOVA,R7;(A)=B1B2章指令系统习题4-36(1)将R6的高4位和R7的高4位交换第四章指令系统习题 ANLA,#0F0H;(A)=B10 MOVR5,A;(R5)=B10 MOVA,R6;(A)=A1A2 ANLA,#0FH;(A)=0A2 ORLA,R5;(A)=B1A2 MOVR6,A;(R6)=B1A2 MOVA,R4;(A)=A1B2 MOVR7,A;(R7)=A1B2第四章指令系统习题 ANLA,#0F0H第四章指令系统习题(2)两个无符号数分别存放在30H、31H,试求出它们的和并将结果存放在32H中。 MOVA,30H ADDA,31H MOV32H,A HLT(3)将30H单元的内容循环左移两位,送外部RAM3000H中。 MOVA,30H RLA RLA MOVDPTR,#3000H MOVX@DPTR,A第四章指令系统习题(2)两个无符号数分别存放在30H、第四章指令系统习题(4)将程序存储器1000H的内容取出送外部RAM3000H单元。 CLRA MOVDPTR,#1000H MOVCA,@A+DPTR MOVDPTR,#3000H MOVX@DPTR,A第四章指令系统习题(4)将程序存储器1000H的内容取第四章指令系统习题4-37(SP)=20H,(A)=67H,(1FH)=25H,(20H)=34H PUSHACC PUSH1FH ;(23H)=34H PUSH20H ;(22H)=25H SWAPA ;(21H)=67H MOV1FH,A ;(20H)=34H RLA ;(1FH)=25H MOV20H,A ;SP=21H POPDPL ;(A)=ECH POPDPH ;DPTR=2534H CLR01H第四章指令系统习题4-37(SP)=20H,(A)=6第五章MCS-51汇编语言程序设计5-4设常数和数据标号的定义为 ORG2000HDAT1: DB1,2,3,4,5 DAT2: ‘ABCD’N EQU$-DAT2DAT3: DW1200H,-2TAB: DWDAT1,DAT3(1)画出上述数据或地址的存储形式(2)写出各标号的地址 N=2009H-2005H=04H第五章MCS-51汇编语言程序设计5-4设常数和数据标第五章MCS-51汇编语言程序设计标号地址内容DAT12000H01H2001H02H2002H03H2003H04H2004H05HDAT22005H41H(‘A’)2006H42H(‘B’)2007H43H(‘C’)2008H44H(‘D’)DAT32009H12H200AH00H200BHFFH200CHFEHTAB200DH20H200EH00H200FH20H2010H09H第五章MCS-51汇编语言程序设计标号地址内容DAT12第五章MCS-51汇编语言程序设计5-5 双字节加法。被加数放在片内RAM30H(高字节)和31H(低字节)单元中,加数放在片内RAM32H(高字节)和33H(低字节)单元中,运算结果存放在30H和31H单元中,进位存放在位寻址区的00H位。START:PUSHA ;将A内容进栈保护 MOVR0,#31H ;地址指针 MOVR1,#33H CLR00H ;00H位清零 MOVA,@R0 ;低位字节数相加 ADDA,@R1第五章MCS-51汇编语言程序设计5-5 双字节加法。被第五章MCS-51汇编语言程序设计 MOV@R0,A DECR0 DECR1 MOVA,@R0 ;高位字节数相加 ADDCA,@R1 MOV@R0,A MOV00H,C POPA第五章MCS-51汇编语言程序设计 MOV@R0第五章MCS-51汇编语言程序设计5-6编写程序,找出片内RAM30H~5FH单元中无符号数的最大值,并存放在60H单元中。 MOVR0,#30H MOV60H,@R0;60H中存放最大值L0: INCR0 MOVA,@R0 CLRC SUBBA,60H;Xi+1-Xi JCL1 ;Xi+1<Xi MOV60H,@R0 ;Xi+1>Xi,则交换L1:CJNER0,#5FH,L0 SJMP第五章MCS-51汇编语言程序设计5-6编写程序,找出第五章MCS-51汇编语言程序设计5-7从片内RAM30H开始存放20个数,找出其中的最小数。 MOVR0,#30H ;首地址 MOVR2,#20 ;20个数 MOV50H,@R0;50H中存放最小值L0: INCR0 MOVA,@R0 CLRC SUBBA,50H;Xi+1-Xi JNCL1;Xi+1>Xi MOV50H,@R0;Xi+1<Xi,则交换L1: DJNZR2,L0 SJMP$第五章MCS-51汇编语言程序设计5-7从片内RAM第五章MCS-51汇编语言程序设计5-8编写程序,查找片内RAM31H~50H单元中是否有常数41H,若有则将51H单元置-1;若没有,则将51H单元清0。 MOVR0,#30H ;首地址L0: INC R0 CJNE@R0,#41H,NEQEQ: MOV51H,#0FFH ;51H单元置-1 SJMPED1NEQ: CJNER0,#51H,L0 MOV51H,#00HED1: HLT 第五章MCS-51汇编语言程序设计5-8编写程序,查找第五章MCS-51汇编语言程序设计5-9编写程序,将片内RAM40H~6FH单元中的无符号数按照从小到大的次序排列,结果仍放在原存储空间。 MOVR2,#2FH;个数LP1: MOVA,R2 MOVR3,A MOVR0,#40H;地址指针指向首地址 CLR00H;位地址位操作LP2: MOVA,@R0 MOVB,A INCR0 CLRC MOVA,@R0第五章MCS-51汇编语言程序设计5-9编写程序,将片第五章MCS-51汇编语言程序设计 SUBBA,B;Xi+1-Xi JNCLESS;CY=0则转移到LESS MOVA,B;CY=1Xi+1<Xi XCHA,@R0 DECR0 MOV@R0,A INCR0 SETB00H;(00H)=1LESS:DJNZR3,LP2;CY=0Xi+1>Xi JNB00H,STOP;(00H)=0则转移 DJNZR2,LP1STOP:RET第五章MCS-51汇编语言程序设计 SUBBA,B第五章MCS-51汇编语言程序设计5-10编写程序,统计片内RAM20H~5FH中出现55H的次数,并将统计结果送入60H单元。 MOVR0,#20H;地址指针指向首地址 MOV60H,#00H;清零L0: MOVA,@R0;取数 CJNEA,#55H,L1;(A)≠55H,则转到L1 INC60H;(A)=55H,L1: INCR0;取下一个数 CJNER0,#60H,L0;是否到末地址? HLT第五章MCS-51汇编语言程序设计5-10编写程序,统第五章MCS-51汇编语言程序设计5-11编程将片内RAM30H~7FH单元清零。方法1:控制循环体的执行次数BE1: MOVR0,#30H MOVR7,#50HLP1: MOV@R0,#00H INCR0 DJNZR7, LP1 RET方法2:判断循环体的结束条件BE2: MOVR0,#2FHLP2: INCR0 MOV@R0,#00H CJNER0,#7FH,LP2 RET第五章MCS-51汇编语言程序设计5-11编程将片内R第五章MCS-51汇编语言程序设计5-12编程序,将片外RAM3000H~30FFH单元全部清零。 MOVDPTR,#3000H MOVR0,#00HL1: MOVA,#00H MOVX@DPTR,A INCDPTR DJNZR0,L1 SJMP$第五章MCS-51汇编语言程序设计5-12编程序,将片外第五章MCS-51汇编语言程序设计5-13从片内RAMDATA1起,存放20H个数据,编写程序,将这20H个数据逐一移到片外RAMDATA2单元开始的存储空间。 MOVR0,#DATA1;地址指针指向首地址 MOVR7,#20H;循环次数 MOVDPTR,#DATA2L1: MOVA,@R0 MOVX@DPTR,A INCDPTR INCR0 DJNZR7,L1 SJMP$第五章MCS-51汇编语言程序设计5-13从片内RAM第五章MCS-51汇编语言程序设计5-14将片外RAM8000H开始的20个字节数据传送到片外RAM8100H开始的地址单元中。 MOVR0,#00H MOVR1,#00H MOVR2,#20HL1: MOVP2,#80H;地址指针指向8000H MOVXA,@R0;输入数据 MOVP2,#81H;地址指针指向8100H MOVX@R1,A;输出数据 INCR0 INCR1 DJNZR2,L1 HLT第五章MCS-51汇编语言程序设计5-14将片外RAM第五章MCS-51汇编语言程序设计5-15编程统计累加器A中“1”的个数。 MOVR2,#07H ;循环次数 MOVR3,#00H ;存放“1”的个数LP1:RLCA JNCLP2;C=0 INCR3 ;C=1LP2: DJNZR2,LP1 HLT

第五章MCS-51汇编语言程序设计5-15编程统计累加第五章MCS-51汇编语言程序设计5-16从片内30H开始,存放50个数据。编写程序,将其中正数、负数分别送入片外RAM5000H和5500H开始的单元,分别记下正数和负数的个数并送入片内RAM70H和71H单元。 MOVR0,#30H;片内RAM首地址 MOVR1,#00H;清零 MOVR2,#50;数据的个数 MOVR3,#00H;R3存放正数个数清零 MOVR4,#00H;R4存放负数个数清零T1:MOVA,@R0;取数 INCR0;指针指向下一个单元 CLRC SUBBA,#00H JCT2;有借位,Xi<0 INCR3;Xi>0第五章MCS-51汇编语言程序设计5-16从片内30H第五章MCS-51汇编语言程序设计 MOVP2,#50H ;片外正数首地址 MOVR1,R3 ;5000H DECR1 MOVX@R1,A ;输出数据 JMPT0 ;比较一个数结束T2: INCR4 ;Xi<0 MOVR1,R4 DECR1 ;片外负数首地址 MOVP2,#55H ;5500H MOVX@R1,A ;输出数据T0: DJNZR2,T1 MOV70H,R3 ;正数的个数 MOV71H,R4 ;负数的个数 HLT第五章MCS-51汇编语言程序设计 MOVP2,#第五章MCS-51汇编语言程序设计5-19编写程序,将30H~34H单元中压缩的BCD码转换为ASCII码,并将结果存放在片内RAM60H~69H单元中。 MOVR0,#30H MOVR1,#60HT1: MOVA,@R0 MOVB,A INCR0T2: ANLA,#0FH ADDA,#30H MOV@R1,A INCR1 MOVA,B第五章MCS-51汇编语言程序设计5-19编写程序,将第五章MCS-51汇编语言程序设计 SWAPA ANLA,#0FH ADDA,#30H MOV@R1,A INCR1 CJNER0,#35H,T1 HLT第五章MCS-51汇编语言程序设计 SWAPA第五章MCS-51汇编语言程序设计5-20将片内RAM30H单元的内容转换成三位BCD码,并将结果存入片外RAM1000H开始的单元。解:将BCD码先放入31H(百位)、32H(十位)、33H(个位)单元中。方法一:先得到百位BD1: MOVA,30H MOVB,#100 DIVAB MOV31H,A MOVA,B第五章MCS-51汇编语言程序设计5-20将片内RAM第五章MCS-51汇编语言程序设计 MOVB,#10 DIVAB MOV32H,A MOV33H,B方法二:先得到个位BD2: MOVA,30H MOVB,#10 DIVAB MOV33H,B MOVB,#10 DIVAB

第五章MCS-51汇编语言程序设计 MOVB,#10第五章MCS-51汇编语言程序设计 MOV32H,B MOV31H,A将结果存入片外RAM1000H开始的单元 MOVR0,#30H MOVDPTR,#1000HLP: INCR0 MOVA,@R0 MOVX@DPTR,A INCDPTR CJNER0,#33H,LP RET 第五章MCS-51汇编语言程序设计 MOV32H,B第七章定时器/计数器7-14设MCS-51单片机晶振频率为12MHz,使用定时器1的工作方式1,在P1.0端输出周期为100ms的方波,使用中断方式设计程序,写出相应的是初始化程序和中断服务程序。分析:晶振频率fosc=12MHz,计数周期=1μs周期100ms的方波,中断周期T1=100ms/2=50ms初值N=65536-T1×12MHz/12=15536=3CB0H ORG0000H AJMPMAIN ORG001BH;T1的中断入口地址 AJMPT1_INT;T1的中断服务程序第七章定时器/计数器7-14设MCS-51单片机晶振第七章定时器/计数器 ORG0100HMAIN:MOVSP,#60H;设置堆栈MOVTMOD,#10H;送模式字 MOVTH1,#3CH;初值的高8位 MOVTL1,#0B0H;初值的低8位 SETBET1;ET1=1允许T1中断 SETBEA;开中断,中断总允许 SETBTR1;TR1=1启动T1工作HERE:SJMPHERE;等待T1_INT:MOVTH1;#3CH;中断服务程序MOVTL1,#0B0HCPLP1.0;P1.0取反形成方波RETIEND第七章定时器/计数器 ORG0100H第七章定时器/计数器7-15对上题,在P1.0端输出周期为100ms方波的同时,还要在P1.1端输出周期为10s方波,写出相应的初始化程序和中断服务程序。分析:晶振频率fosc=12MHz,计数周期=1μs周期100ms方波,中断周期T1=100ms/2=50ms采用软件延时方法,在P1.1端输出周期为10s的方波,延时次数:5s/50ms=100 ORG0000H AJMPMAIN ORG001BH;T1的中断入口地址 AJMPT1_INT;T1的中断服务程序第七章定时器/计数器7-15对上题,在P1.0端输出周第七章定时器/计数器 ORG0100HMAIN:MOVSP,#60H;设置堆栈MOVTMOD,#10H;送模式字MOVTH1,#3CH;送初值的高8位MOVTL1,#0B0H;送初值的低8位MOVR2,#100SETBET1;ET1=1允许T1中断 SETBEA;开中断,中断总允许 SETBTR1;TR1=1启动T1工作HERE:SJMPHERE;等待COUNTT1_INT:

温馨提示

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

评论

0/150

提交评论