您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页(C语言版)单片机复习题

(C语言版)单片机复习题

来源:筏尚旅游网
.

单片机复习题

一、名词解释

1、时序:按照时间顺序显示的对象〔或引脚、事件、信息〕序列关系。 2、指令:CPU用于指挥功能部件完成某一指定动作的指示和命令。 3、变量:在程序执行过程中,数值可以发生改变的量称为变量。

4、伪指令:伪指令又称汇编系统控制译码指令或指示性指令,仅仅用于指示汇编系统软件要完成的操作,故一般不产生机器代码〔定义字节或字的伪指令除外〕。

5、存储种类:变量在程序执行过程中的作用X围。变量的存储种类有4种:自动、外部、静态和寄存器。

6、数据类型:数据的不同格式。

7、中断:计算机在运行当前程序的过程中,若遇紧急或突发事件,可以暂停当前程序的运行,转向处理该突发事件,处理完成后再从当前程序的间断处接着运行。 8、串行通信:数据一位一位地按顺序进行传送。

9、波特率:串行通信的数据是按位进行传送的,每秒传送的二进制数码的位数称为波特率。 10、字节:计算机数据处理的基本单位。 11、分辨率:DAC能够转换的二进制的位数。

12、三态门:三态门是一种重要的总线接口电路。三态指其输出既可以是一般二值逻辑电路的正常的高电平〔逻辑1〕或低电平〔逻辑0〕,又可以保持特有的高阻抗状态〔Hi-Z〕。 13、OC门:又称集电极开路〔漏极开路〕与非门门

14、总线:为了减少连接线,简化组成结构,把具有共性的连线归并成一组公共连线,就形成了总线。 15、时钟周期:晶振或外加振荡源的振荡周期。 二、填空题

1、计算机中最常用的字符信息编码是〔ASCII码〕。 2、MCS-51系列单片机为〔8〕位单片机。

3、若不使用MCS-51片内存储器引脚(EA)必须接地。 4、8051内部有〔4K〕ROM和〔128〕个字节RAM。

5、堆栈的地址由〔SP〕内容确定,其操作规律是“〔先〕进〔后〕出〞。

6、在单片机扩展时,〔 P0 〕口和〔 P2 〕口为地址线,〔 P0 〕口又分时作为数据线。 7、在 MCS-51单片机中,如采用6MHZ晶振,一个机器周期为〔 2μm〕。

8、当80C51的RST引脚上保持〔 2 〕个机器周期以上的高电平时,80C51即发生复位。 9、当P1口做输入口输入数据时,必须先向该端口的锁存器写入〔1〕,否则输入数据可能出错。 10、若某存储芯片地址线为12根,那么它的存储容量为( 4KB )。

11、程序状态寄存器PSW的作用是用来保存程序运行过程中的各种状态信息。其中CY为〔进位〕

标志,当进行〔位〕操作时作为位累加器。OV为〔溢出〕标志,用于有符号数的加〔减〕运算。 12、消除键盘抖动常用两种方法,一是采用(硬件去抖电路),用基本RS触发器构成;二是采用(软件去抖程序),既测试有键输入时需延时〔5-20ms〕后再测试是否有键输入,此方法可判断是否有键抖动。 13、若MCS-51 单片机采用12MHz 的晶振频率,它的机器周期为〔 1μm 〕,ALE 引脚输出正脉冲

.

.

频率为〔 2MHZ 〕。

14、8051有两个16位可编程定时/计数器,T0和T1。它们的功能可由两个控制寄存器〔 TCON 〕 、〔 TMOD 〕的内容决定,且定时的时间或计数的次数与〔 TH 〕、〔TL〕两个寄存器的初值有关。 15、串行口的控制寄存器SCON中,REN的作用是( 允许串行接收位 )。

16、单片机内、外中断源按优先级别分为高级中断和低级中断,级别的高低是由〔 中断优先级 〕寄存器的置位状态决定的。同一级别中断源的优先顺序是由〔 自然优先级顺序 〕决定的。 17、LED数码显示按显示过程分为〔 静态 〕显示和〔 动态 〕显示2种。

