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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(单片机技术及C51程序设计第2版问题详解唐颖阮越.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机技术及C51程序设计第2版问题详解唐颖阮越.docx

1、单片机技术及C51程序设计第2版问题详解唐颖阮越单片机技术及C51程序设计(第2版)习题解 (注:问答题略) 习题1部分习题解1-1 给出下列有符号数的原码、反码和补码(设计算机字长为8位)。+37 -86 -105 +112 -79 解:+37: 原码=00100101B;反码=00100101B;补码=00100101B -86: 原码=11010110B;反码=10101001B;补码=10101010B -105:原码=11101001B;反码=10010110B;补码=10010111B +112:原码=01110000B;反码=01110000B;补码=01110000B -79:

2、 原码=11001111B;反码=10110000B;补码=10110001B1-2 8位补码表示的定点整数的范围是多少? 解:-128+1271-3 已知X、Y是两个有符号数的定点整数,它们的补码为:X补=00010011B,y补=11111001B,求X+Y补等于多少? 解:X+Y补=X补+y补=00001100B1-4 请选择正确答案填在括号中:将-33以补码形式存入8位寄存器中,寄存器中的内容为(A)ADFH BA1H C5FH DDEH1-5 请选择正确答案填在括号中: 如果X为负数,由X补求-X补是将( D )AX补各值保持不变 BX补符号位变反,其他各位不变CX补除了符号位外,各

3、位变反,末位加1DX补连同符号位一起各位变反,末位加11-6 请选择正确答案填在括号中:设有二进制数X=-1101110,若采用8位二进制数表示,则X补的结果是( D )。A11101101 B10010011 C00010011 D100100101-7 8051与8751的区别是(C)A内部数据存储数目的不同 B内部数据存储器的类型不同C内部程序存储器的类型不同 D内部寄存器的数目不同1-8 单片机与普通计算机的不同之处在于其将(CPU)(存储器)和(I/O接口)三部分集成于一块芯片上(的单片微机)1-9 MCS-51单片机内部提供了哪些资源?略1-10 单片机有哪些应用特点?主要应用在哪

4、些领域?略1-11 MCS-51单片机如何进行分类?各类有哪些主要特性?略习题2部分习题解2-1 填空题1MCS-51单片机中P3端口的第5位(P3.5)的位地址是(B5H)。2堆栈指针SP的字节地址是(81H),MCS-51单片机复位后,堆栈指针SP的值为(07H)。3MCS-51系列单片机的一个机器周期包含(6)个时钟周期。4MCS-51单片机复位后,PC的内容是(0000H),CPU使用的当前工作寄存器是第(0)组,此时R0R7对应的地址范围是(00H)(07H)。5设(PSW)=88,则Cy=(1),P =(0)。选择的是第(1)组通用寄存器,该组寄存器在片内RAM中的地址为(08H0

5、FH)。6单片机的特殊功能寄存器只能采用(直接)寻址方式。7如果8051单片机采用6MHz的晶振,那么该系统一个机器周期为(2)微秒(s),一个状态周期(或称时钟周期)为(2/6)微秒(s)。88051单片机采用12MHz的晶振频率,设无外扩存储器,单片机运行时ALE引脚输出的正脉冲的频率是(2)MHz。 2-2 选择题1若RS0=0,RS1=0,则当前使用的工作寄存器组为(A)。A第0组 B第1组 C第2组 D第3组2若Fosc=12MHz,则8051的机器周期为(B)。A0.5 s B1 s C2 s D4 s3堆栈遵循的原则是(B)。 A先进先出,后进先出 B先进后出,后进先出C先进先出

6、,后进后出 D先进后出,后进后出48051有(B)个可编程的16位定时/计数器。A1 B2 C3 D45MCS-5l单片机中不是准双向I/O接口的是(A)。AP0 BP1 CP2 DP36在MCS-51系统中扩展一片2732(EPROM存储芯片,容量4K8)需要(C)根地址线。A10 B11 C12 D1378051单片机有(C)个中断源。A3 B4 C5 D68片内RAM的20H2FH为位寻址区,所包含的位地址是( B)。A00H20H B00H7FH C20H2FH D00HFFH108051单片机复位后的P0P3的值为(D)。A00H B0FH CF0H DFFH2-3 简答题(略)1简

7、述在MCS-51系列单片机中哪些地址单元具有位地址?2MCS-51系列单片机的P0P3口有何使用特点?各自的第二功能是哪些?3决定程序执行顺序的寄存器是哪个?它是多少位的寄存器?是不是特殊功能寄存器?4MCS-51系列单片机的PSW寄存器各位标志的意义是什么?若PSW=91H,请问其包含的信息是什么?5MCS-51系列单片机由哪几个功能部件组成?6MCS-51系列单片机的存储器结构有何特点?存储器的空间如何划分?各地址空间的寻址范围是多少?7MCS-51系列单片机的控制总线主要信号有哪些?各信号的作用如何?8MCS-51系列单片机有哪几种低功耗工作模式?简述这几种低功耗工作模式特点及退出该低功

8、耗模式的方法。9MCS-51系列单片机在存储器组织上分为四个物理上相互独立的空间,单片机是如何实现对这四个空间进行访问的?习题4部分习题解4-1 C语言有哪些特点?略4-2 有哪些数据类型是MCS-51单片机直接支持的?略4-3 C51特有的数据结构类型有哪些?略4-4 C51中存储类型有几种,它们分别表示的存储器区域是什么?略4-5 C51中,bit位与sbit位有什么区别?略4-6 在C51中,通过绝对地址来访问存储器的有几种?略4-7 在C51中,中断函数与一般函数有什么不同?略4-8 按给定存储器类型和数据类型,写出下列变量的说明形式。(1)在data区定义字符变量va11。解:cha

9、r data val1;(2)在idata区定义整型变量va12。 解:int idata val2;(3)在xdata区定义无符号字符数组va134。 解:extern char xdata va134;(4)在xdata区定义一个指向类型的指针px。 解:uint xdata *px;(5)定义可寻址位变量flag。 解:bit bdata flag;(6)定义特殊功能寄存器变量p3。 解:sfr P3=0xB0;(7)定义特殊功能寄存器变量SCON。 解:sfr SCON=0xB8;(8)定义16位的特殊功能寄存器T0。 解:sfr16 T0=0x8C8A;4-9 写出下列关系表达式或逻

10、辑表达式的结果,设a=3,b=4,c=5。(1)a+bc&b=c 解:a+bc&b=c 不成立,结果为假(0)(2)ab+c&b-c解:ab+c&b-c表达式为非零,逻辑结果为1(3)!(ab)&!c1解: !(ab)&!c1表达式为非零,逻辑结果为1(4)!(a+b)+c 1&b+c/2解:!(a+b)+c 1&b+c/2表达式为非零,逻辑结果为14-10 在C51语言中,设变量a,b都为unsigned char类型,a=78(十进制),b=209(十进制),用十六进制表示以下表达式的计算结果:a&b= ox40 ;ab= 0xdf ;b2= 0x34 ;a = 0xb1 ;(ab)?a:

11、b= 0xd1 。4-11 C51程序是基于MCS-51系列单片机的C程序,在C51程序中,int型数据所能表示的数值范围是多少?。解:-32768+327674-13 用分支结构编程实现,当输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。解:switch(grade) case 1:printf(An);break;case 2:printf(Bn);break;case 3:printf(Cn);break;case 4:printf(Dn);break;case 5:printf(ENDn);break;default:printf

12、(errorn)4-14 输入三个无符号字符数据,要求按由大到小的顺序输出。解:#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数 int a,b,c,t; /定义整型变量a,b,c,t SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf (input a,b,c:n); /输出提示信息 scanf(%d,%d,%d,&a,&b,&c); /输入a,b和c的值,无符号数据。 printf(n); /输出换行 if(ab) t=a;a=b;b=t; if(ac) t=a;a=c

13、;c=t; if(bc) t=b;b=c;c=t; printf(%d,%d,%d,c,b,a); while(1); /结束4-15 用三种循环结构编写程序实现输出1到10的平方之和。解:1、通过while语句实现计算并输出1到10的平方之和。#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数 int i,s=0; /定义整型变量i和s i=1; SCON=0x52; /串口初始化 TMOD=0x20; TH1=0Xf3; TR1=1; while (i=10) /累加110的平方之和在s中 s=s+i*i; i+; prin

14、tf(%dn,s);while(1);2、通过do.while语句实现计算并输出1到10的平方之和。#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数 int i,s=0; /定义整型变量i和s i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0Xf3;TR1=1;do s=s+i*i; /累加110的平方之和在s中 i+;while (i10); printf(%dn,s);while(1);3、用for语句实现计算,并输出1到10的平方之和。#include /包含特殊功能寄存器库#include /包

15、含I/O函数库void main(void) /主函数 int i,s=0; /定义整型变量i和s i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0Xf3;TR1=1; for(i=1;i10;i+) s=s+i*i; /累加110的平方之和在s中printf(dn,s);while(1); 4-16 对一个5个元素的无符号字符数组按由小到大顺序排序。解:#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数 int i,j,min,temp,a5; /定义整型变量x和y SCON=0x52; /串口初始化

16、TMOD=0x20; TH1=0XF3; TR1=1; printf (input :n); /输出提示信息 for(i=0;i5;i+) printf (a%d=,i); scanf(%d,&ai); for(i=0;i5-1;i+) /排序 min=i; for(j=i;jaj) min=j; temp=aj; aj=amin; amin=temp; for(i=0;i5;i+) /输出printf (%5d,ai );4-17 用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。解:#include /包含特殊功能寄存器库#include /包含I/O函数库void main(vo

17、id) /主函数 int a,b,c,t; /定义整型变量a,b,c,t int *p,*p1,*p2,*p3; /定义指针变量 SCON=0x52; /串口初始化 TMOD=0x20; TH1=0XF3; TR1=1; printf (input a,b,c:n); /输出提示信息 scanf(%d,%d,%d,&a,&b,&c); /输入a,b和c的值,无符号数据。 printf(n); /输出换行 p1=&a;p2=&b;p3=&c; if(ab) p=p1;p1=p2;p2=p; if(ac) p=p1;p1=p3;p3=p; if(bc) p=p2;p2=p3;p3=p; print

