单片机技术及C 程序设计 第 版 答案 唐颖 阮越Word格式文档下载.docx
- 文档编号:8659158
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:36
- 大小:29.09KB
单片机技术及C 程序设计 第 版 答案 唐颖 阮越Word格式文档下载.docx
《单片机技术及C 程序设计 第 版 答案 唐颖 阮越Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机技术及C 程序设计 第 版 答案 唐颖 阮越Word格式文档下载.docx(36页珍藏版)》请在冰点文库上搜索。
5.设(PSW)=88,则Cy=( 1 ),P=( 0 )。
选择的是第
(1)组通用寄存器,该组寄存器在片内RAM中的地址为(08H~0FH)。
6.单片机的特殊功能寄存器只能采用(直接)寻址方式。
7.如果8051单片机采用6MHz的晶振,那么该系统一个机器周期为( 2 )微秒(μs),一个状态周期(或称时钟周期)为(2/6)微秒(μs)。
8.8051单片机采用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)。
A.0.5?
sB.1?
sC.2?
sD.4?
s
3.堆栈遵循的原则是(B )。
A.先进先出,后进先出B.先进后出,后进先出
C.先进先出,后进后出D.先进后出,后进后出
4.8051有( B )个可编程的16位定时/计数器。
A.1B.2C.3D.4
5.MCS-5l单片机中不是准双向I/O接口的是( A )。
A.P0B.P1C.P2D.P3
6.在MCS-51系统中扩展一片2732(EPROM存储芯片,容量4K×
8)需要(C )根地址线。
A.10B.11C.12D.13
7.8051单片机有( C )个中断源。
A.3B.4C.5D.6
8.片内RAM的20H~2FH为位寻址区,所包含的位地址是(B )。
A.00H~20HB.00H~7FHC.20H~2FHD.00H~FFH
10.8051单片机复位后的P0~P3的值为(D)。
A.00HB.0FHC.F0HD.FFH
2-3简答题(略)
1.简述在MCS-51系列单片机中哪些地址单元具有位地址?
2.MCS-51系列单片机的P0~P3口有何使用特点?
各自的第二功能是哪些?
3.决定程序执行顺序的寄存器是哪个?
它是多少位的寄存器?
是不是特殊功能寄存器?
4.MCS-51系列单片机的PSW寄存器各位标志的意义是什么?
若PSW=91H,请问其包含的信息是什么?
5.MCS-51系列单片机由哪几个功能部件组成?
6.MCS-51系列单片机的存储器结构有何特点?
存储器的空间如何划分?
各地址空间的寻址范围是多少?
7.MCS-51系列单片机的控制总线主要信号有哪些?
各信号的作用如何?
8.MCS-51系列单片机有哪几种低功耗工作模式?
简述这几种低功耗工作模式特点及退出该低功耗模式的方法。
9.MCS-51系列单片机在存储器组织上分为四个物理上相互独立的空间,单片机是如何实现对这四个空间进行访问的?
习题4部分习题解
4-1C语言有哪些特点?
4-2有哪些数据类型是MCS-51单片机直接支持的?
4-3C51特有的数据结构类型有哪些?
4-4C51中存储类型有几种,它们分别表示的存储器区域是什么?
4-5C51中,bit位与sbit位有什么区别?
4-6在C51中,通过绝对地址来访问存储器的有几种?
4-7在C51中,中断函数与一般函数有什么不同?
4-8按给定存储器类型和数据类型,写出下列变量的说明形式。
(1)在data区定义字符变量va11。
解:
chardataval1;
(2)在idata区定义整型变量va12。
intidataval2;
(3)在xdata区定义无符号字符数组va13[4]。
externcharxdatava13[4];
(4)在xdata区定义一个指向类型的指针px。
uintxdata*px;
(5)定义可寻址位变量flag。
bitbdataflag;
(6)定义特殊功能寄存器变量p3。
sfrP3=0xB0;
(7)定义特殊功能寄存器变量SCON。
sfrSCON=0xB8;
(8)定义16位的特殊功能寄存器T0。
sfr16T0=0x8C8A;
4-9写出下列关系表达式或逻辑表达式的结果,设a=3,b=4,c=5。
(1)a+b>
c&
&
b==c
a+b>
b==c不成立,结果为假(0)
(2)a‖b+c&
b-c
a‖b+c&
b-c表达式为非零,逻辑结果为1
(3)!
(a>
b)&
!
c‖1
!
c‖1表达式为非零,逻辑结果为1
(4)!
(a+b)+c?
1&
b+c/2
b+c/2表达式为非零,逻辑结果为1
4-10在C51语言中,设变量a,b都为unsignedchar类型,a=78(十进制),b=209(十进制),用十六进制表示以下表达式的计算结果:
a&
b=ox40;
a^b=0xdf;
b>
>
2=0x34;
~a=0xb1;
b)?
a:
b=0xd1。
4-11C51程序是基于MCS-51系列单片机的C程序,在C51程序中,int型数据所能表示的数值范围是多少?
。
-32768~+32767
4-13用分支结构编程实现,当输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。
…
switch(grade)
case'
1'
:
printf("
A\n"
);
break;
2'
B\n"
3'
C\n"
4'
D\n"
5'
END\n"
default:
error"
\n)
}
4-14输入三个无符号字符数据,要求按由大到小的顺序输出。
#include<
reg52.h>
//包含特殊功能寄存器库
stdio.h>
//包含I/O函数库
voidmain(void)//主函数
{
inta,b,c,t;
//定义整型变量a,b,c,t
SCON=0x52;
//串口初始化
TMOD=0x20;
TH1=0XF3;
TR1=1;
printf("
inputa,b,c:
\n"
//输出提示信息
scanf("
%d,%d,%d"
&
a,&
b,&
c);
//输入a,b和c的值,无符号数据。
printf("
//输出换行
if(a>
b)
{t=a;
a=b;
b=t;
c)
a=c;
c=t;
if(b>
{t=b;
b=c;
}
c,b,a);
while
(1);
//结束
4-15用三种循环结构编写程序实现输出1到10的平方之和。
1、通过while语句实现计算并输出1到10的平方之和。
//包含特殊功能寄存器库
//包含I/O函数库
voidmain(void)//主函数
inti,s=0;
//定义整型变量i和s
i=1;
//串口初始化
TH1=0Xf3;
while(i<=10)//累加1~10的平方之和在s中
{
s=s+i*i;
i++;
}
%d\n"
s);
while
(1);
2、通过do...while语句实现计算并输出1到10的平方之和。
voidmain(void)//主函数
//定义整型变量i和s
i=1;
SCON=0x52;
//串口初始化
TMOD=0x20;
TH1=0Xf3;
TR1=1;
do
//累加1~10的平方之和在s中
}while(i<=10);
3、用for语句实现计算,并输出1到10的平方之和。
{
//串口初始化
for(i=1;
i<=10;
i++)
s=s+i*i;
//累加1~10的平方之和在s中
d\n"
4-16对一个5个元素的无符号字符数组按由小到大顺序排序。
inti,j,min,temp,a[5];
//定义整型变量x和y
input:
for(i=0;
i<
5;
i++)
{printf("
a[%d]="
i);
%d"
a[i]);
5-1;
i++)//排序
{min=i;
for(j=i;
j<
j++)
if(a[min]>
a[j])
min=j;
temp=a[j];
a[j]=a[min];
a[min]=temp;
i++)//输出
printf("
%5d"
a[i]);
4-17用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。
int*p,*p1,*p2,*p3;
//定义指针变量
//输入a,b和c的值,无符号数据。
p1=&
a;
p2=&
b;
p3=&
c;
{p=p1;
p1=p2;
p2=p;
p1=p3;
p3=p;
{p=p2;
p2=p3;
*p3,*p2,*p1);
4-18有3个学生,每个学生包括学号、姓名、成绩,要求找出成绩最高的学生的姓名和成绩。
Structstudent
{charnum[6];
charname[8];
intscore[4];
}stu[3];
inti,tem,max,maxi;
input3studentinformation:
//提示输入信息
for(i=0;
3;
{
name:
"
//提示输入姓名
%s,stu[i].name);
studentid:
//提示输入学号
%s,stu[i].num);
score:
//提示输入分数
%d,stu[i].score);
max=0;
maxi=0;
{tem=0;
tem=stu[i].score;
if(tem>
max)
{max=tem;
maxi=i;
student%s,maxscore:
%d."
stu[maxi].name.num,max);
//打印
习题5部分习题解
5-15单片机用内部定时方法产生频率为10kHz方波,设单片机晶振频率fosc为12MHz,请编程实现。
频率10kHz的方波,其周期为:
T=1/10k=100us,定时时间为50us。
设选用定时器0,方式2,10kHz方波从P1.0口输出。
C51参考程序:
#include<
reg51.h>
//包含特殊功能寄存器库
sbitP1_0=P1^0;
voidmain()
TMOD=0x02;
//使用定时器T0的模式2
TH0=256-50;
//定时器T0的高8位赋初值
TL0=256-50;
//定时器T0的低8位赋初值
EA=1;
//开总中断
ET0=1;
//定时器T0中断允许
TR0=1;
//启动定时器T0
voidtime0_int(void)interrupt1//中断服务程序
P1_0=!
P1_0;
//取反
5-16使用定时器0以定时方法在P1.0输出周期为400?
s,占空比为20%的矩形脉冲,设单片机晶振频率fosc为12MHz,编程实现。
其周期为400μs,占空比为20%的矩形脉冲,即定时时间分别为输出高电平80μs,输出低电平320μs(是输出高电平的4倍)。
根据题意,选用定时器0,方式1,从P1.0口输出。
sbitf;
sbiti;
//使用定时器T0的模式1
TH0=256-80;
TL0=256-80;
f=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。
#include<
unsignedcharcodetable[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsignedchari,j;
voidmain(void)
{TMOD=0x01;
TH0=(65536-25000)/256;
TL0=(65536-25000)%256;
EA=1;
ET0=1;
i=0;
j=0;
TR0=1;
voidtime0_int(void)interrupt1
j++;
if(j==5)
{j=0;
if(i!
=7)
P1=table[i];
}
else
{P1=table[i];
i=0;
5-24利用单片机的串行口扩展并行I/O接口,控制16个发光二极管依次发光,请画出电路图且编程实现。
电路图如下所示:
//包含特殊功能寄存器库
#include<
intrins.h>
//包含函数_nop_()定义的头文件
sbitP1_7=P1^7;
unsignedcharcodetable[]={0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,
0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80};
unsignedcharj,i;
SCON=0x00;
j=0;
for(;
;
P1_7=0;
_nop_();
//延时一个机器周期
_nop_();
//延时一个机器周期,保证清0完成
P1_7=1;
SBUF=table[j];
j++;
while(!
TI){;
TI=0;
SBUF=table[j];
for(i=0;
=3000;
i++){;
}//延时
if(j==16)j=0;
习题7部分习题解
7-5修改本章例7-8的程序,用数组表的方式编程实现在图7-18所示电路上动态显示“1234”。
#defineucharunsignedchar
#defineuintunsignedint
ucharcode[4]={0xfe,0xfd,0xfb,0xf7};
//位选码表
uchartel[4]={0x06,0x5b,0x4f,0x66};
//共阴极1,2,3,4字段吗
voiddelay(void)//延时函数,延时一段时间
uchari,j;
250;
for(j=0;
j++);
voidmain(void)
{uchark,d;
while
(1)//无限循环
for(k=0;
k<
4;
k++)
P2=code[k];
//送出位选码
P0=tel[k];
delay();
//延时
7-6参照图7-18动态显示接口电路,试编写一段程序,在6个数码管上从右到左依次显示一个“3”字,直至出现6个“3”字为止。
设数码管增至6个,为共阴极。
#defineuintunsignedint
ucharcode[6]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0};
//位选码表
voiddelay(uinti)//延时函数
{uintj;
for(j=0;
i;
j++){}
{uchark,d;
P0=0x4f;
//3的字段码
for(k=0;
6;
P2=code[k];
//送出位选码
del
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机技术及C 程序设计 答案 唐颖 阮越 单片机 技术