内容发布更新时间 : 2024/12/31 6:48:34星期一 下面是文章的全部内容请认真阅读。
考题类型:选择、填空、判断、简答、综合(编程类) 闭卷考试 复习题:
1、无返回值的函数使用什么来声明。 void
2、当定时器T0计数计满时,由硬件电路使什么置位;最后再由硬件电路使该位自动复位。
3、当定时器T0工作在方式几时,要占用定时器T1的哪两个控制位。 方式3,占用定时器1的状态控制位和中断请求源 4、指针变量的专用运算符是什么。
&
5、89S51 单片机中断源和入口地址分别是什么?89S51单片机的中断源有几种优先级。 中断源 中断入口地址 外部中断0 0003H 定时器/计数器0 000BH 外部中断1 0013H 定时器/计数器1 001BH 串行口中断 0023H 89S51单片机的中断源有2个中断优先级
6、P0口在作I/O口使用时,与其它三位并口的区别在哪? P0口是一个双向口,其他的都是准双向口。
7、要将定时器T0设置为计数器模式对外部脉冲计数,工作在方式2,且不受门
控位控制,则TMOD设置为什么?定时器/计数器的工作方式3是什么? 0EH 0FH
8、哪个指向特定的存储区的指针类型,其在声明时指定了存储类型。 9、AT89S51单片机访问外部存储器时,利用什么信号锁存来自P0口的低8位地址信号。
ALE信号
10、89S51单片机系统中, 外部扩展的芯片地址总线低八位和地址总线高八位分别由哪个口完成?
P0口作为低8位地址总线,P2口作为高8位地址总线。
11、单片机如果要优先访问外部ROM,则其EA引脚应该置为什么电平。 低电平
12、C51中的中断函数和一般函数有什么不同? 中断函数既没有参数,也没有返回值。
13、AT89S51单片机扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,扩展空间都为64KB,为什么两个存储空间不会发生冲突? 因为在访问的时候,必须进行两种选择:一是必须选中该存储芯片,这称为“片选”,只有被“选中”的存储芯片才能被AT89S51单片机访问,未被选中的芯片不能被访问;二是在“片选”的基础上在根据单片机发出的地址码来对“选中”芯片的某一单元进行访问,这称为“单元选择”。 14、简述多位LED数码管的动态显示法的基本原理?
因为LED数码管阳极同接高电平,所以要使LED点亮,只需通过单片机的串行口送低电平即可,然后用移位指令对串行口进行修改,便能实现多位LED数码管的动态显示。
15、试编写一段中断系统初始化的程序,使之允许INT0、INT1,T0和串行口中断,且使T0中断为高优先级中断。 #include
EA=1; //总中断打开
EX0=1; //允许外部中断0中断(INT0) EX1=1; //允许外部中断1中断(INT1) ET0=1; //允许定时器T0中断 ES=1; //允许串行口中断 PT0=1; //T0为高优先级中断 }
16、如何设置单片机的外部中断INT1的中断触发方式?需要用到哪个标志位? 通过对TCON寄存器中IT1为高低电平的设置,就可以改变INT1的中断触发方式。
17、开机时AT89S51使用哪个工作寄存器组?如何确定和改变当前工作寄存器组?
开机复位后,CPU使用第0组工作寄存组,地址是00H~07H,可通过对PSW状态字寄存器中的RS1和RS0两位的设置来确定和改变CPU当前使用的工作寄存组,
18、简述单片机定时器中断请求撤销和串行口中断请求撤销各自的特点?
定时器的中断请求被响应后,硬件会自动把中断请求标志位清0,因此定时器中断请求是自动撤销的。
串行口中断请求的撤销只能使用软件的方法,在中断服务程序中进行,即使用软件在中断服务程序中把串行口中断标志位T1、R1清0.
19、阐述晶振周期与机器周期之间的关系,并计算当晶振频率为12MHZ时,对应的机器周期是多少?
晶振周期=机器周期/12, 1us
20、在AT89S51系统中,已知振荡频率是12MHz,用定时器/计数器T1工作于方式1,实现从P2.7引脚产生周期是2s的方波,试编程实现。
#include
unsigned char temp=0; sbit P2_7=P2^7; void main(void) {
TMOD=0x10; P2_7=0;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; ET0=1; EA=1; TR0=1; While(1); }
void T1_int(void) interrupt 3 {
TH0=(65536-50000)/256; TL0=(65536-50000)%6; Temp++;
if(temp>=40) {
Temp=0;
P2_7=!P2_7; } }
21、统计内部RAM60H~69H单元中出现“00H”内容的次数,结果存放到A中。画流程图并编程实现。
#include
idata unsigned char databuf [10] _at_0x60; void main(void) {
unsigned char i,j; for(i=0;i<10;i++) {