18、单片机串行通信时,若要发送数据,就必须将要发送的数据送至〔并行〕单元,若要接收数据

也要到该单元取数。

19、计算机的系统总线有〔 数据 〕、〔 地址 〕和〔 控制 〕。

20、若某8位D/A转换器的输出满刻度电压为+5V,则D/A转换器的分辨率为〔 5/255=0.0196V 〕。 21、单片机串行通信时,其波特率分为固定和可变两种方式,在波特率可变的方式中,可采用 〔 定时器T1 〕的溢出率来设定和计算波特率。

22、P0、P1、P2、P3四个均是〔 8 〕位的〔 并行 〕口,其中P0的功能是〔 地址/数据分时复接口 〕。

23、片内RAM可进行位寻址的空间是〔20H----2FH 〕,其对应的位地址X围是〔 00H---FFH 〕。 24、8051单片机有〔 5 〕个中断源,〔 2 〕级中断优先级别。

25、8255A属于可编程的〔 并行 〕接口芯片,8255A的A通道有〔 3 〕种工作方式。

8255A的B有〔 2 〕种工作方式。

26、8051内部的特殊功能寄存器〔SFR〕共有〔 18, 8052系列有21 〕个。

27、8051有两个16位可编程定时/计数器,其中定时作用是指对单片机〔对内部晶振频率fosc/12 〕脉冲进行计数,而计数器作用是指对单片机〔 外部 〕脉冲进行计数。

28.由于执行每条指令都要占用CPU的时间,因此采用循环结构并多次重复执行某些指令可实现软件

延时。而硬件延时一般是采用单片机的〔 定时/计数器 〕再通过软件编程来实现。

29、中断源的是否允许中断是由〔 IE〕寄存器决定的,中断源的优先级别是由〔IP〕寄存器决定的。 30、当单片机CPU响应中断后,程序将自动转移到该中断源所对应的入口地址处,并从该地址开始继

续执行程序,通常在该地址处存放转移指令以便转移到中断服务程序。其中INT1 的入口地址为〔 0013H 〕,串行口的中断入口地址为〔 0023H 〕,T0 的 入口地址为〔 000BH 〕。 31、MCS-51单片机访问外部存储器时,利用〔 ALE 〕信号锁存来自〔 P0 〕口的低8位地址信号。

32、MCS-51单片机中有( 2 )个( 16 )位的定时/计数器,可以被设定的工作方式有〔 四 〕种。 33.当定时器T0计数计满时,由硬件电路使〔溢出标志TF0〕置位;最后再由硬件电路使〔该位TF0自动〕复位。

34.C51中的任何程序总是由三种基本结构组成:〔 顺序 〕、〔 分支 〕、〔 循环 〕。

35.MCS-51单片机扩展程序存储器所用的读信号为〔 /PSEN 〕,扩展数据存储器所用的控制信号为〔 /RD 〕和〔 /WR 〕。

.

.

36.当定时器To工作在方式3时,要占定时器T1的〔 TR1 〕和〔 TF1 〕两个控制位. 37.MCS-51串行接口有〔 4 〕种工作方式,这可在初始化程序中用软件设置特殊功能寄存器

〔 SCON 〕来实现。.

38.在串行通信中,根据数据传送方向分为〔 单工 〕、〔 半双工 〕和〔 全双工 〕三种方式. 39.中断请求信号有〔 电平触发 〕和〔 边沿触发 〕两种触发方式。 40.C51的串行口控制寄存器中有2个中断标志位,它们是〔 TI 〕和〔 RI 〕。 41.键盘的结构形式一般有两种:〔 式键盘 〕和 〔 矩阵式键盘 〕。

42. 单片机与普通计算机的不同之处在于其将( CPU)、 (存储器)和(输入/输出接口 )等部分集成在一块芯片之内。

