ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:34.19KB ,
资源ID:4036433      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4036433.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(胡乾斌教材部分习题解答.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

胡乾斌教材部分习题解答.docx

1、胡乾斌教材部分习题解答第一章1.5 129=10000001B=81H; 253=11111101B = FDH;21.125=10101.001B=15.2H 18.6=10010.1001,1001,1001B=12.999H (无限循环小数,根据精度确定需要的位数)1.12由题得三者均为正数,所以原码、反码、补码相同,故x1= x2= x3=0101,0111B=57H=871.13 该题与上题不同在均是负数,故原码、反码、补码相同的情况下,原数并不相同。第二章2.6最后一问:如果CPU使用两组寄存器,一般使用第0与第1组,那么剩下的寄存器组对应的地址单元可作一般缓冲用,第0与第1组已用

2、掉地址:00H0FH, 故而堆栈SP的初值可设定在0FH或以上。第三章3.6 (1) A=57H, Cy=1(在符号位产生进位, 进位标志位Cy=1),进位的1是丢掉,累加器只能存8位信息。有同学写成A=157H, Cy=0. (2) A=3BH, Cy=03.8 SP=2FH, DPH=01H, DPL=23H, A=20H注意SP在每次的POP减一,故最终SP=2FH.(30H单元的前一单元不是29H)3.9 堆栈(0AH)=34H, (0BH)=12H, SP=0BH有的同学仅写DPTR的内容,是不够的,这里是将DPTR的内容压入栈中,但DPTR本身不代表堆栈。3.24 Loop循环完成

3、的是24位的加法,每步将带进位位Cy相加,同时影响进位位。故经过loop循环后R0指向22H单元,结果送原R0指向的地址单元。原来:(22H)=A0H (27H)=76H(21H)=90H (26H)=6FH(20H)=80H (25H)=A0HLoop循环: (22H)=17H Cy=1(21H)=00H Cy=1(20H)=20H Cy=1之后,R0=23H, R1=28H。因Cy=1, 故(23H)=01H。所有地址单元只可存八位数,不可(21H)=160H. 3.25A=10001100=8CH,执行乘以10的功能,因为A*2+A*2*2*2=A*10有的同学没有写出是乘以10的功能。

4、3.26实现的如下逻辑运算(P1.0 P1.1) P1.2 (P1.3),其中以用户标志位F0来存储(P1.0 P1.1) P1.2的结果。第四章4.5略有的同学有这样的指令:MOV R0, #2100H. R0只能存八位,故只能指向低位的地址区。有的同学逻辑搞反,不为零应该继续循环,故:DJNZ R2, LOOP就可以了,不需要太复杂。还有的同学传送方向搞反了,程序写成:MOVX A, DPTRMOV R0, A计数器初始值应该为21H.补充习题,有的同学忘做,可以简单回答:LJMP与LCALL的主要区别是未发生保护现场、恢复现场操作。4.8 采用一种子程序的形式实现: ORG 1000H

5、MOV DPTR, #3001H MOVX A, DPTR MOV B, A ; 也可用其它内部存储单元临时存放3001H的内容。 MOV DPTR, #3000H MOVX A, DPTR ACALL SQRSUM CJNE A, #10, EXE1 SJMP SAVEDATAEXE1: JC ADD10 SUBB A, #10 SJMP SAVEDATAADD 10: ADD A, #10SAVEDATA: MOV DPTR, #3002H MOVX DPTR, ADONE: SJMP DONESQRSUM: ADD A, B ;该子程序以寄存器A与B传送参数值 MOV B, A MUL

6、AB RET END该程序没有考虑若a+b255,以及(a+b)2255的情况下,实际的角度应该就这两方面进行放弃操作。但本题未说明出现这种情况如何情况,为简化程序中未写入这些情况的处理。4.9 循环加判断实现 ORG 1000H MOV DPTR, #1000H MOV R2, #99 ;本程序循环的地址指针已经从1001H单元开始,故循环次数减1MOVX A, DPTR MOV 30H, A ;将当前值存入临时的30H单元LOOP: INC DPTRMOVX A, DPTRSUBB A, 30HJB ACC.7, NEXTADD A, 30H ;恢复A中的值,因为最新的值刚才进行了减操作。

7、MOV 30H, ANEXT: DJNZ R2, LOOP MOV A, 30H MOV DPTR, #1100H MOVX DPTR, A END4.10 ORG 1000H MOV DPTR, #2100H MOV R3, #100 ;总计数器 MOV R0, #00 ;0计数器 MOV R1, #00 ; 正数计数器 MOV R2, #00 ; 负数计数器LOOP: MOVX A, DPTRJZ COUNT0 ;以下是两次分支程序实现多分支程序JB ACC.7, CTNEG ;转入负数统计程序段CTPOS: INC R1 SJMP DONECTNEG: INC R2 SJMP DONEC

8、OUNT0: INC R0DONE: INC DPTRDJNZ R3, LOOP END 该程序与4.2.7有些类似。4.12 LOOP: MOV R0,#30HMOV R7,#100 ; LOOP1:MOV A,R0 ;JZ LOOP2JNB ACC.7, LOOP2CPL AADD A,#81HMOV R0,A ; LOOP2:INC R0 DJNZ R7,LOOP1 RET ; 4.20 晶振为6MHz,得每个机器周期为12*1/6s=2s, 可以先行计算对于100ms,需要循环50,000个机器周期;对于1s, 需要500,000个机器周期;考虑DJNZ为2个机器周期,故循环次数比刚才

9、的数字减半。对于100ms为简单,以25,000个DJNZ实现,可以250*100故,程序为由程序: ORG 1000H MOV R2, #250DELAY2: MOV R3, #100DELAY1: DJNZ R3, DELAY1 ; 这句将循环25,000次,执行时间最长。 DJNZ R2, DELAY2该程序执行时间:1+250*(1+100*2+2)=50751个机器周期=101.502ms,算对.精确的计算,可以将R3的值设为x,求解。1+250*(1+x*2+2)=50000,故x=98.5,取x=99程序执行时间:50251个机器周期=100.502ms. 对于1s, 由于需要5

10、00,000个机器周期, 以250,000个DJNZ实现已不方便。因为两个八位数相乘,最大255*255。故需要NOP指令加长内循环的时间。 ORG 1000H MOV R2, #250DELAY2: MOV R3, #DIMSDELAY1: NOP NOP NOP NOP NOP NOPDJNZ R3, DELAY1 ; 这句将循环62,500次,执行时间最长。 DJNZ R2, DELAY2简便计算:250*8*DIMS=500,000, 故DIMS=250该程序执行时间:1+250*(1+250*8+2)=500751个机器周期=1001.502ms,算对.第五章5.7 2761(1).

11、 0000H1FFFH2761(2). 2000H3FFFH2761(3). 4000H5FFFH2761(4). 6000H7FFFH6264(1). 8000H9FFFH6264(2). A000HBFFFH自测题5.32. 2764(a) C000HDFFFH 2764(b) A000HBFFFH62646000H-7FFFH第六章习题略第七章7.3已知8255A的口地址为7FF07FF3H,阅读下述程序,回答问题:执行13条指令后,要求A,B,C三个端口各干什么?答:通过向控制寄存器送82H的数值,可知,A口将工作于方式0,输出状态;C口上半部将工作于方式0,输出状态;B口将工作方式0

12、,输入状态;C口下半部将工作于方式0,输出状态。已A口=FFH,B口=78H,C口=7FH,(30H)=32H,执行49条指令后,A口、B口、C口,(30H)中的值发生了什么变化 ORG 8000H1 MOV DPTR, #7FF3H2 MOV A, #82H3 MOV DPTR, A4 MOV DPTR, #7FF1H5 MOVX A, DPTR6 MOV 30H, A 7 MOV DPTR, #7FF0H8 MOV A, #79H9 MOVX DPTR, A答:执行第4-5条指令,将从B口输入数据至累积器A,执行第6条指令,(30H)=78H;执行第7-9条指令,将79H数值从A口输出,因

13、此A口=79H,B口=78H,C口=7FH,(30H)=78H第八章自测题8.3 (1) 定时器0工作于方式1(2) 机器周期1s, 初始值x=0DD0H=3536, 定时时间65536-3536=62000个机器周期,即62ms。(3) 由于定时器/计数器溢出后,其中的值已变为0,不再是所需初始值,而方式1不具有自动装载初值的功能,若不重新赋值,必然达不到预期的定时效果,故需重置初值。补充题设单片机时钟为12MHz,利用定时器T1, 使P1.0引脚输出2.0ms的矩形波,要求占空比为1:2,试编写程序,要求中断方式,请问采用方式2可以吗?为什么?建议采用方式0。解:根据输出波的要求,可知可采

14、用高低电平分别为1ms便能满足。欲满足定时1ms,初始值从最高位13位开始往后取高位八位,即看成:所以TH1=11100000=E0H, TL1=18H. 若采用方式2最大计数量为256,而定时时间需要的计数量为1000,所以一般情况下不可行。主程序: ORG 0000H AJMP MAIN ORG 001BH AJMP TINTMAIN: MOV TMOD, #00H MOV TH1, #0E0H MOV TL1, #18H SETB EA SETB ET1 SETB TR1 SJMP $中断程序:TINT: MOV TH1, #E0H MOV TL1, #18H CPL P1.0 RETI

15、第九章 串行通信补充习题:已知单片机晶振fosc=6MHz。请编制串行通信数据接收程序,将接收的16个字节的数据送入片内505FH单元中。串行接口设定为工作方式3,要求波特率1200 b/s。(采用中断方式实现)解:由晶振fosc=6MHz,得机器周期2s,波特率=,得计数初始值x=256-13=243=F3H ORG 0000H AJMP MAIN ORG 0023H AJMP SINTMAIN: MOV TMOD, #20H ;定时器1工作于方式2 MOV TH1, #0F3H MOV TL1, #0F3HMOV SCON, #0D0H ;串行口工作于方式3,置接收REN有效MOV PCO

16、N, #00H ; 设培增位SMOD为0MOV R0, #50H ;存放的目的地址MOV R7, #10H ;存放数据的数量 SETB EA SETB ES1 ;置串行中断有效 SETB TR1 ;启动定时器,产生波特率,方式2自动装载初值,故不需要中断子程序重新装载 SJMP $中断程序:SINT: CLR RIMOV A, SBUF ;将接收的数据送入累加器A JB PSW.0, ONEE ;LOOP1 JB RB8, ERROR ;PSW.0与RB8不一致,转出错处理程序 SJMP RIGHTONEE : JNB RB8, ERROR ;另一种不致,转出错处理 RIGHT: MOV R0

17、, A INC R0 DJNZ R7, CONTIN CLR ES SJMP CONTINERROR: CONTIN: RETI第十章 D/A和A/D转换10.12,去掉其中“采样周期为1s”,为避免调用延时子程序。实际不同通道之间是需要一定延时的。连线参照书10.3.4ORG 0000H AJMP MAIN ORG 0013H AJMP BINT1 ORG 0100HMAIN: MOV R1, #30H ;数据区首地址 MOV R4, #08 ;8路模拟信号计数器 MOV R2, #0 ;R2确定哪个通道A/D转换 SETB EA ;开中断总允许 SETB EX1 ;开外部中断1 SETB

18、IT1 ;外部中断边沿触发 MOV DPTR, #0BFFFH ;送ADC0809地址 MOV A, R2 MOVX DPTR, A ;输出有效信号,启动A/D转换 SJMP $ ;等待中断 ORG 0200HBINT1: MOV DPTR, #0BFFFH ;ADC0809地址 MOVX A, DPTR ;输出有效信号,输入转换结果 MOV R1, A ;A/D转换结果送入R1指向的单元 LCALL DELAY ; 本题没有延时要求,若有可以在此加上 INC R1 ;目的单元指针增1 INC R2 ;修改模拟通道地址 MOV A, R2 ;下一个模拟通道 MOVX DPTR, A ;由中断子

19、程序启动第1次以后的A/D转换 DJNZ R4, LOOP ; 8路未采集完,准备返回 CLR EX1 ;8路已采集完,通过关中断的形式结束LOOP: RETIEND 10.6 试进行程序设计,利用DAC0832输出一个锯齿波信号START: MOV DPTR,#7FFFH ;置DAC0832地址;LOOP1: MOV R7,#00H ;置初值;LOOP2: MOV A,R7 ;读输出值; MOVX DPTR,A ;输出 INC R7 CJNE R7, #40H, LOOP2 ;判断是否达到峰值 SJMP LOOP1 ;进入新的一轮输出11.2用图11.1.3的动态显示接口电路编写显示Good

20、by的程序此题,可以在表中放入“日”字LED显示器可以显示的英文字母,然后在读取表中数据时,给出欲显示的字母的索引值。但由于“日”字LED显示器并不能顺序的放下所有英文字母,因此,采用表格法不适合以索引值来取段码,不如直接按顺序放下g, o, o, d, b, y的段码。然后以顺序号1, 2, 3, 4, 5, 6取便是。根据此分析,本题将欲显示的这几个英文字母的相应段码,放置在指定表中。以下程序是关键程序段,未写出如何终止显示等部分。 DIR; MOV R0, #00H ; 表格顺序号MOV R3, #01H ; 扫描位初值 MOV A, R3 ; 扫描位初值先送ALD0: MOV DPTR

21、, #7F01H ; 8155的PA口地址 MOVX DPTR, A ; 扫描位送PA口 INC DPTR ; 8155的PB口地址 MOV A, R0 ; 取显示数据,想想此处为什么不是间接寻址? ADD A, #0CH ; 地址偏移量补偿 MOVC A, A+PC ; 从表中取待显示的段码DIR1: MOVX DPTR, A ; 段码送8155 PB口 ACALL DL1 ; 显示需要一定延时,否则人眼看不到 INC R0 ; 取的数据单元指针增1 MOV A, R3 ; JB ACC.5, DIR ; 5位扫描完,再重新开始显示。 RL A ; 下一扫描位 MOV R3, A SJMP LD0 ; 返回到显示下一位SHTAB: DB 3DH, 5CH, 5CH, 5EH, 7CH, 6EHDL1: (略)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1