单片机的C语言答案北航2
- 格式:ppt
- 大小:217.00 KB
- 文档页数:6
第二章习题参考答案一、填空题:1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。
2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。
3、当使用8751且EA=1,程序存储器地址小于 1000H 时,访问的是片内ROM。
4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。
5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。
6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。
7、PSW中RS1 RS0=10时,R2的地址为 12H 。
8、PSW中RS1 RS0=11时,R2的地址为 1AH 。
9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。
10、PC复位后为 0000H 。
11、一个机器周期= 12 个振荡周期= 6 个时钟周期。
12、PC的内容为将要执行的的指令地址。
13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。
14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。
15、若A中的内容为63H,那么,P标志位的值为 0 。
16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW=00H 。
这时当前的工作寄存器区是第 0 工作寄存器区。
17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。
18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区和用户RAM区。
19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。
调用返回时,再进行出栈保护,把保护的断点送回到 PC 。
20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为 64 KB。
北航《C语言程序设计》答案北航《c语言程序设计》在线作业一单项选择和判断问题一、单选题(共15道试题,共60分。
)1.以下叙述中正确的是a、预处理命令行必须位于源文件的开头。
B.源文件的一行上可以有多个预处理命令。
C.宏名称必须用大写字母表示d.宏替换不占用程序的运行时间正确答案:d2.以下选项试图描述一个新的类型名称,其中正确的名称是a.typedefv1int;b、typedefv2=int;c、类型定义tv3;d、 typedefv4:int;正确答案:C3.c语言对嵌套if语句的规定是:else总是与()配对。
a.其之前最近的ifb.第一个ifc、其上一个最近的IFD没有其他的,如果具有相同的缩进位置,正确答案是:c4.已知:#definen3;执行语句i=n*3;后,i=_______.a.3b.6c.9d、以上这些都不正确。
正确答案:C5.以下选项中可作为c语言合法常量的是a.-8b.-080c.-8e1.0d.-80.0e正确答案:a6.以下不正确的c语言标识符是_____。
a.abcb.abcc.a_bcd.ab.c正确答案:D7.数组int**a[3][4]占据多大空间a、 64b。
12c。
48d。
一百二十八正确答案:c8.已知:intx,a,B;以下选项中错误的if语句是_;。
()a.if(a=b)x++;b.if (a)=正确答案:b9.以下可以正确表示字符类型常量为___。
a、 \b。
?Tc、 \d.297正确答案:b10.表达式:10=9的值为()a.trueb非零值c.0d一正确答案:d11.在C语言中,形式参数的默认存储类型是()a.autob registerc。
静力学。
外人正确答案:a12.假设在C语言中,一个int数据在内存中占用2个字节,那么无符号int数据的值范围是_u。
a、 0~255b。
0~32767c。
0~65535d.0~2147483647正确答案:c13.有以下声明:intb;charc[10];,正确的输入语句是a.Scanf(\b.Scanf(\c.Scanf(\d.Scanf)(\正确答案:b)14.为了避免嵌套的条件分支语句的二义性,c语言规定,c程序中的else总是与()组成配对关系。
北航单片机答案单片机基础问答题答案:第2章1、.8051单片机芯片包含哪些主要逻辑功能部件?各有什么主要功能?答: CPU:控制单片机各部份协调工作进行算术和逻辑运算内部数据存储器:存储数据内部程序存储器:存储程序定时器/计数器,并行I/O口串行口,中断控制系统,时钟电路2、MCS—51单片机的EA信号有何功能?在使用8031时EA信号引脚应如何处理?答:访问程序存储器控制信号,EA=0访问外部程序存储器,EA=1访问内部程序存储器。
8031无内部程序存储器,所以EA接地。
3、MCS—51 单片机有哪些信号需要芯片引脚以第二功能的方式提供?答:P3口,ALE/PROG(30脚),EA/VPP(31脚),RST/VPD(9脚)4、内部RAM低128单片划分为哪3个主要部分?说明各部分的使用特点?答: 1.寄存器区, 可寄存器寻址2.位寻址区 ,可位寻址3.用户RAM区,其单元地址为30H~7FH,一般还把堆栈开辟在用户RAM区5、程序计数器(PC)作为不可寻址寄存器,它有哪些特点?答:PC是一个16位的计数器。
其内容为将要执行的指令地址,寻址范围达64KB。
有以下功能:A.自动加1功能,从而实现程序的顺序执行。
B.上电复位功能。
C.能接收内部数据总线上来的数据,主要通过转移,调用,返回等指令改变其内容以实现程序的转移,转移范围216=64K=65536。
PC没有地址,是不可寻址的。
6、堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?答:堆栈是一种数据结构,堆栈的最大特点就是“后进先出”的数据操作规则。
堆栈是为子程序调用和中断操作而设立的。
其具体功能有两个:保护断点和保护现场。
堆栈指示器SP的作用是指示栈顶地址。
程序设计时一般把SP值初始化为30H以后,因为复位时,SP初始化为07H,而这里是寄存器区和位寻址区。
7、MCS—51的4个I/O口在使用上有哪些分工和特点?试比较各口的特点?答: P1口:只有一种功能通用I/O口P2口:通用I/O口和地址总线高八位P3口:一种功能通用I/O口和第二功能状态P0口:一种功能通用I/O口和AB/DB复用总线8、MCS—51单片机运行出错或程序进入死循环,如何摆脱困境?答:按复位键以重新启动。
15秋北航《C语言程序设计》在线作业答案二一、单选题(共10 道试题,共40 分。
)V 1. 简单变量做实参时,实参与其对应的形参之间的数据传递方式是( )。
A. 双向值传递方式B. 地址传递方式C. 单向值传递方式D. 用户指定传递方式满分:4 分2. 以下叙述中错误的是A. 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B. 数组名代表的是数组所占存储区的首地址,其值不可改变C. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D. 可以通过赋初值的方式确定数组元素的个数满分:4 分3. 设x,y为float型变量,则下列选项中,合法的赋值语句是A. ++xB. y=float(3)C. y=(x%2)/10D. *x=10满分:4 分4. 下列说法正确的是______。
A. C程序由符号构成B. C程序由标识符构成C. C程序由函数构成D. C程序由C语句构成满分:4 分5. 已知int x;float y;则下列表达式的值为1.5的是________。
A. x=3/2.0B. x=3/2C. y=3/2D. y=3/2.0满分:4 分6. 设有以下程序片段,请问执行后的输出结果是________。
char ch=…A…; ch=(ch>=…a… && ch<=…z…)?ch:ch-…A…+…a…; printf("%c" , ch);A. AB. aC. ZD. z满分:4 分7. 假定p是具有double类型的指针变量,则表达式++p使p的值(以字节为单位)增加____A. 1B. 4C. sizeof(double)D. sizeof(p)满分:4 分8. 若有定义:int x; 要将x强制转换为双精度型,应该写成A. x(double)B. x(double)C. (double)xD. double(x)满分:4 分9. 以下正确的叙述是A. C语言的主函数是无参函数B. C语言的主函数最多允许有1个参数C. C语言的主函数最多允许有2个参数D. C语言的主函数可以有2个以上参数满分:4 分10. 定义int x,y;执行y=(x=1,++x, x+2)语句后,y的值是( ).A. 1B. 2C. 7D. 4满分:4 分二、判断题(共15 道试题,共60 分。
第二章第一题8051单片机内包含哪些主要逻辑功能部件?1.CPU2.ROM3.RAM4.Timer/Counter5.UART(串口)(通用异步串行接收机发送机)6.4个8bits Port(并口)7.Int0,int1(外部中断)第二题8051的/EA端有什么用处?1.EA端Enable Address(外部程序存储器地址允许输入端)2.低电平有效3.EA=0(低电平有效)时,只允许访问外部存储器4.EA=1时,可以访问内部和外部存储器5.EA还有复用功能,Vpp(Pulse of Programming)(编程脉冲)(固化编程电压输入端)第三题8051的存储器分为那几个空间?怎样区别不同空间的寻址?1.ROM(片内ROM和片外ROM统一编址)(使用MOVC)(数据传送指令)(16bits地址)(64KB)2.片外RAM(MOVX)(16bits地址)(64KB)3.片内RAM(MOV)(8bits地址)(256B)•什么是普林斯顿结构?哈佛结构?1.普林斯顿结构,ROM和RAM统一编址2.哈佛结构,ROM和RAM分开编址第四章8051片内RAM的空间是怎样分配的?1.片内RAM有256B2.低128B是真正的RAM区3.高128B是SFR(特殊功能寄存器)区•真正的RAM区可以分成那几个部分?1.4个工作寄存器区(R0~R7)2.位寻址区3.真正的RAM区第五题简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元?1.片内RAM区从00H~FFH(256B)2.其中20H~2FH(字节地址)是位寻址区3.对应的位地址是00H~7FH第六题如何简洁地判断8051正在工作?1.用示波器观察8051的XTAL2端是否有脉冲信号输出(判断震荡电路工作是否正常?)2.ALE(地址锁存允许)(Address Latch Enable)输出是fosc的6分频3.用示波器观察ALE是否有脉冲输出(判断8051芯片的好坏?)4.观察PSEN(判断8051能够到EPROM 或ROM中读取指令码?)5.因为/PSEN接外部EPROM(ROM)的/OE端子6.OE=Output Enable(输出允许)第七题8051如何确定和改变当前工作寄存器组?1.PSW(程序状态字)(Program Status Word)中的RS1和RS02.可以给出4中组合3.用来从4组工作寄存器组中进行选择4.PSW属于SFR(Special Function Register)(特殊功能寄存器)第十题8051的/EA信号有什么功能?在使用8031的时候,EA信号引脚应该如何处理?1.EA=Enable Address(外部程序存储器地址允许输入端)2.EA=0(低电平有效)只允许访问外部存储器3.EA=1内外ROM都可以访问4.因为8031没有片内ROM5.只能访问片外的EPROM6.应该使EA=0(有效)第十二题内部RAM第128B单元划分成那几个主要部分?各部分主要功能是什么?1.当前工作寄存器组(4组)(00H~1FH)2.位寻址区(20H~2FH)3.真正的RAM区(30H~7FH)第十三题使单片机复位有哪几种方法?复位后机器的初始状态如何?1.上电复位2.上电复位+手动复位3.脉冲复位4.复位会重置一些寄存器第十四题开机复位后,CPU使用的是哪组工作寄存器?它们的地址什么什么?1.8051有4个工作寄存器组2.分别从R0~R73.分别位于00H~07H,08H~0FH,10H~17H,18H~1FH4.开机复位后,默认使用寄存器组0第十五题PSW的作用是什么?作用是什么?1.PSW是一个SFR(特殊功能寄存器)2.位于片内RAM的高128B3.具体地址D0H(00H~FFH)(片内RAM的编址)(8bits编址方法)4.PSW=Program Status Word(程序状态字)•PSW的常用标志位有哪些?1.CY=Carry(进位标志位)2.AC=Auxiliary Carry(辅助进位标志位)(半进位标志位)3.F0用户标志位4.RS1,RS0,用来选择当前工作寄存器组(R0~R7)(4选1)5.OV=Overflow(溢出标志位)6.P=Parity(奇偶校验位)第十五题位地址7CH和字节地址7CH如何区别?位地址7CH在片内RAM中什么地方?1.片内RAM的地址从00H~FFH2.其中20H~2FH(字节地址)是位寻址区(bits)3.位地址从00H~7FH4.位地址7CH位于字节地址2FH5.可以从寻址方式来区分6.位地址使用位寻址方式7.字节地址使用直接寻址,间接寻址第十七题8051的时钟周期,震荡周期有什么关系?1.震荡周期2.时钟周期=状态周期(state)3.时钟周期=2*振荡周期4.机器周期=6*时钟周期=12*震荡周期5.指令周期=1~4个机器周期第十八题一个机器周期的时序如何划分?1.一个机器周期=12个震荡周期=6个时钟周期(状态周期)2.S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1,S4P2,S5P1,S5P2,S6P1,S6P23.其中s=state(状态),p=phase(相位)第十九题什么叫做堆栈?SP是什么?它的作用是什么?8051堆栈的容量不能超过多少个字节?1.Stack(堆栈)2.具有FILO,LIFO的特性3.SP=Stack Pointer(堆栈指针)4.SP是栈顶指示器第三章1、指令:CPU根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2、见第1题3、操作码[目的操作数] [,源操作数]4、5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址6、MOV A,40H ;直接寻址(40H)→AMOV R0,A ;寄存器寻址(A)→R0MOV P1,#0F0H ;立即数寻址0F0→P1MOV @R0,30H ;直接寻址(30H)→(R0)MOV DPTR,#3848H ;立即数寻址3848H→DPTRMOV 40H,38H ;直接寻址(38H)→40HMOV R0,30H ;直接寻址(30H)→R0MOV P0,R0 ;寄存器寻址(R0 )→P0MOV 18H,#30H ;立即数寻址30H→18HMOV A,@R0 ;寄存器间接寻址((R0)) →AMOV P2,P1 ;直接寻址(P1)→P2最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H注意:→左边是内容,右边是单元7、用直接寻址,位寻址,寄存器寻址8、MOV A,DA TA ;直接寻址2字节1周期MOV A,#DATA ;立即数寻址2字节1周期MOV DATA1,DATA2 ;直接寻址3字节2周期MOV 74H,#78H ;立即数寻址3字节2周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A9、MOV A,@R0 ;((R0))=80H→AMOV @R0,40H ;(40H)=08H→(R0)MOV 40H,A ;(A)=80→40HMOV R0,#35H ;35H→R0最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H10、用直接寻址,位寻址,寄存器寻址11、只能采用寄存器间接寻址(用MOVX指令)12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7)高128字节:直接寻址,位寻址,寄存器寻址13、采用变址寻址(用MOVC指令)14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。
北航《C语言程序设计》在线作业二单选题判断题一、单选题(共10 道试题,共40 分。
)1. 关于void 指针,下列说法正确的是____.A. void 指针就是未指向任何数据的指针B. void 指针就是已定义而未初始化的指针C. 指向任何类型数据的指针可直接赋值给一个void 指针D. void 指针值可直接赋给一个非void 指针-----------------选择:C2. 设有定义语句“char s[]=”123”;”,则表达式“s[3]”的值是A. 1'B. '3'C. '\0'D. 存在语法错误-----------------选择:C3. 不合法的八进制数是( )A. 0B. 028C. 077D. 01-----------------选择:B4. 设x,y为float型变量,则下列选项中,合法的赋值语句是A. ++xB. y=float(3)C. y=(x%2)/10D. *x=10-----------------选择:B5. 以下对C语言函数的有关描述中,正确的是:______。
()A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B. 函数既可以嵌套定义又可以递归调用C. 函数必须有返回值,否则不能使用函数D. 程序中有调用关系的所有函数必须放在同一个源程序文件中-----------------选择:A6. 在C语言中,形参的缺省存储类型是( )A. autoB. registerC. staticD. extern-----------------选择:A7. 下面的for语句______。
for(x=0,y=0;(y!=123)&&(x<4);x++);()A. 是无限循环。
第四章中断类P104 例4-1发0均为下降沿触发,当外部中断和外部中断假设外部中断01端口的电P11发生时,生时,P0端口的电平反向,当外部中断平反向。
#include<reg51.h>void IS0(void) interrupt 0{ P0=~P0;} //P0端口反向void IS1(void) interrupt 2P1=~P1;} //P1{ 端口反向void main( )P1=0xFF; {P0=0x00;IT0=1; IT1=1;EX0=1; EX1=1; EA=1;while(1);}】外部中断示例4-9【例然后外部输入一脉冲串,D1,首先通过在本实例中,P1.7口点亮发光二极管则发光二极管D1亮、暗交替。
#include<reg51.h>P1_7=P1^7;sbit0 //外部中断void interrupt0( ) interrupt 0 using 2P1_7=!P1_7;} {main( )void//{开中断EA=1;脉冲触发//外部中断0 IT0=1;EX0=1; //外部中断0P1_7=0;do{ }while(1);}3个脉冲,则灯亮、暗交替一次,可如下面编程:如果有#include<reg51.h> P17=P1^7; Sbitchar i=3; unsignedmain( ) voidEX0=1; IT0=1; EA=1; {P17=0;} do{ }while(1);void interrupt0( ) interrupt 0i=i-1; {if(i==0)P17=!P17; i=3;{}}S1口,两开关S0、LED【例4-10】如图4-18所示,8只阴极接至单片机P0S0LED 状态。
按下P3.2分别接至单片机引脚()和P3.3()。
编写程序控制S1后,变为闪烁状态。
后,点亮8只LED;按下#include<reg51.h>P32=P3^2;sbit定义延时子函数// void delay(unsigned int d)while(--d>0); {}main( ) voidLED//熄灭P0=0xFF; {IT1=1; IT0=1; 脉冲触发方式1、0外中断//EA=1; EX0=1; EX1=1; //开中断for( ; ; ) //延时等待中断发生{;}}INT0_ISR( ) interrupt 0//外中断0中断服务函数voidP0=0x00;{}1void INT1_ISR( ) interrupt 2//外中断中断服务函数while(P32!=0)//如果有外部中断0,则退出{{delay(5000);P0=0x00;delay(5000);P0=0xFF;}}定时类【例4-16】设单片机的fosc=12MHz,要求在P1.0上产生周期为2ms的方波。
单片机c语言试题和答案一、选择题1. 以下哪项不是8051单片机的特点?A. 内置8KB的ROMB. 内置256B的RAMC. 有4个定时器/计数器D. 支持外部中断答案:C(8051单片机有2个定时器/计数器)2. 在8051单片机中,以下哪个寄存器用于存放程序状态字?A. A寄存器B. B寄存器C. PSW寄存器D. SP寄存器答案:C(PSW寄存器用于存放程序状态字)3. 以下哪个指令用于将累加器A的值传递给B寄存器?A. MOV B, AB. MOV A, BC. ADD A, BD. SUBB A, B答案:A(MOV B, A)4. 在8051单片机中,以下哪个引脚用于外部中断0?A. P3.2B. P3.3C. P3.4D. P3.5答案:B(P3.3用于外部中断0)5. 以下哪个指令用于将立即数#0Ah传送到累加器A?A. MOV A, #0AhB. MOV A, 0AhC. ADD A, #0AhD. SUBB A, #0Ah答案:A(MOV A, #0Ah)二、填空题1. 8051单片机的时钟频率最高可达______MHz。
答案:12MHz2. 在8051单片机中,数据指针DPTR由______和______两个寄存器组成。
答案:DPL和DPH3. 在8051单片机中,外部中断1的优先级高于______。
答案:外部中断04. 以下程序的功能是______。
```cvoid delay(unsigned int ms) {unsigned int i, j;for(i = ms; i > 0; i--)for(j = 110; j > 0; j--);}```答案:实现一个简单的延时函数,延时时间为ms毫秒5. 在8051单片机中,以下指令序列实现的功能是______。
```cMOV A, #0FFhMOV B, #0FFhDEC ADEC BJNZ Label```答案:将A和B寄存器的值减1,直到它们都为0,然后跳转到Label标签处执行三、编程题1. 编写一个程序,使用8051单片机的定时器0实现一个1秒的定时器中断,并在中断服务程序中使P1.0引脚的电平翻转。