43. 串行通信按信息的格式可分为( 异步通信 )和( 同步通信 )两种方式。 44. D/A转换器实现数字量转换成模拟量. 45. A/D转换器实现模拟量转换成数字量. 46、特殊功能寄存器DPTR是由 DPH:存放高位字节数据、DPL:存放低位字节数据 两个寄存器组成。 47、假设某CPU含有16根地址线,8根数据线,则该CPU最多寻址能力是8KB。

48、设X=5AH,Y=36H,则X与Y“或〞运算为___7EH____,X与Y的“异或〞运算为___6CH____。 49、若机器的字长为8位,X=17,Y=35,则X+Y=__110100_____,X-Y=_11101110_____ 50、 8051单片机的存储器的最大特点是 内部RAM 与 外部RAM 分开编址。 51、一个函数由两部分组成,即 说明部分和 语句部分 。 52、C语言中输入和输出操作是由库函数scanf 和 printf等函数来完成。 53、MCS-51有4组工作寄存器,它们的地址X围是 00H~1FH 。

、C51的基本单位是函数。一个C51源程序至少包含一个主函数,也可以是一个主函数和若干个其它函数。

55、变量的基本属性是变量名和变量值。 三、单项选择题

1、在单片机中,通常将一些中间计算结果放在〔 A 〕中 。

A、累加器 B、控制器 C、程序存储器 D、数据存储器 2、单片机8051的XTAL1和XTAL2引脚是〔 D 〕引脚 。

A、外接定时器 B、外接串行口 C、外接中断 D、外接晶振 3、8051单片机共有〔 B 〕中断源 。

A、4 B、5 C 、6 D、7

4、设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为( C ) A、2MHz B、1MHz C、500kHz D、250kHz 5.当MCS-51单片机接有外部存储器,P2口可作为 ( D )。

A、数据输入口 B、数据的输出口 C、准双向输入/输出口 D、输出高8位地址 6.单片机的定时器/计数器设定为工作方式1时,是( D )。

.

.

A、8位计数器结构 B、2个8位计数器结构 C、13位计数器结构 D、16位计数器结构 7.下列具有模数转换功能的芯片是〔 A 〕

A、ADC0809 B、DAC0832 C、BS18B20 D、DS1302 8、串行口每一次传送( B )字符。

A、1个字节 B、1bit C、1帧 D、1 串

9. MCS-51单片机中,当寄存器IP=0x81时,优先级最高的中断是〔 C 〕

A、 INT1 B、串行口中断 C、INT0 D、定时器/计数器T0中断 10.C51编译器中支持的存储模式不包含〔A 〕

A、xdata B、small C、compact D、large 11、计算机能直接识别的语言是〔 C 〕。

A.汇编语言 B.自然语言 C.机器语言 D.C语言 12、采用8031单片机必须扩展〔 B 〕。

A、数据存储器 B、程序存储器 C、I/O接口 D、显示接口 13. 定时/计数器有4种工作模式,它们由〔 B 〕寄存器中的M1 M0状态决定。

A.TCON B.TMOD C. PCON D.SCON 14.P0口作数据线和低8位地址线时〔 B 〕。

A.应外接上拉电阻 B.不能作I/O口 C.能作I/O口 D.应外接高电平 15.MCS—51单片机的CPU主要的组成部分为〔 A 〕。

A.运算器、控制器 B.加法器、寄存器 C.运算器、加法器 D.运算器、译码器 16.单片机能直接运行的程序叫〔 C 〕 。

A. 源程序 B. 汇编程序 C. 目标程序 D. 编译程序 17.、在8051片外扩展8K的EPROM 27 需要〔C 〕根地址线。

A、11 B、12 C、13、 D、14

18. MCS-51的中断允许触发器IE内容为83H,CPU将响应的中断请求是( D )

A、T0 B、INT1 C、串行接口 D、INT0

19.MCS-51系列单片机芯片是双列直插式封装的,有〔 C 〕个引脚。

A、24 B、30 C、40 D、50 20、在汇编语言中,十六进制数据正确的书写格式是( B )。

