




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章1. 给出下列有符号数的原码、反码和补码(假设计算机字长为 8 位)。+45 -89 -6 +112答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101【-89】原=11011001,【-89】反=10100110,【-89】补=10100111【-6】原=10000110,【-6】反=11111001,【-6】补=11111010【+112】原=01110000,【+45】反=01110000,【+45】补=011100002. 指明下列字符在计算机内部的表示形式。AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H3. 什么是单片机?答:单片机是把微型计算机中的微处理器、存储器、I/O 接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。4. 单片机的主要特点是什么?答:主要特点如下:1) 在存储器结构上,单片机的存储器采用哈佛(Harvard)结构2) 在芯片引脚上,大部分采用分时复用技术3) 在内部资源访问上,采用特殊功能寄存器(SFR)的形式Error! No text of specified style in document.24) 在指令系统上,采用面向控制的指令系统5) 内部一般都集成一个全双工的串行接口6) 单片机有很强的外部扩展能力5. 指明单片机的主要应用领域。答:单机应用:1) 工业自动化控制;2) 智能仪器仪表;3) 计算机外部设备和智能接口;4) 家用电器多机应用:功能弥散系统、并行多机处理系统和局部网络系统。第二章1. MCS-51 单片机由哪几个部分组成?答:MCS-51 单片机主要由以下部分组成的:时钟电路、中央处理器(CPU)、存储器系统(RAM 和 ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。2. MCS-51 的标志寄存器有多少位,各位的含义是什么?答:MCS-51 的标志寄存器 PSW 有 8 位;D7D6D5D4D3D2D1D0C AC F0 RS1 RS0 OV - P含义如下:C(PSW.7):进位或借位标志位。AC(PSW.6):辅助进位或借位可标志位。F0(PSW.5):用户标志位。是系统预留给用户自己定义的标志位。Error! No text of specified style in document. 3RS1、RS0(PSW.4、PSW.3):寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。OV(PSW.2):溢出标志位。在加法或减法运算时,如运算的结果超出 8 位二进制数的范围,则 OV 置 1,标志溢出,否则 OV 清零。P(PSW.0):奇偶标志位。用于记录指令执行后累加器 A 中 1 的个数的奇偶性。若累加器 A 中 1 的个数为奇数,则 P 置位,若累加器 A 中 1 的个数为偶数,则 P 清零。其中 PSW.1 未定义,可供用户使用。3. 在 8051 的存储器结构中,内部数据存储器可分为几个区域?各有什么特点?答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般 RAM 区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区,00H1FH 单元,可用 R0R7 等 8 个寄存器访问;位寻址区,20H2FH 单元,可按位方式访问;一般 RAM 区,30H7FH 单元;堆栈区,可从 08 到 7F 单元;特殊功能寄存器区位于 80HFFH 单元。4. 什么是堆栈?说明 MCS-51 单片机的堆栈处理过程。答:堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS-51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,SP 指针的内容先自动加 1,然后再把数据存入到 SP 指针指向的单元;出栈时,先把SP 指针指向单元的数据取出,然后再把 SP 指针的内容自动减 1。5. MCS-51 单片机有多少根 I/O 线?它们和单片机的外部总线有什么关系?答:MCS-51 单片机有 32 根 I/O 线,由 P0 口 经 地 址 锁 存 器 提 供 低 8 位(A7 A0), P2 口 提 供 高 8 位 (A15 A8)而 形 成 。 数据总线宽度为 8 位,由 P0口直接提供。控 制 总 线 由 第 二 功 能 状 态 下 的 P3 口 和 4 根 独 立 的 控 制 线RST、 EA、 ALE 和 PSEN 组 成。Error! No text of specified style in document.46. 什么是机器周期? MCS-51 单片机的一个机器周期包括多少个时钟周期?答:机器周期:机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、 、S66 个状态,每个状态包含两拍 P1 和 P2,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含 12 个时钟周期。7. 如果时钟周期的频率为 12MHz,那么 ALE 信号的频率为多少?答:2MHZ第三章1在 MCS-51 单片机中,寻址方式有几种?其中对片内 RAM 可以用哪几种寻址方式?对片外 RAM 可以用哪几种寻址方式?答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内 RAM 寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外 RAM 寻址有:寄存器间接寻址方式。2在对片外 RAM 单元寻址中,用 Ri 间接寻址与用 DPTR 间接寻址有什么区别?答:片外数据存储器寻址中,用 Ri 间接寻址只能访问低端的 256 字节单元,而用 DPTR 作指针间接访问可访问整个 64K 字节。3在位处理中,位地址的表示方式有哪几种?答:1直接位地址(00H0FFH)。例如:20H2字节地址带位号。例如:20H.3 表示 20H 单元的 3 位。Error! No text of specified style in document. 53特殊功能寄存器名带位号。例如:P0.1 表示 P0 口的 1 位。4位符号地址。例如:TR0 是定时/计数器 T0 的启动位。4写出完成下列操作的指令。(1)R0 的内容送到 R1 中。MOV A,R0MOV R1,A(2)片内 RAM 的 20H 单元内容送到片内 RAM 的 40H 单元中。MOV 40H,20H(3)片内 RAM 的 30H 单元内容送到片外 RAM 的 50H 单元中。MOV A,30HMOV R0,#50HMOVX R0,A(4)片内 RAM 的 50H 单元内容送到片外 RAM 的 3000H 单元中。MOV A,50HMOV DPTR,#3000HMOVX DPTR,A(5)片外 RAM 的 2000H 单元内容送到片外 RAM 的 20H 单元中。MOV DPTR,#2000HMOVX A,DPTRMOV 20H,AError! No text of specified style in document.6(6)片外 RAM 的 1000H 单元内容送到片外 RAM 的 4000H 单元中。MOV DPTR,#1000HMOVX A,DPTRMOV DPTR,#4000HMOV DPTR,A(7)ROM 的 1000H 单元内容送到片内 RAM 的 50H 单元中。MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMOV 20H,A(8)ROM 的 1000H 单元内容送到片外 RAM 的 1000H 单元中。MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMOVX DPTR,A5区分下列指令有什么不同?(1)MOV A,20H 和 MOV A,#20H答:前者源操作数是直接寻址,后者源操作数立即寻址。(2)MOV A,R1 和 MOVX A,R1答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低 256 字节。(3)MOV A,R1 和 MOV A,R1答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。(4)MOVX A,R1 和 MOVX A,DPTRError! No text of specified style in document. 7答:前者源操作数是访问片外数据存储器低 256 字节,后者源操作数访问片外数据存储器整个 64K 字节。(5)MOVX A,DPTR 和 MOVC A,A+DPTR答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。6设片内 RAM 的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令执行后片内 RAM 的 20H、40H、10H 单元以及 P1、P2 中的内容。MOV R0,#20HMOV A,R0 ;A=40HMOV R1,A ;R1=40HMOV A,R1 ;A=10HMOV R0,P1 ;(40H)=0CAHMOV P2,P1 P2=0CAHMOV 10H,A (10H)=10HMOV 20H,10H (20H)=10H结果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH 和 P1=0CAH7已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内 RAM(7FH)=70H,片外 RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。(1)MOV A,R1 结果:累加器 A 等于 70H(2)MOVX DPTR,A 结果:片外 RAM(2FFCH)单元等于 02H(3)MOVC A,A+DPTR 结果: 累加器 A 等于 64H(4)XCHD A,R1 结果:累加器 A 等于 00H,片内 RAM(7FH)单元等于 72HError! No text of specified style in document.88已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片内 RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的值。(1)ADD A,R1 ;累加器 A 等于 55H,CY 等于 1(2)SUBB A,#77H ;累加器 A 等于 00H,CY 等于 0(3)MUL AB ;累加器 A 等于 E0H,B 寄存器等于 01H,CY等于 1,OV 等于 0(4)DIV AB ;累加器 A 等于 1EH,B 寄存器等于00H,CY、OV 等于 0(5)ANL 78H,#78H ;片内 RAM(78H)单元等于 58H(6)ORL A,#0FH ;累加器 A 等于 7FH(7)XRL 80H,A ;片内 RAM(80H)等于 14H9设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器 A、R0、17H 单元的内容。ANL A,#17H ;A=03HORL 17H,A ;(17H)=37HXRL A,R0 ;A=34HCPL A ;A=CBH结果:A=CBH,(R0)=17H,(17H)=37H10写出完成下列要求的指令。(1)累加器 A 的低 2 位清零,其余位不变。ANL A,#11111100B(2)累加器 A 的高 2 位置“1”,其余位不变。ORL A,#11000000B(3)累加器的高 4 位取反,其余位不变。XRL A,#11110000BError! No text of specified style in document. 9(4)累加器第 0 位、2 位、4 位、6 位取反,其余位不变。XRL A,#01010101B11说明 LJMP 指令与 AJMP 指令的区别?答:LJMP 指令后面提供的是 16 位目标地址,所以可以转移到 64KB 程序存储器的任意位置,缺点是:执行时间长,字节数多。AJMP 指令后带的是 11 位直接地址,执行时,先将程序指针 PC 的值加 2(该指令长度为 2 字节),然后把指令中的 11 位地址 addr11 送给程序指针 PC 的低 11 位,而程序指针的高 5 位不变,只能在当前 2K 范围内转移。12设当前指令 CJNE A,#12H,10H 的地址是 0FFEH,若累加器 A 的值为10H,则该指令执行后的 PC 值为多少?若累加器 A 的值为 12H 呢?答:指令执行后的 PC 值为 1011H,若累加器 A 的值为 12H,则指令执行后的 PC 值为 1001H。13用位处理指令实现 P1.4=P1.0 (P1.1P1.2 )/P1.3 的逻辑功能。程序:MOV C,P1.1ORL C,P1.2ANL C,P1.0ORL C,/P1.3MOV P1.4,C14下列程序段汇编后,从 1000H 单元开始的单元内容是什么?ORG 1000HTAB: DB 12H,34HDS 3DW 5567H,87H答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00HError! No text of specified style in document.1015试编一段程序,将片内 RAM 的 20H、21H、22H 单元的内容依次存入片外 RAM 的 20H、21H、22H 中。程序:MOV R0,#20HMOV R2,#03HLOOP:MOV A,R0MOVX R0,AINC R0DJNZ R2,LOOPSJMP $16编程实现将片外 RAM 的 2000H2030H 单元的内容,全部搬到片内 RAM的 20H 单元开始位置,并将源位置清零。程序:MOV R0,#20HMOV DPTR,#2000HMOV R2,#30HLOOP: MOVX A,DPTRMOV R0,AMOV A,#00MOVX DPTR,AINC DPTRINC R0DJNZ R2,LOOPSJMP $Error! No text of specified style in document. 1117编程将片外 RAM 的 1000H 单元开始的 100 个字节数据相加,结果放于R7R6 中。程序:MOV DPTR,#1000HMOV R2,#100MOV R7,#00MOV R6,#00LOOP: MOVX A,DPTRADD A,R6MOV R6,AMOV A,R7ADDC A,#0MOV R7,AINC DPTRDJNZ R2,LOOPSJMP $18编程实现 R4R3R2 ,结果放于 R7R6R5 中。程序:ORG 0100HMUL1:MOV A,R2MOV B,R3MUL AB ;R2R3 ,结果的低字节直接存入积的 R5MOV R5,A ;结果的高字节存入 R6 中暂存起来MOV R6,BError! No text of specified style in document.12MUL2:MOV A,R2MOV B,R4MUL AB ;R2R4 ,结果的低字节与 R6 相加后,再存入 R6 中ADD A,R6MOV R6,AMOV A,B ;结果的高字节加上进位位后存入 R7 中ADDC A,#00MOV R7,ASJMP $19编程实现把片内 RAM 的 20H 单元的 0 位、1 位,21H 单元的 2 位、3 位,22H 单元的 4 位、5 位,23H 单元的 6 位、7 位,按原位置关系拼装在一起放于R2 中。程序:MOV C,20H.0MOV A.0,CMOV C,20H.1MOV A.1,CMOV C,21H.2MOV A.2,CMOV C,21H.3MOV A.3,CMOV C,22H.4MOV A.4,CMOV C,22H.5Error! No text of specified style in document. 13MOV A.5,CMOV C,23H.6MOV A.6,CMOV C,23H.7MOV A.7,CMOV R2,A20用查表的方法实现一位十六进制数转换成 ASCII。程序:(设一位十六进制数放在 R2 中,轮换的 ASCII 也放于 R2 中)C16STASC:MOV DPTR,#TABMOV A,R2MOVC A,A+DPTRMOV R2,ARETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,391H,41H,42H,43H,44H,45H,46H21编程统计从片外 RAM2000H 开始的 100 个单元中“0”的个数放于 R2 中。程序:MOV DPTR,#2000HMOV R3,#100MOV R2,#00LOOP: MOVX A,DPTRJNZ NEXTINC R2Error! No text of specified style in document.14NEXT:INC DPTRDJNZ R3,LOOPSJMP $第四章1. C 语言有哪些特点?答:C 语言具有以下特点:1) 语言简洁、紧凑,使用方便、灵活2) 运算符丰富3) 数据结构丰富,具有现代化语言的各种数据结构4) 可进行结构化程序设计5) 可以直接对计算机硬件进行操作6) 生成的目标代码质量高,程序执行效率高7) 可移植性好2. 有哪些数据类型是 MCS-51 单片机直接支持的?答:MCS-51 单片机直接支持的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型 char、短整型 short、整型 int、长整型 long、浮点型 float、双精度型 double、特殊功能寄存器型和位类型,其中 char 型与 short 型相同,float 型与 double 型相同。组合数据类型有数组类型、结构体类型、共同体类型和枚举类型,另外还有指针类型和空类型。3. C51 特有的数据类型有哪些?答:C51 特有的数据类型有特殊功能寄存器型和位类型。4. C51 中的存储器类型有几种,它们分别表示的存储器区域是什么?答:C51 中的存储器类型有 6 种,分别如下:Error! No text of specified style in document. 15data:直接寻址的片内 RAM 低 128B,访问速度快bdata:片内 RAM 的可位寻址区(20H2FH),允许字节和位混合访问idata:间接寻址访问的片内 RAM,允许访问全部片内 RAMpdata:用 Ri 间接访问的片外 RAM 低 256Bxdata:用 DPTR 间接访问的片外 RAM,允许访问全部 64KB 片外 RAMcode:程序存储器 ROM 64KB 空间5. 在 C51 中,bit 位与 sbit 位有什么区别?答:bit 位类型符用于定义一般的位变量。存储器类型只能是bdata、data、idata,只能是片内 RAM 的可位寻址区,严格来说只能是bdata。sbit 位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。6. 在 C51 中,通过绝对地址来访问的存储器有几种?答:通过绝对地址来访问存储器有三种方法:1. 使用 C51 运行库中预定义宏。2. 通过指针访问。3. 使用 C51 扩展关键字_at_7. 在 C51 中,中断函数与一般函数有什么不同?答:中断函数在定义时后面带 interrupt m 修饰符,m 的 取 值 为 0 31, 对应 的 中 断 情 况 如 下:0外部中断 0,1定时 /计数器 T0,2外部中断1,3定时/计数器 T1,4串行口中断,5定时/计数器 T2,其他值预留。编写 MCS-51 中断函数需要注意如下几点。(1) 中 断 函 数 不 能 进 行 参 数 传 递 , 如 果 中 断 函 数 中 包 含 任 何 参 数 声明 都 将 导 致 编 译 出 错。(2) 中断函数没有返回值。(3) 在任何情况下都不能直接调用中断函数Error! No text of specified style in document.16(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。(5) C51 编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。(6) C51 编译器从绝对地址 8m+3 处产生一个中断向量,其中 m 为中断号,也即 interrupt 后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。(7) 中断函数最好写在文件的尾部,并且禁止使用 extern 存储类型说明。防止其他程序调用。8. 按给定的存储类型和数据类型,写出下列变量的说明形式。(1) 在 data 区定义字符变量 val1。char data val1;(2) 在 idata 区定义整型变量 idata val2;(3) 在 xdata 区定义无符号字符型数组 val34。unsigned char xdata val34;(4) 在 xdata 区定义一个指向 char 类型的指针 px。char xdata *px;(5) 定义可寻址位变量 flag。bit flag;(6) 定义特殊功能寄存器变量 P3。sfr P3=0xa0;(7) 定义特殊功能寄存器变量 SCON。sfr SCON=0x98;(8) 定义 16 位的特殊功能寄存器 T0。sfr16 T0=0x8a;Error! No text of specified style in document. 179. 写出下列关系表达式或逻辑表达式的结果,设 a=3,b=4,c=5。(1) a+bcmain()int x,y,z;serial_initial();x=y=8;z=+x;printf(“n %d %d %d“,y,z,x);x=y=8;z=x+;printf(“n %d %d %d“,y,z,x);x=y=8;z=-x;printf(“n %d %d %d“,y,z,x);x=y=8;z=x-;printf(“n %d %d %d“,y,z,x);printf(“n“);while(1);结果: 8 9 98 8 98 7 78 8 7(2)#include extern serial_initial();main()int x,y,z;serial_initial();printf(“input data x,y?n“);scanf(“%d %d“,Error! No text of specified style in document.18printf(“n x y xy x=y x!=y x=y“);printf(“n“);printf(“n%3d%3d“,x,y);z=xy; printf(“%5d“,z);z=x=y; printf(“%5d“,z);z=x!=y; printf(“%5d“,z);z=x=y; printf(“%5d“,z);while(1);执行结果:input data x,y?1 2x y xy x=y x!=y x=y1 2 1 1 0 0 1 0(3)#include extern serial_initial();main()int x,y,z;serial_initial();printf(“input data x, y ?n“);scanf(“%d %d“,printf(“n x y !x x|y xprintf(“n%3d%3d“,x,y);z=!y; printf(“%5d“,z);z=x|y; printf(“%5d“,z);z=x printf(“%5d“,z);printf(“n“);printf(“n“);printf(“That is alln“);while(1);执行结果:input data x, y ?x y !x x|y xmain()int a,b;unsigned int x,y;serial_initial();a=b=0xaa55;x=y=0xaa55;printf(“n a=%4x b=%4x x=%4x y=%4x“,a,b,x,y);a=a1;x=x1;printf(“n a=%4x b=%4x x=%4x y=%4x“,a,b,x,y);printf(“n“);printf(“n“);printf(“That is all.n“);while(1);执行结果:a=aa55 b=aa55 x=aa55 y=aa55a=54aa b=d52a x=54aa y=552aThat is all.11. break 和 continue 语句的区别是什么?答:break 语句可以跳出 switch 结构,使程序继续执行 switch 结构后面的一个语句。break 语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。continue 语句用在循环结构中,用于结束本次循环,跳过循环体中continue 下面尚未执行的语句,直接进行下一次是否执行循环的判定。continue 语句和 break 语句的区别在于:continue 语句只是结束本次循环而不是终止整个循环;break 语句则是结束循环,不再进行条件判断。12. 用分支结构编程实现:输入“1”显示“A”,输入“2”显示“B”,输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。参考程序:#include Error! No text of specified style in document. 21#include void main(void) unsigned char x;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;while(1)printf(“input x:n“); /输出提示信息scanf(“%c“, switch(x)case 1:printf(“ An“);break;case 2:printf(“ Bn“);break;case 3:printf(“ Cn“);break;case 4:printf(“ Dn“);break;case 5:printf(“ QUITn“);break;default: printf(“ RETRYn“);if (x=5) break;while(1);13. 输入 3 个无符号的字符数据,要求按由大到小的顺序输出。参考程序:#include #include void main(void) unsigned char x,y,z,m;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(“input x,y,z:“); /输出提示信息scanf(“%c,%c,%c“, printf(“n“);if (x /包含特殊功能寄存器库#include /包含 I/O 函数库void main(void) /主函数int i,s=0; /定义整型变量i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;while (i /包含特殊功能寄存器库#include /包含 I/O 函数库void main(void) /主函数int i,s=0; /定义整型变量i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;do /累加 1 到 10 的平方之和在 s 中s=s+i*i;i+;while (i /包含特殊功能寄存器库#include /包含 I/O 函数库void main(void) /主函数int i,s=0; /定义整型变量Error! No text of specified style in document. 23SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;for (i=1;i /包含特殊功能寄存器库#include /包含 I/O 函数库main()unsigned char f5,m,i,j;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(“输入任意 5 个字符:“);scanf(“%c,%c,%c,%c,%c“,printf(“n“);for (i=0;ifj+1) m=fj;fj=fj+1;fj+1=m;printf(“由小到大的顺序为:%c,%c,%c,%c,%c “,f0,f1,f2,f3,f4);printf(“n“);while(1);16. 用指针实现,输入 3 个无符号字符数据,按由大到小的顺序输出。参考程序:#include /包含特殊功能寄存器库#include /包含 I/O 函数库main()unsigned char x,y,z;Error! No text of specified style in document.24unsigned char *p,*p1,*p2,*p3;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(“input x,y and z:n“);scanf(“%c,%c,%c“,printf(“n“);p1=p2= p3=if (*p1 /包含特殊功能寄存器库#include /包含 I/O 函数库struct studentunsigned char number10;unsigned char name10;unsigned int grade;p13;main()unsigned char i,j=0;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(“input 3 studend number,name and grade:n“);for (i=0;ip1j.grade) j=i;Error! No text of specified style in document. 25printf(“成绩最高的学生是:%s,成绩是:%d“,,p1j.grade);printf(“n“);while(1);第五章1单片机 C 语言与汇编语言混合编程有哪几种方式?通常采用什么方式?答:单片机 C 语言和汇编语言混合编程分为汇编中调用 C51 函数和 C51 程序中引用汇编,通常使用的是在 C51 程序中引用汇编。在 C51 程序中使用汇编语言有两种情况:一种是汇编程序部分和 C51 程序部分为不同的模块,或不同的文件,通常由 C51 程序调用汇编程序模块的变量和函数(也可称为子程序或过程);另一种是嵌入式汇编,即在 C51 程序中嵌入一段汇编语言程序。2简述 C51 程序调用汇编程序时如何实现参数传递。答:C51 中调用汇编程序进行参数传递时都必须严格遵守 C51 函数的参数和返回值的相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51 中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的;第二种是通过固定存储区传递。3简述嵌入式汇编的实现方法。答:在 C51 程序中嵌入汇编程序通常的处理方法如下。第一步:在 C 文件中以如下方式嵌入汇编程序。第二步:在 Keil C51 软件的 Project 窗口右击嵌入汇编程序的 C 文件,在弹出的快捷菜单中选择 Options for .命令,选中右边的 Generate Assembler SRC File 和 Assemble SRC File 复选框,使检查框由灰色变成黑色(有效)状态。第三步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是 KeilC51LibC51S.Lib)加入到工程中,该文件必须作为工程的最后文件。4简述 C51 中调用汇编程序的实现方法。答:编写为 C51 调用的汇编程序,参数须按规定的寄存器或存储器传送,程序格式有相应的规则,这些规则比较繁琐,为了便于处理,在实际中我们往Error! No text of specified style in document.26往先用 C51 写出这个程序的主体,然后用 SRC 控制指令编译产生 asm 文件,修改这个 asm 文件得到我们所要的汇编函数。处理过程具体如下。第一步:先用 C 语言程序编写出程序框架,如文件名为 a1.c(注意参数)。第二步:在 Keil C51 的 Project 窗口中右击该 C 语言文件,在弹出的快捷菜单中选择 Options for .,右边的 Generate Assembler SRCFile 和Assemble SRC File,使检查框由灰色变成黑色(有效)状态;第三步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是KeilC51Lib C51S.Lib)加入工程中,该文件必须作为工程的最后文件。库文件与编译模式的关系如前面。第四步:编译后将会产生一个 SRC 的文件,将这个文件扩展名改为 ASM。这样就形成了可供 C51 程序调用的汇编程序。随后可在该文件的代码段中加入所需的指令代码。第五步:将该汇编程序与调用它的主程序一起加到工程文件中,这时工程文件中不再需要原来的 C 语言文件和库文件,主程序只需要在程序开始处用EXTERN 对所调用的汇编程序中的函数作声明,在主程序中就可调用汇编程序中的函数了。第六章1. 何为“准双向 I/O 接口”?在 MCS-51 单片机的四个并口中,哪些是“准双向 I/O 接口”?答:准双向 I/O 接口是能实现输入输出功能,但在使用时只能从输入和输出中选择一个。MCS-51 单片机的四个并口中 P1、P2、P3 是准双向 I/O 接口。2. 80C51 单片机内部有几个定时/计数器?它们由哪些功能寄存器组成?怎样实现定时功能和计数功能?答:80C51 单片机内部有两个 16 位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMOD 和 TCON 功能寄存器组成。通过 TMOD 中的 C/T 位选择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。3. 定时/计数器 T0 有几种工作方式?各自的特点是什么?答:有四种工作方式,特点见下表:M1 M0 工作方式 方式说明Error! No text of specified style in document. 270 0 0 13 位定时/计数器0 1 1 16 位定时/计数器1 0 2 8 位自动重置定时/计数器1 1 3 两个 8 位定时/计数器(只有 T0 有)4. 定时/计数器的四种工作方式各自的计数范围是多少?如果要计 10 个单位,不同的方式初值应为多少?答:有四种方式。方式 0 计数范围:18192;方式 1 计数范围:165536;方式 2 计数范围:1256;方式 3 计数范围:1256。如果计 10 个单位,方式 0 初值为:8192-10=8182;方式 1 初值为:65536-10=65526;方式 2 初值为:256-10=246;方式 2 初值为:256-10=246。5. 设振荡频率为 12MHz,如果用定时/计数器 T0 产生周期为 100ms 的方波,可以选择哪几种方式,其初值分别设为多少?答:只能选择方式 1,初值为 65536-50000=15536。6. 何为同步通信?何为异步通信?各自的特点是什么?答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单位,未传送时线路处于空闲状态,空闲线路约定为高电平“1”。特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符 , 传 送 时 须 在 前 面 加 上 一 个 或 两 个 同 步 字 符 , 后 面 加 上 校 验 字 符 。 特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复杂,传送速度快。7. 单工、半双工和全双工有什么区别?答:单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数据线,但信 息 可 以 分 时 双 向 传 送 ; 全 双 工 方 式 有 两 根 数 据 线 , 在 同 一 个 时刻 能 够 实 现 数 据 双 向 传 送。8. 设某异步通信接口,每帧信息格式为 10 位,当接口每秒传送 1000 个字符时,其波特率为多少?答:10000 波特9. 串行口数据寄存器 SBUF 有什么特点?Error! No text of specified style in document.28答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器 SBUF(串行口数据寄存器),执行 MOV SBUF,A 发送时为发送数据寄存器,执行 MOV A, SBUF 接收时为接收数据寄存器。10. MCS-51 单片机串行口有几种工作方式?各自特点是什么?答:有四种工作方式,分别是方式 0、方式 1、方式 2 和方式 3。其中:方式 0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展 I/O接口。方式 1,称为 8 位的异步通信方式,通常用于双机通信。方式 2 和方式 3,称为 9 位的异步通信方式,通常用于多机通信。11. 说明 SM2 在方式 2 和方式 3 对数据接收有何影响。答:通过 SM2 对方式 2 和方式 3 数据接收进行控制, SM2=1,那么只有接收的第 9 位为“1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 目标考试题及答案
- 昆曲考试题及答案
- 中级财务会计(菏泽学院)知到智慧树答案
- 中级日语II(山东联盟)知到智慧树答案
- 小学数学教师综合素质评比活动专业知识测试卷含答案
- 狂犬病暴露预防处置培训考核试题及答案(伤口处置人员)
- 压力性损伤的预防与护理相关试题(附答案)
- 2025担保抵押影视投资合同范本
- 2025版高品质公寓房屋买卖合同文本下载
- 2025年度智能家居房产广告设计与客户体验提升合同
- 北师大版五年级下册数学口算题题库1200道带答案可打印
- 托管老师岗前培训
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 220kV变电站一次系统设计毕业论文
- 松下panasonic-视觉说明书pv200培训
- 崔允漷教授学历案:微培训课件设计
- 《资本论》讲稿课件
- 燃气具安装维修工(中级)教学课件完整版
- 护理品管圈QCC之提高手术物品清点规范执行率
- 高尔夫基础培训ppt课件
- 微型钢管桩专项施工方案
评论
0/150
提交评论