18、f(%d,%d,%d,*p3,*p2,*p1); while(1); /结束4-18 有3个学生,每个学生包括学号、姓名、成绩,要求找出成绩最高的学生的姓名和成绩。 解:#include /包含特殊功能寄存器库#include /包含I/O函数库Struct studentchar num6;char name8;int score4;stu3;void main(void) /主函数 int i,tem,max,maxi; printf(input 3 student information:n); /提示输入信息for(i=0;i3;i+) printf(name:); /提示输入姓名 s

19、canf(%s,stui.name); printf(student id:); /提示输入学号 scanf(%s,stui.num); printf(score:); /提示输入分数 scanf(%d,stui.score); max=0;maxi=0; for(i=0;imax) max=tem; maxi=i; printf( student %s,max score: %d.,stumaxi.name.num,max); /打印习题5部分习题解5-15 单片机用内部定时方法产生频率为10kHz方波,设单片机晶振频率fosc为12MHz,请编程实现。解:频率10kHz的方波,其周期为:T

20、=1/10k=100us, 定时时间为50 us。设选用定时器0,方式2,10kHz方波从P1.0口输出。C51参考程序:# include /包含特殊功能寄存器库sbit P1_0=P10;void main() TMOD=0x02; /使用定时器T0的模式2 TH0=256-50; /定时器T0的高8位赋初值 TL0=256-50; /定时器T0的低8位赋初值 EA=1; /开总中断 ET0=1; /定时器T0中断允许 TR0=1; /启动定时器T0 while(1);void time0_int(void) interrupt 1 /中断服务程序P1_0=!P1_0; /取反 5-16