A、1010B B、A8H C、0A8H D、‘A8H’ 21、以下能正确定义一维数组的选项是〔 B〕。

A、int a[5]={0,1,2,3,4,5}; B、char a[ ]={0,1,2,3,4,5}; C、char a={'A','B','C'}; D、int a[5]=\"0123\"; 22、数据的存储结构是指〔D 〕。

A、存储在外存中的数据 B、数据所占的存储空间量

C、数据在计算机中的顺序存储方式 D、数据的逻辑结构在计算机中的表示

.

.

23、利用下列〔 D 〕关键字可以改变工作寄存器组 A、interrupt B、sfrC、while D、using

24、执行#define PA8255 XBYTE[Ox3FFC],PA8255=Ox7e 后存储单元Ox3FFC的值

是〔 A 〕

A、Ox7e B、8255H C、未定 D、7e 25、串行口每一次传送( D )字符。

A、1个 B、1串 C、1帧 D、1波特

26、MCS-51系列的单片机中片内RAM的字节大小可能的是〔 C〕 A、128M B、128K C、128 D、 27、C51语言提供的合法的数据类型关键字是〔 A 〕。

A、sfr B、BIT C、Char D、integer r 28、片内RAM的位寻址区,位于地址〔B〕处。

A、00H~1FH B、20H~2FH C、30H~7FH D、80H~FFH 29、间接寻址片内数据存储区〔256字节〕,所用的存储类型是〔 B 〕 A、data B、bdata C、idata D、xdata 30、MCS-51单片机上电复位的信号是〔 D 〕

A、下降沿 B、上升沿 C、低电平 D、高电平 31、可以将P1口的低4位全部置高电平的表达式是〔 B 〕 A、P1&=0x0fB、P1|=0x0f C、P1^=0x0f D、P1=~P1 32、ADC0809的启动转换的信号是〔 D 〕 A、ALE B、EOC C、CLOCK D、START 33、控制串行口工作方式的寄存器是。〔 C 〕

A、TCON B、PCON C、SCON D、TMOD 34、决定程序执行顺序的寄存器是。〔 A 〕

A、PC B、DPTR C、SP D、PSW

35、8051单片机的定时器T1作计数方式,模式2的方式控制字是〔 A 〕。

A、60H B、02H C、06H D、20H 四、判断题:

1、自动变量属于局部变量〔T 〕。

2、C语言允许在复合语句内定义自动变量。〔 T 〕

3、若一个函数的返回类型为void,则表示其没有返回值。〔 T 〕 4、所有定义在主函数之前的函数无需进行声明。〔 F 〕 5、定时器与计数器的工作原理均是对输入脉冲进行计数。〔 F 〕

6、bit和sbit都是用来定义位变量,所以两者之间没有区别,可以随便替换使用。〔7、C51中,特殊功能寄存器一定需要用大写。 ( T ) 8、使用片内存储器时,EA脚必须置低。〔 F 〕

.

〕 F .

9、单片机外部中断时只有用低电平触发。〔 T 〕 10、bit定义的变量一定位于内部RAM的位寻址区。( T ) 11、MCS-51单片机的位地址总共有256位。( T ) 12、串口中断请求标志必须由软件清除。( T ) 13、MCS-51的程序存储器只是用来存放程序的。〔 F 〕

15、MCS-51的特殊功能寄存器分布在60H~80H地址X围内。〔 F〕(80H~FFH) 16、ADC0809是8位逐次逼近式模/数转换接口芯片。〔 F 〕

17、中断函数的调用是在满足中断的情况下,自动完成函数调用的。〔 F 〕 18、单片机程序设计时C语言中XBYTE和汇编语言中的MOVX是等效的。〔 〕 19、单片机C语言程序设计中可以不分大小写。〔 F 〕

20、C51程序设计中在定义变量类型时一般要求定义无符号数据类型。〔 〕 21、使用循环语句时是必须用花括号{}将循环体括起来。〔 T 〕 22、用Cx51编程必须在每个函数说明后用using选择寄存器组。〔T 〕 23、串行通讯必须采用中断方式。〔 〕

