单片机2018-2019(跟上一年差不多,几乎一摸一样)
一、选择题
(2)1、PSW中,Cy是?
进位标志位
(2)2、复位后,状态为0的是?
PC(PC=000H,P0~P3=FFH,SP=07H,PSW=80H)
(2)3、以下可位寻址的是?
sbit(8位),?bit(1位),str(8位,区域0~255),str16(16位,值域0~2的16次)
(2)4、想访问片片外64KB RAM,可使用哪些数据存储类型? xdata
(2)5、a=0x65,b=0x79,则a与(^)b?
(2)6、假设x=0x96,则“x〈〈 2”之后为?(0x96=1001 0110,位移后101 1000)
(2)7、宏定义的关键词用 #define 表示(#define Max 128) #include〈reg.h〉头文件定义
(2)8、定时器/计数器在方式0时是: 方式1是: 16位。方式2是: 方式3:
(2)9、单片机的临时处理数据放在RAM中的 PRAM区(30H-7FH)
(2)10、中断程序中不正确的是()B
A 低级中断可被高级中断暂停
B 高级中断可被低级中断暂停
C 中断有返回值
D 不能有参数传递
- 中断请求源5个:INT0、INT1、TF0、TF1、T1/R1(串口中断请求)
- 中断请求标志分别由 TCON、SCON相应位锁存
- TCON标志位功能:IE1、IE0、TF0、TF1、IT(IT0 电平触发,IT1 跳沿触发)
- SCON标志位(98H):T1、S1(串口发/收)
- IE——> 两级控制 EA(1 开中断;0 被屏蔽)中断请求允许控制位
- 外部中断0,T0溢出,外部中断1,T1溢出,串口
高 ————————> 低
- 中断允许条件
- IE中EA=1
- 中断源发出中断请求,对应中断请求标志位为1,eg. IE1-1
- 中断被允许,对应中断允许位为1
- 无同级/高级中断正在被服务
- 中断触发,跳沿触发(IT=1) 电平触发(IT=0)
- 撤销:定时器/计数器:自动 ,跳沿:自动, 电平:标志位清0(手动0->1)
填空题
1、AT89S51是 单片机,2个可编程。 定/计、4个并行I/O、1个全双工异步串行口,RAM:片内128B,片外64KB;ROM:片内4KB,片外60KB,共64KB;2个存储器(RAM、ROM)、5个中断源(2个中断优先级)、1个看门狗、特殊功能寄存器。
2、CPU由运算器、控制器组成
3、程序存储器大小:4KB,最多可扩展大小为64KB
4、堆栈主要是为了 和 涉及2种操作: &
5、振荡频率f则时钟周期为1/f1个机器周期=12个时钟周期
6、数据存储模式有
7、中断请求标志位分别由SFR中 和 相应位锁存
8、AT89S51集成了 ,有 种工作方式,其中串行口有2个控制器 和
方式0:f12(SM0=0,SM1=0)方式1:2/32×定时器1的溢出率
方式2:2/64×f 方式3:2/32×定时器1的溢出率=。。。
9、语句“float——array1[。。]”这 一个数组,那么其元素一共有 个
10、函数参数有2种,分别是 和 ,函数的返回值通过return语句获得
11、DAC数模转换的主要技术指标有?
三、简答题
1、什么是单片机?
答:一片特体硅片?集成:中央处理单元CPU,存储器,并行I/O口,串行I/O口,定时器/计数器,中断系统,系统时钟电路及系统总线的微型计算机。
2、简述C51单片机的存储器结构
答:结构特点之一是将程序存储器与数据存储器分开,并有各自的访问空间,存储器空间可分为4类:
1、程序存储器
2、数据存储器
3、特殊功能寄存器SFR(26个)
4、?地址空间(2H个可位寻址)
3、为什么要用到A/D和D/A转换?
答:在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换为模拟电信号,然后将模拟电信号转换成数字量后才能在单片机中进行处理。
# include <reg51.h># define uchar unsigned char# define uint unsigned intsbit s1 = p1^0;sbit s2 = p1^1;unchar keynum;uchar i = 100;void delay(uint k) //P109{uchar i;while(k){for(j=0;j<120;j++);}}void delay10ms() //P144{uchar k,j;for(k=0;k<100;K++)for(j=0;j<100;j++);}void keyscan() //P142{P1 = 0xff;if((P1&0x0f)!=0x0f)delay10ms();if(s1==0)keynum = 1;if(s2==0)keynum = 2;}void func1() //P143{while(1){P0 = 0xf0;delay(500);P0 = 0x0f;delay(500);}}void func2() //P193(还是113?{TMOD = 0x01;EA = 1;ET0 = 1;TH0 = 0xEC;TL0 = 0x78;TR0 = 1;P0 = 0x00;while(1){}}void timer0() interrupt 1 //P193(还是113?{TH0 = oxEC;TL0 = 0x78;i--;if(i<=0){P0 =~ P0;i = 100;}}void main(){keynum = 0;switch(keynum){case1:func1();break;case2:func2();break;}}
