习题11.1单项选择题(1)MCS-51系列单片机的CPU主要由组成。
A. 运算符、控制器B.加法器、寄存器C.运算器、加法器D.运算器、编码器(2)单片机中的程序计数器PC用来。
A.存放指令B.存放正在执行的指令地址C.存放下一条指令的地址D.存放上一条指令地址(3)单片机8031的ˉEA引脚。
A.必须接地B.必须接+5V电源C.可悬空D.以上三种视需要而定(4)外部扩展存储器时,分时复用做数据线和低8位地址线的是。
A.P0口B.P1口C.P2口D.P3口(5)PSW中的RS1和RS0用来。
A.选择工具寄存器B.指示复位C.选择定时器D.选择工作方式(6)单片机上电复位后,PC的内容为。
A.0000HB.003HC.000BHD.0800H(7)Intel 8051单片机的CPU是。
A.16B. 4C. 8D.准16位(8)程序是以形式存放在程序存储器中的。
A. C语言源程序B.汇编程序C.二进制编码D.BCD码(9)8050单片机的程序计数器PC为16位计数器,其寻址范围是。
A. 8 KBB.16KBC.32KBD.64KB(10)单片机的ALE引脚是以晶振荡频率的固定频率输出正脉冲,因此它可作为外部时钟或外部定时脉冲使用。
A.1/2B.1/4C.1/6D.1/121.2填空题(1)单片机系统是由和组成的。
(2)除了单片机和电源外,单片机最小系统包括电路和电路。
(3)在进行单片机应用系统设计时,除了电源和地线引脚外,、、、引脚信号必须连接相应电路。
(4)MCS-51系列单片机的存储器主要有4个物理存储空间,即、、、。
(5)MCS-51系列单片机的XTALL和XYAL2引脚是引脚。
(6)MCS-51系列单片机的应用程序一般存在中。
(7)片内RAM低128单元,按其用途划分为、和3个区域。
(8)当振荡脉冲频率为12 MHz时,一个机器周期为;当振荡脉冲频率为6 MHz时,一个机器周期为。
(9)MCS-51系列单片机的复位电路有两种,即和。
(10)输入单片机的复位信号需延续个机器周期以上的电平时即为有效,用于完成单片机的复位初始化操作。
1.3回答题(1)什么是单片机?它由哪几部分组成?什么是单片机应用系统?(2)P3口第二功能是什么?(3)画出MCS-51系列单片机时钟电路,并指出石英晶体和电容的取值范围。
(4)什么是机器周期?机器周期和晶振频率有何关系?当晶振频率为6 MHz时,机器周期是多少?(5)MCS-51系列单片机常用的复位方法有几种?画电路图并说明其工作原理。
(6)MCS-51系列单片机内RAW的组成是如何划分的?各有什么功能?(7)MCS-51系列单片机有多少个特殊功能寄存器?它们分布在什么地址范围?(8)简述程序状态寄存器PSW各位的含义,单片机如何确定和改变当前的工作寄存器组。
(9)C51编译器支持的寄存器有哪些?(10)单片机外部扩展RAM和ROM时,P0口和P2口各起什么作用?(11)在单片机的C语言程序设计中,如何使用SFR和可寻址位?习题22.1单项选择题(1)仿真器的作用是。
A. 能帮助调试用户设计的软件B.能帮助调试用户设计的硬件C.能帮助调试用户设计的硬件和软件D.只能做各种模拟实验(2)使用单片机开发系统调试程序时,对源程序进行汇编的目的是。
A.将源程序转换成目标程序B.将目标程序转换成源程序C.将低级语言转换成高级语言D.连续执行(3)在运用仿真系统调试程序时,观察函数内部指令的运行结果,通常采用调试方法。
A.单步调试(F8)B.跟踪调试(F7)C.快速运行到光标处调试(F4) C.断点调试(F2)(4)使用单片机开发系统调试C语言程序时,首先应新建文件,该文件的扩展名是。
A. .cB. .hexC. .binD. .asm(5)单片机能够直接运行的程序是。
A.汇编源程序B.C语言源程序C.高级语言程序D.机器语言程序2.1问答题(1)什么是单片机开发系统?单片机开发系统有哪些设别组成?如何连接?(2)一般来说单片机开发系统应具备哪些基本功能?(3)开发单片机应用系统的一般过程是什么?习题33.1单项选择题(1)MCA-51系列单片机的4个并行I/O端口作为通用I/O端口使用,在输出数据时,必须外接上拉电阻的是( )A. P0口B.P1口C.P2口D.P3口(2)当MCS-51系列单片机应用系统需要扩展外部存储器或其它接口芯片时,()可作为低8位地址总线使用。
A.P0 口B.P1口C.P2口D.P0口和P2口(3)当MCS-51系列单片机应用系统需要扩展外部存储器或其他接口芯片时,()可作为高8位地址总线使用。
A.P0口B.P1口C.P2口D.P0口和P2口(4)下面叙述不正确的是()。
A.一个C源程序可以由一个或多个函数组成B.一个C源程序必须包含一个函数main()C.在C程序中,注释说明只能位于一条语句的后面D.C程序的基本组成单位是函数(5)C程序总是从()开始执行的。
A.主函数B.主程序C.子程序D.主过程(6)最基本的C语言语句是()。
A.赋值语句B.表达式语句C.循环语句D.复合语句(7)在C51程序中常常把()作为循环体,用于消耗CPU时间,产生延时效果。
A.赋值语句B.表达式语句C.循环语句D.空语句习题4编程:4.1输入3个无符号的字符数据,要求按由大到小的顺序排列。
4.2用指针实现,输入3个无符号的字符数据,要求按由大到小的顺序排列。
4.3用3种循环结构编写程序,实现输出1到100之和。
4.4用3种循环结构编写程序,实现输出1到50平方之和。
4.5编程实现将8051单片机片内部RAM从20H单元开始的10个字节内容清零。
4.6编写计算下列算式的程序。
23H+35H+ABHABCDH-3456H4.7输入3个无符号的字符数据,要求按由大到小的顺序排列。
4.8用指针实现,输入3个无符号的字符数据,要求按由大到小的顺序排列。
4.9用3种循环结构编写程序,实现输出1到100之和。
4.10用3种循环结构编写程序,实现输出1到50平方之和。
4.11利用89C51的P1口控制8个发光二级管LED。
相邻的4个LED为一组,使2组每隔0.5s交替发亮一次,周而复始。
画出电路,编写程序。
4.12编制一个循环闪烁灯的程序。
有8个发光二级管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。
4.13使用MCS—51单片机的定时器/计数器1,在P1.4上输出高电平为10mS低电平为20mS的连续波形。
分别用查询中断请求标志的方法和中断方法编写程序。
设晶振频为12MHz。
INT为低电平时,将T0引脚上的脉冲波形经104.14使用MCS—51单片机的定时器/计数器0,在0频后从P1.2送出。
INT从高电平变成低电平时,在P1.7上输出一个宽度为1mS的正脉冲。
分别4.15编写一段程序,在1用查询法和中断法编写程序。
设晶振频为12MHz。
4.16使用型号为STC89C52RC单片机,晶振频率12MHZ。
用定时器T0查询方式,实现从P1.0输出周期为0.02S的方波输出。
4.17使用型号为STC89C52RC单片机,晶振频率12MHZ。
用定时器T1查询方式,实现从P1.0输出周期为低电平0.2S,高电平0.3S的矩形波输出。
4.18使用型号为STC89C52RC单片机,晶振频率12MHZ。
用定时器T0中断方式,实现从P1.0输出周期为0.02S的方波输出。
4.19使用型号为STC89C52RC单片机,晶振频率12MHZ。
用定时器T1中断方式,实现从P1.0输出周期为低电平0.2S,高电平0.3S的矩形波输出。
习题5程序分析:5.1 流水灯程序#include<reg52.h> //包含8952单片机头文件void delaym(unsigned int t) // 延时子程序,入口参数ms,延迟时间=t*1ms,t取值范围0~65535 {unsigned char j; //j取值范围0~255while(t--){for(j = 0; j < 250; j++); //j进行的内部循环,1次延迟8us}}void main(){unsigned int i;while(1){unsigned char a=0xfe;for(i=0;i<8;i++){P0=a;delaym(200);a<<=1; //循环左移1位}}}5.2 电子秒表工作程序void main(){TMOD=0x01; //定时器T0工作在方式1TH0=0xD8; // T0装入时间常数TL0=0xf0;EA=1; //允许中断ET0=1; //允许定时器T0中断TR0=1; //启动定时器T0while(1) //无条件循环{for(k=0;k<3;k++){P0=b[k]; //送出数码管段码P2=k; //送出数码管位选码delaym(3); //调用延时函数}}}time0_int(void) interrupt 1 //T0中断服务程序{TH0=0xD8;TL0=0xF0;i++;if(i==100) //到1秒{i=0;second1++;}if(second1==10) //到10秒{second2++;second1=0;}if(second2==10) //到100秒{second3++;second2=0;second1=0;}b[2]=a[second3]; //转换为段码显示b[1]=a[second2];b[0]=a[second1];}5.3 电子时钟程序void main(){TMOD=0x01; //定时器T0工作在方式1TH0=0xD8; // T0延时长度延时10mSTL0=0xf0;EA=1; //允许中断ET0=1; //允许定时器T0中断TR0=1;while(1){for(k=0;k<5;k++) //显示时钟的分秒{P0=b[k];P2=k;delaym(3);}}time0_int(void) interrupt 1 //T0中断服务程序{TH0=0xD8;TL0=0xF0;i++;if(i==100) //到1秒{i=0;second++;}if(second==60) //到1分钟{second=0;fen++;}w=fen/10;x=fen%10;y=second/10;z=second%10;b[4]=a[w]; //显示分十位段码b[3]=a[x]; //显示分个位段码b[2]=0xbf; //数码管显示“-”b[1]=a[y]; //显示秒十位段码b[0]=a[z]; //显示秒个位段码}5.4 矩阵式按键扫描,读取按键的行列编码。