24、单片机C语言程序设计中,用关键字bit定义单片机的端口。( ) 25、MCS-51串口采用的总线形式是UART。〔 〕 五、简答题

1、在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么? (1)确定T/C的工作方式——编程TMOD寄存器; (2)计算T/C中的计数初值,并装载到TH和TL;

(3)T/C在中断方式工作时,须开CPU中断和源中断——编程IE寄存器; (4)启动定时器/计数器——编程TCON中TR1或TR0位。

2、把下列十六进制数转换为二进制数. 〔1〕41H 01000001B 〔2〕1AFH 110101111B 〔3〕0F1H 11110001B 〔4〕20FAH

3、把下列二进制数转换为十六进制数. 〔1〕10110011B 0B3H 〔2〕10000000B 80H 〔3〕10111B 17H 〔4〕1100B 0CH

4.对于二进制数1000 1001B,若理解为无符号数,则该数对应十进制数为多少?若理解为有符号数, 则该数对应十进制为多少?若理解为BCD数,则该数对应十进制数为多少?

.

.

答:二进制数1000 1001B,若理解为无符号数,则该数对应十进制数为128+9=137,若理解为有符号 数,则应是补码,该数对应十进制数为-1110111=-119,若理解为BCD数,则该数对应十进制数为。

5.简述8051的定时/计数器T0和定时/计数器T1的工作方式分别有哪几种?

答:定时/计数器T0的工作方式有: 工作方各方式功能说明 式 方式0 13位定时/计数器 方式1 16位定时/计数器 方式2 8位自动重置定时/计数器 方式3 两个8位的定时/计数器 定时/计数器T1的工作方式 工作方方式说明 式 0 13位定时/计数器 1 16位定时/计数器 2 8位自动重置定时/计数器

6.晶振fosc=6MHz,T0工作在模式1,最大定时的时长是多少?

答:最大定时=〔M-T0初值〕×时钟周期×12 =〔216-0〕×1/6×12 = 131072μs

7.MCS-51系列单片机具有几个中断源?分别是什么?各自的中断标志位是什么 ?

答: MCS-51系列单片机共有5个中断源,分别为: 外部中断0 定时计数器中外部中断1 定时计数器中断0 断1 中断标志为分别为: 外部中断0 定时计数器中外部中断1 定时计数器中断0 断1 IE0 TF0 IE1 TF1

8.为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?

串行口中断 串行口中断 TI和RI 答: 因为P0口8位是地址线与数据线分时复用的, 即P0口8位先输出外部数据存储器的低8位地址到锁存器中锁存,然后再输出8位数据到数据总线上。

P2口8位输出的数据只作为地址总线的高8位,所以不需要连接锁存器。

9.各中断源对应的中断服务程序的入口地址是否能任意设定?

答:各中断源的入口地址已经在中断地址区中被定义了,不能任意设定。

.

.

10.单片机P3口各引脚的第二功能有哪些?