21、使用定时器0以定时方法在P1.0输出周期为400 s,占空比为20%的矩形脉冲,设单片机晶振频率fosc为12MHz,编程实现。解:其周期为400s,占空比为20%的矩形脉冲,即定时时间分别为输出高电平80s,输出低电平320s(是输出高电平的4倍)。根据题意,选用定时器0,方式1,从P1.0口输出。C51参考程序:# include /包含特殊功能寄存器库sbit P1_0=P10;sbit f;sbit i;void main() TMOD=0x02; /使用定时器T0的模式1 TH0=256-80; /定时器T0的高8位赋初值 TL0=256-80; /定时器T0的低8位赋初值 EA=1

22、; /开总中断 ET0=1; /定时器T0中断允许 TR0=1; /启动定时器T0 f=1; while(1);void time0_int(void) interrupt 1 /中断服务程序if(f=1)(P1_0=0;F=0; )else(i+;if(i=4)(P1_0=1; f-1;)5-23 参照图5-2电路图,编程实现灯亮移位程序,要求8只发光二极管每次点亮一个,点亮时间为250ms,顺序是从下到上一个一个地循环点亮。设fosc=6MHz。解:fosc=6MHz,每个机器周期=2us。C51参考程序:# include unsigned char code table=0xfe,0x

23、fd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char i,j;void main(void) TMOD=0x01;TH0 = (65536-25000)/256; TL0 = (65536-25000)%256; EA=1;ET0=1;i=0;j=0;TR0=1;while(1); void time0_int(void) interrupt 1 TH0 = (65536-25000)/256;TL0 = (65536-25000)%256;j+;if (j= =5) j=0; if(i!=7) P1=tablei; i+; else P1=tabl

24、ei; i=0; 5-24 利用单片机的串行口扩展并行I/O接口,控制16个发光二极管依次发光,请画出电路图且编程实现。解:电路图如下所示:C51参考程序:# include /包含特殊功能寄存器库#include /包含函数_nop_()定义的头文件 sbit P1_7=P17;unsigned char code table=0x01,0x00,0x02, 0x00,0x04, 0x00,0x08, 0x00, 0x00,0x10, 0x00,0x20, 0x00,0x40, 0x00,0x80;void main() unsigned char j,i; SCON=0x00; j=0;

25、for (; ;) P1_7=0; _nop_(); /延时一个机器周期 _nop_(); /延时一个机器周期,保证清0完成 P1_7=1; SBUF= tablej; j+; while (!TI) ; TI=0;SBUF= tablej;j+; while (!TI) ; TI=0; for (i=0;i=3000;i+) ; /延时 if (j= =16) j=0; 习题7部分习题解7-5 修改本章例7-8的程序,用数组表的方式编程实现在图7-18所示电路上动态显示“1234”。解:C51参考程序:#include #define uchar unsigned char#define u

26、int unsigned intuchar code4=0xfe,0xfd,0xfb,0xf7; /位选码表uchar tel4=0x06,0x5b,0x4f,0x66; /共阴极1,2,3,4字段吗void delay(void) /延时函数,延时一段时间 uchar i,j; for(i=0;i250;i+) for(j=0;j250;j+); void main(void) uchar k,d; while(1) /无限循环 for(k=0; k4; k+) P2=codek; /送出位选码 P0=telk; delay(); /延时 7-6 参照图7-18动态显示接口电路,试编写一段程序,在6个数码管上从右到左依次显示一个“3”字,直至出现6个“3”字为止。解:设数码管增至6个,为共阴极。C51参考程序:#include #define uchar unsigned char#define uint unsigned int uchar code6=0xfe,0xf

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

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