单片机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 不能有参数传递

  1. 中断请求源5个:INT0、INT1、TF0、TF1、T1/R1(串口中断请求)
  2. 中断请求标志分别由 TCON、SCON相应位锁存
  3. TCON标志位功能:IE1、IE0、TF0、TF1、IT(IT0 电平触发,IT1 跳沿触发)
  4. SCON标志位(98H):T1、S1(串口发/收)
  5. IE——> 两级控制 EA(1 开中断;0 被屏蔽)中断请求允许控制位
  6. 外部中断0,T0溢出,外部中断1,T1溢出,串口

高 ————————> 低

  1. 中断允许条件
    1. IE中EA=1
    2. 中断源发出中断请求,对应中断请求标志位为1,eg. IE1-1
    3. 中断被允许,对应中断允许位为1
    4. 无同级/高级中断正在被服务
  2. 中断触发,跳沿触发(IT=1) 电平触发(IT=0)
  3. 撤销:定时器/计数器:自动 ,跳沿:自动, 电平:标志位清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转换?
答:在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换为模拟电信号,然后将模拟电信号转换成数字量后才能在单片机中进行处理。

  1. # include <reg51.h>
  2. # define uchar unsigned char
  3. # define uint unsigned int
  4. sbit s1 = p1^0;
  5. sbit s2 = p1^1;
  6. unchar keynum;
  7. uchar i = 100;
  8. void delay(uint k) //P109
  9. {
  10. uchar i;
  11. while(k)
  12. {
  13. for(j=0;j<120;j++);
  14. }
  15. }
  16. void delay10ms() //P144
  17. {
  18. uchar k,j;
  19. for(k=0;k<100;K++)
  20. for(j=0;j<100;j++);
  21. }
  22. void keyscan() //P142
  23. {
  24. P1 = 0xff;
  25. if((P1&0x0f)!=0x0f)
  26. delay10ms();
  27. if(s1==0)
  28. keynum = 1;
  29. if(s2==0)
  30. keynum = 2;
  31. }
  32. void func1() //P143
  33. {
  34. while(1)
  35. {
  36. P0 = 0xf0;
  37. delay(500);
  38. P0 = 0x0f;
  39. delay(500);
  40. }
  41. }
  42. void func2() //P193(还是113?
  43. {
  44. TMOD = 0x01;
  45. EA = 1;
  46. ET0 = 1;
  47. TH0 = 0xEC;
  48. TL0 = 0x78;
  49. TR0 = 1;
  50. P0 = 0x00;
  51. while(1)
  52. {}
  53. }
  54. void timer0() interrupt 1 //P193(还是113?
  55. {
  56. TH0 = oxEC;
  57. TL0 = 0x78;
  58. i--;
  59. if(i<=0)
  60. {
  61. P0 =~ P0;
  62. i = 100;
  63. }
  64. }
  65. void main()
  66. {
  67. keynum = 0;
  68. switch(keynum)
  69. {
  70. case1:func1();break;
  71. case2:func2();break;
  72. }
  73. }