答:单片机P3口各引脚复用的第二功能有:串行通信〔P3.0,P3.1〕、外部中断请求输入〔P3.2,P3.3〕、外部计数脉冲〔P3.4,P3.5〕和外部存储器的读写控制信号(〔P3.6,P3.7〕。

11.串行口的接收和发送缓冲器SBUF共用的一个地址是多少?如何区分是“收〞还是“发〞?

答:串行口的接收和发送缓冲器SBUF共用一个地址是99H,通过对SBUF的读、写语句来区别是对接收缓冲器还是发送缓冲器进行操作。 例如:

 CPU在写SBUF时,操作的是发送缓冲器;

SBUF=send[i]; // 发送第i个数据

 读SBUF时,就是读接收缓冲器的内容。

buffer[i]=SBUF; //接收数据

12、写出下列汇编语言指令的寻址方式。 ⑴、SJMP LOOP 相对寻址 ⑵、MOV A , R1 寄存器寻址 ⑶、MOV A , R1 寄存器间接寻址 ⑷、MOVC A , A+DPTR 变址寻址 ⑸、MOV C , 90H 直接寻址

13、程序状态字寄存器PSW各位的定义是什么? 答:程序状态字寄存器PSW各位的定义如下:

PSW.7:进/借位标志CY,加法有进位时置1,减法有借位时置1; PSW.6:辅助进位标志AC,加法运算低四位向高上四位有进位时置1; PSW.5、PSW.1:用户标志位F0和用户标志位F1,保存用户的位数据;

PSW.4、PSW.3:工作寄存器选择控制位RS1和RS0,00至11分别选择四组工作之一作为当前工作寄存器

PSW.2 :溢出标志位OV,有符号数加、减运算结果有溢出或乘除上结果异常(乘法运算结果大于255即乘积在BA中,或除法运算除数为0)时置1

PSW.0:奇偶标志位P,累加器A中1的个数为奇数时置1。

14、什么是时钟周期?什么是机器周期?什么是指令周期?当振荡频率为12MHz时,一个机器周期

为多少微秒?

答:时钟周期又叫振荡周期或拍,用P表示,是MCS-51单片机中最小的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。

机器周期:由12个时钟周期构成,完成一个基本操作

.

.

指令周期:是执行一条指令所需的时间,根据指令的复杂性,可由1-4个机器周期构成。 当振荡频率为12MHz时,一个机器周期为1微秒。

15、定义变量a,b,c,其中a为内部RAM的可位寻址区的字符变量,b为外部数据存储区浮点型变

量,c为指向 int 型 xdata 区的指针。 答:char bdata a; float xdata b; int xdata *c;

16、定时/计数器TO作为计数器使用时,其计数频率不能超过晶振频率的多少?

答:由于定时/计数器TO作为计数器使用时,是对外部引脚输入的脉冲进行计数,CPU在每个机器周期采样一次引脚,当前一次采样为高电平,后一次采样为低电平,则为一次有效计数脉冲,所以如果晶振频率为fosc,则其采样频率fosc/12,两次采样才能决定一次计数有效,所以计数频率不能超过fosc/24。

17、执行下列程序段后,〔A〕= 8BH(或10001011B),〔CY〕=不影响/〔CY〕。

MOV A,#0C5H RL A

18、假定A=83H,〔R0〕=17H,〔17H〕=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,R0 CPL A 后,A的内容为 34H。

解: ANL A,#17H;A中83H与17H相与,〔A〕=03H ORL 17H,A ;〔17H〕中34H与〔A〕中03H相或,〔17H)=37H XRL A,R0 A ;(A)中03H与〔17H)中37H异或,〔A〕=34H

19、试编写一段对中断系统初始化的程序,使之允许INT0、INT1、T0、串行接口中断,且使T0中断为

高优先级中断。

MOV IP,#00000010B

MOV IE,#10010111B 或 SETB PT0

SETB ES SETB EX1 SETB ET0 SETB EX0 SETB EA

.

.

20、C51的data,bdata,idata有什么区别?

答:data、bdata、idata是表明数据的存储类型。

data是指片内RAM的低128字节,可在一个周期内直接寻址; bdata是指片内RAM的位寻址区,16字节;

idata是指片内RAM的256字节,必须采用间接寻址。

21、C51中的中断函数和一般的函数有什么不同?

答:C51编译器允许用C51创建中断服务函数,中断函数是由中断系统自动调用的。 中断函数的定义格式为:函数类型 函数名 interrupt n using n

其中:interrupt和using为关键字;interrupt后面的n 为中断源的编号,即中断号;using后面的n所选择的寄存器组,取值X围为0~3。

定义中断函数时,using是一个选项,可以省略不用。如果不用using选项,则由编译器选择 一个寄存器组作为绝对寄存器组。

8051的中断过程通过使用interrupt关键字和中断号〔0~31〕来实现,中断号告诉编译器中断函数的入口地址。

22、C51采用什么形式对绝对地址进行访问?

答:绝对地址的访问包括片内RAM、片外RAM与I/O的访问。C51提供了两种比较常用的访问绝对地址的方法。 (1)绝对宏

C51编译器提供了一组宏定义来对51系列单片机的code、data、pdata和xdata空间进行绝对寻址。在程序中,用“#include〞即可使用其中声明的宏来访问绝对地址,包括CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD,具体使用方法参考absacc.h头文件。其中: CBYTE以字节形式对code区寻址;CWORD以字形式对code区寻址; DBYTE以字节形式对data区寻址;DWORD以字形式对data区寻址; XBYTE以字节形式对xdata区寻址;XWORD以字形式对xdata区寻址; PBYTE以字节形式对pdata区寻址;PWORD以字形式对pdata区寻址; 如:

#include

#define PORTA XBYTE[0xFFC0]/*将PORT定义为外部I/O口,地址为0xFFC0,长度为8位*/ #define NRAM DBYTE[0x40] /*将NRAM定义为片内RAM,地址为40H,长度为8位*/ (2)_at_关键字

可以使用关键字_at_对指定的存储器空间的绝对地址进行访问,一般格式如下: [存储器类型] 数据类型说明符 变量名 _at_地址常数;

其中,存储器类型为C51能识别的数据类型,如省略则按存储器模式规定的默认存储器类型确定变量的存储器区域;数据类型为C51支持的数据类型;地址常数用于指定变量的绝对地址,必须位于有效的存储器空间之内;使用_at_定义的变量必须为全局变量。

.

.

23、简述C51的数据存储类型?

答:8051单片机存储区可分为内部数据存储区、外部数据存储区以与程序存储区。

8051单片机内部的数据存储区是可读写的,8051派生系列最多可有256字节的内部数据存储区,其中低128字节可直接寻址,高128字节〔从0x80到0xFF〕只能间接寻址,从20H开始的16字节可位寻址。内部数据区可分为3个不同的存储类型:data、idata和bdata。

外部数据区也是可读写的,访问外部数据区比访问内部数据区慢,因为外部数据区是通过数据 6 指针加载地址来间接访问的。C51提供两种不同的存储类型xdata和pdata访问外部数据。

程序存储区是只能读不能写。程序存储区可能在8051单片机内部或者在外部或者内外都有,这由 8051单片机的硬件决定。C51提供了code存储类型来访问程序存储区。

每个变量可以明确地分配到指定的存储空间,对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部存储器中,而把较少使用的变量放在外部存储器 中。

24、哪些变量类型是51单片机直接支持的?

答:C51编译器支持的数据类型有:位型〔bit〕、无符号字符型〔unsigned char〕、有符号字符型〔signed char〕、无符号整型〔unsigned int〕、有符号整型〔signed int〕、无符号长整型〔unsigned long〕、有符号长整型〔signed long〕、浮点型〔float〕和指针型等。

六、改错题:

1、若两数存于片内RAM30H和31H中,要将其中较大的数存入片内RAM40H中, 如两数相等时,则将两数中任一个存入。 MOV A,30H

CJNE A,31H,NEXT1 NEXT1: JC NEXT2 MOV 40H,31H SJMP $

NEXT2: MOV 40H,A SJMP $

答: 错误: 改正:

2、某8051单片机系统有四个中断源:T0、T1、INT0、INT1。初始化程序中,要求允许 中断,T1设置成高优先级,其余为低优先级,允许T0、T1开始计数,INT0和INT1 为边沿触发。试指出以下初始化程序的错误并改正。 MOV IP , # 0000 1000 B MOV IE , # 1000 1111 B

.

.

MOV TCON , # 0101 0001 B 答:错误: 改正:

中断允许控制寄存器〔IE〕 EA

中断优先级控制寄存器〔IP〕 -

定时器控制寄存器〔TCON〕 TF1

3.指出下面程序的语法错误: #include main(){ a=C; int a=7,C delay(10) void delay();{ cgar i;

for(i=O; i<=255; 〞++〞); }

