单片机基础__第三版__课后习题答案编程题.doc_第1页
单片机基础__第三版__课后习题答案编程题.doc_第2页
单片机基础__第三版__课后习题答案编程题.doc_第3页
单片机基础__第三版__课后习题答案编程题.doc_第4页
单片机基础__第三版__课后习题答案编程题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

(三)其它类型题3编写程序将RAM20H23H单元的高4位写1,低4位写0。分析:就是把这四个单元写入F0H。用一个DJNZ的循环。 ORG 0000H MOV R0,#1FH ;R0指向20H单元 MOV R5,#04H;四个数LOOP: INC R0 MOV R0,#0F0H ;写入 DJNZ R5,LOOP ;循环4次 END 4把m和m+1单元存有两个BCD数,将它们合并到m单元中,编写程序完成。 (设m=30H, 高位在30H,低数在31H) ORG 0000H MOV A,30H ANL A,#0FH;把它的高四位清零 SWAP A MOV 30H ,A;高低四位调一下,放回原处 MOV A,31H ANL A,#0FH ORL A,30H;合并起来 MOV 30H,A END5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255。编写程序完成。(设data=30H, sun =50H) ORG 0000H MOV R0,#2FH ; 指向前一个单元 MOV R5,#0AH;循环10次 CLR A;先加到A中 LOOP: INC R0 ADD A,R0 DJNZ R5,LOOP MOV 50H,A END6假定8位二进制带符号数丰于R0中,要求编写一个求补程序,所得补码入入R1中。 ORG 0000H MOV A,R0 CPL A;按位取反 ADD A,#01H;1 MOV R1,A 编程题1把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位物外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕。试编程实现。 ORG 0030H MOV R0,#inbuf MOV R1,#outbuf MOV R4,#10H LOOP:MOV A,R0 ; 从内部RAM取数 CJNE A,#0DH,LL ;是否为回车符CR SJMP STOP ;是转停止传送 LL: MOVX R1,A ;不是则传送到外部RAM INC R0 INC R1 DJNZ R4,LL;沒传送完则循环 STOP: SJMP $2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。 (3AH存放在运行程序时的最小的数) ORG 0030H MOV R0,#list MOV A,R0 ;取第一个正数 LOOP: INC R0 ;指向下一个正数 MOV 3AH,R0 CJNE A,3AH,CHK ;前一个数与后一个数比较 CHK: JC LOOP1 ;前一个数小,则转 MOV A,R0 ;前一个数大,取后一个数LOOP1: XCH A,3AH CJNE A,#0FFH,LOOP XCH A,3AH ;取最小数 MOV 3BH,A SJMP $3.内部RAM的X,Y单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。若X为正奇数,ZXY;若X为正偶数,ZXY;若X为负奇数,ZXY;若X为负偶数,ZXY。分析:负数:第7位为1,正数:第7位为0奇数:第0位为1,偶数:第0位为0ORG 0000H MOV A,20H CLR C RL A JC FS ;移到负数处处理 RR A RR A ;第0位移到C再判定一下是不是1 JC ZJS ;到正奇数处 MOV A,20H ORL A,21H MOV 22H,A SJMP OK ZJS: MOV A,20H ADD A,21H MOV 22H,A SJMP OK FS: MOV A,20H CLR C RR A JC FJS ;第0位是1,移到正奇数处理 MOV A,20H XRL A,21H MOV 22H,A SJMP OK FJS: MOV A,20H ANL A,21H MOV 22H,A OK: END 4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte单元中。变换后得到的8个ASCII码存放在外部RAM以buf始的存储单元中去。 ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H MOV A,R0 LOOP: RLC A MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2 LOOP1: MOV A,#31H LOOP2: MOVX DPTR,A MOV A,R7 INC DPTR DJNZ R5,LOOP5.编程实现运算式c = a2+b2 假定a、 b、 c 3个数分别存放在内部RAM的DA、DB、DC单元中,别有平方运算子程序调用。(内部RAM的DA、DB、DC单元设为20H21H22H) ORG 0000H MOV A,20H PUSH ACC AJMP SQR POP ACC MOV 22H,A MOV A,21H PUSH ACC AJMP SQR POP ACC ADD A,22H MOV 22H,A END6、比较两个ASCII码字符串是否相等。字符串的长度在内部RAM 41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。如果两个字符串相等,则置内部RAM 40H单元为00H;否则置40H单元为FF。 ORG 0030H MOV R0,#42H MOV R1,#52H MOV R7,41H ;字符串长度 LOOP: MOV A,R0 MOV 30H,R1 CJNE A,30H,LK INC R0 INC R1 DJNZ R7,LOOP MOV 40H ,#00H SJMP DD LK: MOV 40H,#0FFH DD: SJMP DD7.外部RAM首址为table的数据表中,有10个字节的数据。编程将每个字节的最高位无条件地置“1”。 ORG 0030H MOV DPTR,#table MOV R6,#10 LOOP:MOVX A,DPTR SETB E7H; E7H就是累加器A的最高位(ACC.7), 也可 : SETB ACC.7 MOVX DPTR,A INC DPTR DJNZ R6,LOOP3编写程序将RAM20H23H单元的高4位写1,低4位写0。分析:就是把这四个单元写入F0H。用一个DJNZ的循环。 ORG 0000H MOV R0,#1FH ;R0指向20H单元 MOV R5,#04H;四个数LOOP: INC R0 MOV R0,#0F0H ;写入 DJNZ R5,LOOP ;循环4次 END4把m和m+1单元存有两个BCD数,将它们合并到m单元中,编写程序完成。 (设m=30H, 高位在30H,低数在31H) ORG 0000H MOV A,30H ANL A,#0FH;把它的高四位清零 SWAP A MOV 30H ,A;高低四位调一下,放回原处 MOV A,31H ANL A,#0FH ORL A,30H;合并起来 MOV 30H,A END5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255。编写程序完成。(设data=30H, sun =50H) ORG 0000H MOV R0,#2FH ; 指向前一个单元 MOV R5,#0AH;循环10次 CLR A;先加到A中 LOOP: INC R0 ADD A,R0 DJNZ R5,LOOP MOV 50H,A END6假定8位二进制带符号数丰于R0中,要求编写一个求补程序,所得补码入入R1中。 ORG 0000H MOV A,R0 CPL A;按位取反 ADD A,#01H;1 MOV R1,A END编程题1把长度为10H的字符串从内部RAM的输入缓冲区inbuf向位物外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕。试编程实现。 ORG 0030H MOV R0,#inbuf MOV R1,#outbuf MOV R4,#10H LOOP:MOV A,R0 ; 从内部RAM取数 CJNE A,#0DH,LL ;是否为回车符CR SJMP STOP ;是转停止传送 LL: MOVX R1,A ;不是则传送到外部RAM INC R0 INC R1 DJNZ R4,LL;沒传送完则循环 STOP: SJMP $2、内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“-1”作结束标志。编程实现在表中找出最小数。 (3AH存放在运行程序时的最小的数) ORG 0030H MOV R0,#list MOV A,R0 ;取第一个正数 LOOP: INC R0 ;指向下一个正数 MOV 3AH,R0 CJNE A,3AH,CHK ;前一个数与后一个数比较 CHK: JC LOOP1 ;前一个数小,则转 MOV A,R0 ;前一个数大,取后一个数LOOP1: XCH A,3AH CJNE A,#0FFH,LOOP XCH A,3AH ;取最小数 MOV 3BH,A SJMP $3.内部RAM的X,Y单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。若X为正奇数,ZXY;若X为正偶数,ZXY;若X为负奇数,ZXY;若X为负偶数,ZXY。分析:负数:第7位为1,正数:第7位为0奇数:第0位为1,偶数:第0位为0ORG 0000H MOV A,20H CLR C RL A JC FS ;移到负数处处理 RR A RR A ;第0位移到C再判定一下是不是1 JC ZJS ;到正奇数处 MOV A,20H ORL A,21H MOV 22H,A SJMP OK ZJS: MOV A,20H ADD A,21H MOV 22H,A SJMP OK FS: MOV A,20H CLR C RR A JC FJS ;第0位是1,移到正奇数处理 MOV A,20H XRL A,21H MOV 22H,A SJMP OK FJS: MOV A,20H ANL A,21H MOV 22H,A OK: END 4、把一个8位二进制数的各位用ASCII码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部RAM中byte单元中。变换后得到的8个ASCII码存放在外部RAM以buf始的存储单元中去。 ORG 0030H MOV R0,#byte MOV DPTR,#buf MOV R5,#08H MOV A,R0 LOOP: RLC A MOV R7,A JC LOOP1 MOV A,#30H SJMP LOOP2 LOOP1: MOV A,#31H LOOP2: MOVX DPTR,A MOV A,R7 INC DPTR DJNZ R5,LOOP5.编程实现运算式c = a2+b2 假定a、 b、 c 3个数分别存放在内部RAM的DA、DB、DC单元中,别有平方运算子程序调用。(内部RAM的DA、DB、DC单元设为20H21H22H) ORG 0000H MOV A,20H PUSH ACC AJMP SQR POP ACC MOV 22H,A MOV A,21H PUSH ACC AJMP SQR POP ACC ADD A,22H MOV 22H,A END6、比较两个ASCII码字符串是否相等。字符串的长度在内部RAM 41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。如果两个字符串相等,则置内部RAM 40H单元为00H;否则置40H单元为FF。 ORG 0030H MOV R0,#42H MOV R1,#52H MOV R7,41H ;字符串长度 LOOP: MOV A,R0 MOV 30H,R1 CJNE A,30H,LK INC R0 INC R1 DJNZ R7,LOOP MOV 40H ,#00H SJMP DD LK: MOV 40H,#0FFH DD: SJMP DD7.外部RAM首址为table的数据表中,有10个字节的数据。编程将每个字节的最高位无条件地置“1”。 ORG 0030H MOV DPTR,#table MOV R6,#10 LOOP:MOVX A,DPTR SETB E7H; E7H就是累加器A的最高位(ACC.7), 也可 : SETB ACC.7 MOVX DPTR,A INC DPTR DJNZ R6,LOOP单片机基础第五章习题课本5。.1设单片机的晶振频率为6MHZ,使用定时器1以方式0产生500us的等宽正方波连续脉冲,并由P1.0输出。分析:使用P1.0输出脉冲,可由定时器产生一个250us的定时,到了时间,就执行CPLP1.0就可以了。所以问题转化为产生定时。解:(1)计算定时器的初值:(213X)T机T定时代入数据得:X8067由于方式0的特点(高8位,低5位),计算出TH1,TL1得TH10FCHTL103H(2) 计算出TMOD的初始值:TMOD00H(3) 编程实现:方法一:使用查询法。程序不断地查询TF1的值。如定时器溢出(TF11),则CPLP1.0所以: MOV TMOD ,#00H MOV TH1,#0

温馨提示

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

评论

0/150

提交评论