答: #include main(){

a=C;//a和C必须先定义才可使用 int a=7,C //缺分号,应该提在使用前说明

delay(10) //延时子程序必须先定义,或先有函数原型说明 void delay();{ //作为函数定义,有函数定义不能嵌套的问题, //即不能在一个函数内定义另一个函数,而且“{〞前不应有分号 //作为函数原型说明,应该放在函数调用之前,且其后不应该接函数体 cgar i;//字符型应该是unsigned char

for(i=O; i<=255; 〞++〞);// 〞++〞应改成i++ }

//主函数没有结束,缺〞}〞

4、请判断下列各条指令的书写格式是否有错,如有错说明原因

.

- - ES ET1 EX1 ET0 EX0 - - PS PT1 PX1 PT0 PX0 TR1 TF0 TR0 IE1 IT1 IE0 IT0 .

⑴.MULROR1 错误,乘法指令应使用A、B寄存器操作⑵.MOVA,R7 错误,间接寄存器使用R7有误,间接寄存器只能使用R0、R1。⑶.MOVA,#3000H 错误,8位累加器A不能接受16位数据。⑷.MOVCA+DPTR,A 错误,MOVC指令为对程序存储区操作指令,累加器的内容不可通过变址方式送入程序存储器,两操作数写反了。⑸.LJMP#1000H 错误,长转移指令中的操作数为16位转移地址,不能用立即数的形式来表达。

5、指出下面程序的语法错误: #include Sbit led=p1^0;

Void into_srv() interrupt 0

{ Led=!led;

}

Void main(); IT0=1; IE=0x81 while(1);

七、编程应用题〔采用C语言〕:

1、根据以下电路图的接线关系,编写产生三角波输出的程序。

2、设单片机的fosc=6MHz,要求在P1.7脚上的指示灯亮一秒灭一秒,请用定时器T1编程实现题目要求。 3、设fosc = 12MHz,利用定时器,TO(工作在方式2)在P1.1引脚上获取输出周期为O.4ms的方波信号,定时器溢出时采用中断方式处理,请编写T0的初始化程序与中断服务程序。

解:fosc = 12MHz,则机器周期=12*1/(12*106)s=1us;当T0工作在方式2时,其最大定时时间为256us,要输出周期为0.4mS即400us的方波信号,则其高、低电平应各为200us,显然当定时器T0按方式2工作时,只需计数达到200次即可,因此其时间常数初值为256-200=56。在T0的中断服务程序中,只需将P1.1引脚求反即可。 #include sbit P1_1=P1^1;

.

.

void timer0()interrupt 1 using 1{ P1_1=!P1_1; }

void main(){ P1_1=0; TMOD=0x02; TH0=56; TL0=56; IE=0x82; TR0=1; for(;;){} } 4、根据下图的接线关系,编写采集ADC转换器输入温度传感器信号进行A/D转换,结果以十六进制数 形式显示。 347813141718111D0D1D2D3D4D5D6D7OELE74LS373212019188151417Q0Q1Q2Q3Q4Q5Q6Q7256912151619ADDAADDBADDC+5VR110kU1(CLOCK)1067U1CLOCKSTARTEOCOUT1OUT2OUT3OUT4OUT5OUT6OUT7OUT8IN0IN1IN2IN3IN4IN5IN6IN7ADD AADD BADD CALEVREF(+)VREF(-)26272812345252423221216+5VU2U319XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728ALERT110k-tc18XTAL29ADDAADDBADDCRSTU4:A274HC14219OEADC0808ALE293031PSENALEEAU5:A1P101P112P123P134P145P156P167P178P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C511011121314151617374HC025674HC02U5:B4P10P11P12P14P15P16P13P17 #include < reg51.h > #include < absacc.h > . #define AD_IN1 XBYTE[0xfeff] sbit ad_busy=P3^3; void main (void) {

while(1) {

AD_IN1=0;

while (ad_busy==1); P1=AD_IN1; } }

.

.

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务