《单片机原理与应用及C51程序设计第三》由会员分享,可在线阅读,更多相关《单片机原理与应用及C51程序设计第三(52页珍藏版)》请在金锄头文库上搜索。
1、单片机原理与应用及 C51 程序设计(第三版)课后答案第一章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. 指明下列字符在计算机内部的表示形式。AsENdf
2、JFmdsv120答:41H 73H 45H 4EH 64H 66H 4AH 46H 6DH 64H 73H 76H 31H 32H 30H3. 什么是单片机,答:单片机是把微型计算机中的微处理器、存储器、I/O 接口、定时器/计数 器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算 机。因而被称为单片微型计算机,简称为单片机。4. 单片机的主要特点是什么,答:主要特点如下:1)2)3)4)5)在存储器结构上,单片机的存储器采用哈佛(Harvard)结构在芯片引脚上,大部分采用分时复用技术在内部资源访问上,采用特殊功能寄存器(SFR 的形式在指令系统上,采用面向控制的指令系统内
3、部一般都集成一个 xx 的串行接口6)单片机有很强的外部扩展能力5. 指明单片机的主要应用领域。答:单机应用:1)工业白动化控制;2)智能仪器仪表;3)计算机外部设备和智能接 口;4)家用电器多机应用:功能弥散系统、并行多机处理系统和局部网络系统。第二章1. MCS-51 单片机由哪几个部分组成,答:MCS-51 单片机主要由以下部分组成的:时钟电路、中央处理器(CPU)存 储器系统(RAM 和 ROM)、定时/计数器、并行接口、串行接口、中断系统及一些 特殊功能寄存器(SFR)2. MCS-51 的标志寄存器有多少位,各位的含义是什么,答:MCS-51 的标志寄存器 PSW 有 8 位;DD
4、DDDDDD7 6 5 4 3 2 1 0AFRROC- P C 0 S1SO V含义如下:C(PSW.7 健位或借位标志位。AC(PSW.6)tt 助进位或借位可标志位。F0(PSW.5)用户标志位。是系统预留给用户白己定义的标志位。RS 木 RS0(PSW.4 PSW.3)寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。OV(PSW.2 脯出标志位。在加法或减法运算时,如运算的结果超出记录指令执行后累加器 A 中 1 的个数的奇偶性。8 位二进制数的范围,贝 U OV 置 1,标志溢出,否则 OV 清零。P(PSW.0 质偶标志位。用 于若累加器 A 中
5、1 的个数为奇数,则 P 置位,若累加器 A 中 1 的个数为偶 数,则P 清零。其中 PSW. 1 未定义,可供用户使用。3. 在 8051 的存储器结构中,内部数据存储器可分为几个区域 ,各有什么特点,答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般 RAM 区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区, 00H,1FH 单元,可用 R0,R7 等 8 个寄存器访问;位寻址区,20H,2FH 单元,可按位 方式访问;一般 RAM 区,30H,7FH 单元;堆栈区,可从 08 到 7F 单元;特殊功能寄 存器区位于80H,FFH元。4. 什么是堆栈,说明
6、 MCS-51 单片机的堆栈处理过程。答:堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS-51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据 是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,针指向单元的数据取出,然后再把 SP 指针的内容白动减 1。5. MCS-51 单片机有多少根 I/O 线,它们和单片机的外部总线有什么关系,答:MCS-51 单片机有 32 根 I/O 线,由 P0 口经地址锁存器提供低 8 位(A7,A0), P2 口提供高 8 位(A15,A8 而形成。数据总线宽度为 8 位,由 P0 口直接提供。控制 总线由第二功
7、能状态下的 P3 口和 4 根独立的控制线 RST EA、ALE 和 PSEN 成。6. 什么是机器周期,MCS-51 单片机的一个机器周期包括多少个时钟周期,答:机器周期:机器周期是单片机的基本操作周期,每个机器周期包含S1、S2、S66个状态,每个状态包含两拍 P1和P2,每一拍为一个时钟周期(振荡周期)。 因此,一个机器周期包含 12 个时钟周期。7.如果时钟周期的频率为 12MHz,那 么 ALE 信号的频率为多少,答:2MHZ第三章1(在 MCS-51 单片机中,寻址方式有几种,其中对片内 RAM 可以用哪几种寻址方式,对片外 RAM 可以用哪几种寻址方式,SP 指针的内容先白动加
8、1,然后再把数据存入到 SP 指针指向的单元;出栈时,先把 SP 指答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻 址)、寄存器数寻址 (寄存器寻址) 、存储器数寻址 (直接寻址方式、寄存器间接寻 址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内 RAM 寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外址有:寄存器间接寻址方式。2(在对片外 RAM 单元寻址中,用 Ri 间接寻址与用 DPTR 间接寻址有什么区RAM 寻别,答:片外数据存储器寻址中,用 Ri 间接寻址只能访问低端的 256 字节单元,用 DPTR 作指针间接访问可访问整个 64
9、K 字节。3(在位处理中,位地址的表示方式有哪几种,答:1(直接位地址(00H0FFH)例如:20H2(字节地址带位号。例如:20H.3 表示 20H 单元的 3 位。3(特殊功能寄存器名带位号。例如:P0.1 表示 P0 口的 1 位。4(位符号地址。例如:TR0 是定时/计数器 T0 的启动位4(写出完成下列操作的指令。(1) R0 的内容送到 R1xx。MOV A, R0MOV R1, A(2) 片内 RAM 的 20H 单元内容送到片内 RAM 的 40H 单元中。MOV 40H, 20H(3) 片内 RAM 的 30H 单元内容送到片外 RAM 的 50H 单元中。MOV A, 30
10、HMOV 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, A(6) 片外 RAM 的 1000H 单元内容送到片外 RAM 的 4000H 单元中MOV DPTR #1000HMOVX A, DPTRMOV DPTR #4000HMOV DPTR A(7) ROM 的 1000H 单元内容送到片内
11、RAM 的 50H 单元中。MOV A, #0MOV DPTR #1000HMOVC A A+DPTR(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答:前者源操
12、作数是寄存器寻址,后者源操作数寄存器间接寻址。(4) MOVXA R1 和 MOVX A DPTR答:前者源操作数是访问片外数据存储器低 256 字节,后者源操作数访问片 外数据存储器整个64K 字节。(5)MOVX A DPT 漩 MOVC A A+DPTR答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储wr。6(设片内 RAM 的(20H)=40H, (40H)=10H, (10H)=50R (P1)=0CAH 分析下列 指令执行后片内 RAM 的 20H、40H、10H 单元以及 P1、P2 中的内容。MOV R0, #20HMOV A, R0 ;A=40HMOV R1
13、, A ;R1=40HMOV A, R1 ;A=10HMOV R0, P1 ;(40H)=0CAHMOV P2, P1 P2=0CAHMOV 10H, A (10H)=10HMOV 20H, 10H (20H)=10H结果:(20H)=10T (10H)=10Hi (40H)=0CAH P2=0CA 峭日 P1=0CAH 7 巳知(A)=02H, (R1)=7FH (DPTR)=2FFCH 片内 RAM(7FH)=70H 片外 RAM(2FFEH)=11HROM(2FFEH)=64H 试分别写出以下各条指令执行后目标单元 的内容。(1)MOV A, R1 结果:累加器 A 等于 70H (2)
14、MOVX DPTR A 结果:片外RAM(2FFCI#元等于 02H (3)MOVC A A+DPTR 吉果:累加器 A 等于 64H (4)XCHDA R1 结果:累加器 A 等于 00H,片内 RAM(7FH 卑元等于 72H8(已知:(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
15、, 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 80HA ;片内 RAM(80H 痔于 14H 9 股(A)=83H, (R0)=17R (17H)=34H,分 析当执行完下面指令段后累加器 A、R(X 17H 单元的内容。ANL A #17H ;A=03HORL 17H A ;(17H)=37HXRL A R0;A=34HCPL A ;A=CBH结
16、果:A=CBH (R0)=17H (17H)=37H 10 写出完成下列要求的指令。(1) 累加器 A 的低 2 位清零,其余位不变。ANLA #11111100B(2) 累加器 A 的高 2 位置“1,”其余位不变。ORL A #11000000B(3) 累加器的高 4 位取反,其余位不变。XRLA #11110000B(4) 累加器第 0 位、2 位、4 位、6 位取反,其余位不变。XRL A #01010101B11(说明 LJMP 指令与 AJMP 指令的区别,答:LJMP 指令后面提供的是 16 位目标地址,所以可以转移到 64KB 程序存储 器的任意位置,缺点是:执行时间长,字节数
17、多。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.1 P1.2)
18、 /P1.的逻辑功能。程序: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)=12R (1001H)=34R (1002H)=00R (1003H)=00, (1004H)=00,(1005H)=67H, (1006H)=55R (1007H)=87R (1008H)=00H 15 俄编一段程序,将 片内RAM 的 20H、21H、22H 单元的内容依次存入片外 RAM 的 20
19、H、21H、22H 中。程序:MOV R0, #20HMOV R2, #03HLOOP:MOV A R0MOVX R0 AINC R0DJNZ R2 LOOPSJMP $16(编程实现将片外 RAM 的 2000H2030H 单元的内容,全部搬到片内 RAM的 20H 单元开始位置,并将源位置清零。程序:MOV R0, #20HMOV DPTR #2000H MOV R2 #30HLOOP: MOVX A DPTRMOV R0, AMOV A, #00MOVX DPTR AINC DPTR INC R0DJNZ R2 LOOPSJMP $17(编程将片外 RAM 的 1000H 单元开始的 1
20、00 个字节数据相加,结果放于中。程序:MOV DPTR #1000H MOV R2 #100MOV R7, #00MOV R6, #00LOOP: MOVX A DPTRADD A, R6MOV R6, AMOV A, R7ADDC A #0R7R6MOV R7, AINC DPTRDJNZ R2 LOOPSJMP $18(编程实现 R4R3 R2 结果放于 R7R6R 呻。程序:ORG 0100HMUL1:MOV A, R2MOV B, R3MUL AB ;R2 R3 结果的低字节直接存入积的 R5MOV R5, A ;结果的高字节存入 R6 中暂存起来 MOV R BMUL2:MOV A
21、, R2MUL AB ;R2 R4 结果的低字节与 R6 相加后,再存入 R6 中ADD A R6MOV R6, AMOV A, B ;结果的高字节加上进位位后存入 R7 中 ADDC A #00MOV R7, ASJMP $19(编程实现把片内 RAM 的 20H 单元的 0 位、1 位,21H 单元的 2 位、22H 单元的 4 位、5位,23H 单元的 6 位、7 位,按原位置关系拼装在一起放于 R2 中。程序:MOV C, 20H.0MOV A.0, C3 位,MOV C, 20H.1MOV A.1, CMOV C, 21H.2MOV A.2, CMOV C, 21H.3MOV A.3
22、, CMOV C, 22H.4MOV A.4, CMOV C, 22H.5MOV A.5, CMOV C, 23H.6MOV A.6, CMOV C, 23H.7MOV A.7, CMOV R2, A20(用查表的方法实现一位十六进制数转换成 ASCII程序:(设一位十六进制数放在 R2 中,轮换的 ASCI 也放于 R2中)C16STASC:MOV DPT F#TABMOV A, R2MOVC A A+DPTRMOV R2, ARETTAB:DB 30H 31H, 32H, 33H, 34H, 35H, 36H, 37HDB 38H, 391H, 41H, 42H, 43H, 44H, 45
23、H, 46H21(编程统计从片外 RAM2000H 开始的 100 个单元中“(的个数放于 R2 中程序:MOV DPTR #2000HMOV R3, #100MOV R2, #00LOOP: MOVX A DPTRJNZ NEXTINC R2 NEXT:INC DPTRDJNZ R3 LOOPSJMP $第四章1. C 语言有哪些特点,答:C 语言具有以下特点:1)语言简洁、紧凑,使用方便、灵活2)运算符丰富3)语言的各种数据结构计5)可以直接对计算机硬件进行操作6)生成的目标代码质量高,程序执行效率高数据结构丰富,具有现代化4)可进行结构化程序设7)可移植性好2. 有哪些数据类型是 MCS
24、-51 单片机直接支持的 溶:MCS-51 单片机直接支持 的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型char、短整型 short、整型 int、长整型 long、浮点型 float、双精度型 double、特 殊功能寄存器型和位类型,其中 char 型与 short 型相同,float 型与 double 型相 同。组合数据类型有数组类型、结构体类型、共同体类型和枚举类型,另外还 有指针类型和空类型。3. C51 特有的数据类型有哪些,答:C51 特有的数据类型有特殊功能寄存器型和位类型。 4. C51 中的存储器 类型有几种,它们分别表示的存储器区域是什么,答:C5
25、1 中的存储器类型有 6 种,分别如下:data:直接寻址的片内 RAM 低 128B,访问速度快bdata:片内 RAM 的可位寻址区(20H,2FH允许字节和位混合访问 idata:间接 寻址访问的片内 RAM,允许访问全部片内RAM pdata用 Ri间接访问的片外RAM 低 256Bxdata:用 DPTR 间接访问的片外 RAM,允许访问全部 64KB 片外 RAM code 程 序存储器 ROM 64KB 空间5. 在 C51 中,bit 位与 sbit 位有什么区别,答:bit 位类型符用于定义一般的位变量。存储器类型只能是idata,只能是片内 RAM 的可位寻址区,严格来说只
26、能是 bdata。sbit 位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需 指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特 殊功能寄存器名带位号。6. 在 C51 中,通过绝对地址来访问的存储器有几种,答:通过绝对地址来访问存储器有三种方法:1.使用 C51 运行库中预定义宏。2.通过指针访问。3.使用 C51 扩展关键字_at_7. 在 C51 中,中断函数与一般函数有什么不同,答:中断函数在定义时后面带interrupt m 修饰符,m 的取值为 0,31,对应的中断情况如下:0 - 外部中断 0,bdata、data、1定时/计数器 T0, 2外部中
27、断 1, 3定时/计数器 T1, 4串行口中 断,5定时/计数器 T2,其他值预留。编写 MCS-51 中断函数需要注意如下几点。(1) 中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(2) xx 函数没有返回值。(3) 在任何情况下都不能直接调用中断函数(4) 如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。(5) C51 编译器对中断函数编译时会白动在程序开始和结束处加上相应的内容。(6) C51 编译器从绝对地址 8m+3 处产生一个中断向量,其中 m 为中断号, 也即 interrupt 后面的数字。该向
28、量包含一个到中断函数入口地址的绝对跳转。(7)中断函数最好写在文件的尾部,并且禁止使用extern 存储类型说明。防止其他程序调用。8.类型和数据类型,写出下列变量的说明形式。定义字符变量 val1。char data val1;在 idata 区定义整型变量 val2。int idata val2;(3)在 xdata 区定义无符号字符型数组 val34。unsigned char xdataval34;在 xdata 区定义一个指向 char 类型的指针 px。char xdata *px;(5)定义可寻 址位变量 flag。bit flag;按给定的存储(1)在 data 区(6) 定义
29、特殊功能寄存器变量 P3。sfr P3=0xa0;(7) 定义特殊功能寄存器变量 SCON sfr SCON=0x98;(8) 定义 16 位的特殊功能寄存器 T0。sfr16 T0=0x8a;9.达式的结果,设写出下列关系表达式或逻辑表a=3, b=4, c=5。(1) a+bc&b= =c 结果:假 a|b+c&b-c 结果:真!(ab)&!c|1 结果:真!(a+b)+c-1&b+c/2 结果:假 10.写出下列 C51 程序的执行结果。(1)#include X+UHszNd(XNWIP+X汶HpN汶8p汶HuAcHAX-(XNWIP汶p汶p汶UuszcdAXUIszdnz60nnx-
30、(XNWIP汶p汶p汶ucA-1px汶pn汶zu60cnAUnszxdU668CA热U-EUQZMKpnouLLgs6883AqoBsv9_。U汶(D-(XNWIPextern serial_initial();main() ( int x,y,z;serial_initial();printf(input data x,y?n);scanf(%d %d,&x,&y);printf(n x y xy xy x=y x!=y x=y);printf(n);printf(n%3d%3d,x,y);z=xy; printf(%5d,z);z=xy; printf(%5d,z);z=x=y; prin
31、tf(%5d,z);z=x!=y; printf(%5d,z);z=x=y; printf(%5d,z);while(1);执行结果:input data x,y?1 2x y xy xy x=y x!=y x=y 1 2 1 1 0 0 1 0 (3)#include =ywh3耍prMfn=)辞)prmff(=Thafisa=-rr)prmffrr)-2Thafis。二a=exCDmserialmxia-();mam()#mc-udeAsso.hvW卬b;unsignedWxyserialmxia-o;_*aa55bnaa55Xnaa55ynaa55*54aabnd52aXn54aayn5
32、52aThafis3辞-a=prMfcrrwprMfcrrwprmff(=Thafisxn汶4xyna汶=4.xw=)awhb耍示“B;输入“狼示“U 输入“4 显示“以输入“玮束。参考程序:#include #include void main(void)unsigned char x;SCON=0x52; /庸口初始化 TMOD=0x20;TH1=0XF3;TR1 = 1;while(1)printf(input x:n); / 输出提示信息 scanf(%c”,&x); switch(x)case 1:printf( An);break;case 2:printf( Bn);break;
33、入“1 显示是终止整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:); / 输出提示
34、信息 scanf(%c,%c,%c”,&x,&y,&z);printf(n);if (xy) m=x;x=y;y=m;if (yz) m=y;y=z;z=m;if (xy) m=x;x=y;y=m;printf(output %c,%c,%cn, x,y,z); 输出 while(1);14.用 3 种循环结构编写程序实现输出 1 到 10 的平方之和。参考程序:(1)while 循环#include 包含特殊功能寄存器库#include 包含 I/O 函 数库void main(void) / 主函数int i,s=0; /定义整型变量i=1;SCON=0x52; /聿口 初始化TMOD=0
35、x20;TH1=0XF3;TR1 = 1;while (i=10) /累加 1 至 V 10 的平方之和在 s 中s=s+i*i;i+;printf(1 至 V 10 的平方之和=%dn”,s);while(1);(2)do while 循环#include 包含特殊功能寄存器库#include void main(void) / 主函数int i,s=0; 定义整型变量 i=1;SCON=0x52; /庸口初始化 TMOD=0x20;TH1=0XF3;TR1 = 1;I/O 函包含数库do 累加 1 到 10 的平方之和在 s 中s=s+i*i;i+;while (i=10);printf(
36、1 至 V 10 的平方之和=%dn”,s); while(1);for 循环#include 包含特殊功能寄存器库#include 包含 I/O 函 数库void main(void) / 主函数int i,s=0; 定义整型变量 SCON=0x52; /串口初始化 TMOD=0x20;TH1=0XF3;TR1=1;for (i=1;i=10;i+) s=s+i*i; 累加 1 至 10 的平方之和在 s 中 printf(1 至 V 10 的平方之和=%dn,s);while(1);15.对一个由 5 个元素组成的无符号字符数组按由小到大的顺序进行排序。参考程序:#include 包含特殊
37、功能寄存器库#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”,&f0,&f1,&f2,&f3,&f4);printf(n);for (i=0;i5;i+)for (j=0;jfj+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.用指针实
38、现,输入 3 个无符号字符数据,按由大到小的顺序输出。参考 程序:#include 包含特殊功能寄存器库#include 包含 I/O 函 数库main()(unsigned char x,y,z;unsigned char *p,*p1,*p2,*p3; SCON=0x52; 串口初始化 TMOD=0x20;TH1=0XF3;TR1 = 1;printf(input x,y and z:n); scanf(%c,%c,%c”,&x,&y,&z);printf(n);p1=&x;p2=&y; p3=&z;if (*p1*p2) p=p1;p1=p2;p2=p; if (*p2*p3) p=p2
39、;p2=p3;p3=p;if (*p1*p2)p=p1;p1=p2;p2=p;printf(max to min is:%c,%c,%cn,*p1,*p2,*p3); while(1);17.有 3 个学生,每个学生都包括学号、姓名和成绩,要求找出成绩最高的 学生的姓名和成绩。参考程序:#include 包含特殊功能寄存器库#include 包含 I/O 函 数库struct studentunsigned char number10;unsigned char name10;unsigned int grade;p13;main()unsigned char i,j=0;SCON=0x52;
40、 /庸口初始化 TMOD=0x20;TH1=0XF3;TR1 = 1;printf(input 3 studend number,name and grade:n); for (i=0;i3;i+)(printf(input number:n);scanf(%s”,p1i. number);printf(input name:n);scanf(%s”,p1i.name);printf(input grade:n);scanf(%d”,&p1i.grade);for (i=1;ip1j.grade) j=i;printf(成绩最高的学生是:s 成绩是:%d,p1j.name,p1j.grade)
41、;printf(n);while(1);第六章1(单片机 C 语言与汇编语言混合编程有哪几种方式,通常米用什么方式,答:单 片机C 语言和汇编语言混合编程分为汇编中调用编,通常使用的是在 C51 程序中引用汇编。在 C51 程序中使用汇编语言有两种情况:一种 是汇编程序部分和 C51 程序部分为不同的模块,或不同的文件,通常由C51 程序调用汇编程序模块的变量和函数(也可称为子程序或过程) ;另一种是嵌入式汇编,即在 C51 程序中嵌入一段汇编语言程序。2 (简 述 C51程序调用汇编程序时如何实现参数传递。答:C51 中调用汇编程序进行参 数传递时都必须严格遵守 C51 函数的参数和返回值的
42、相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51 中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的过固定存储区传递。;第二种是通C51 函数和 C51 程序中引用汇3(简述嵌入式汇编的实现方法。答:在 C51 程序中嵌入汇编程序通常的处理方法如下。第一步:在 C 文件中以如下方式嵌入汇编程序。第二步:在 Keil C51 软件的 Project 窗口右击嵌入汇编程序的 C 文件,在弹出 的快捷菜单中选择 Options for .命令,选中右边的 Generate Assembler SRCFile 和 AssembleSRC Fi
43、l 复选框,使检查框由灰色变成黑色(有效)状态。第三步:根据 选择的编译模式,把相应的库文件(如 Small 模式时,是 KeilC51LibC51S.Lib 加 入到工程中,该文件必须作为工程的最后文件。4(简述 C51 中调用汇编程序的实现方法。答:编写为 C51 调用的汇编程序,参数须按规定的寄存器或存储器传送,程 序格式有相应的规则,这些规则比较繁琐,为了便于处理,在实际中我们往往 先用 C51 写出这个程序的主体,然后用 SRC 空制指令编译产生 asm 文件,修改 这个 asm 文件得到我们所要的汇编函数。处理过程具体如下。第一步:先用 C 语言程序编写出程序框架,如文件名为 a1
44、.c(注意参数)。第二步:在 Keil C51 的 Project 窗口中右击该 C 语言文件,在弹出的快捷菜单 中选择Options for .,右边的 Generate Assembler SRCFiie Assemble SRCFile 使检查框由灰色变成黑色(有效)状态;第三步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是KeilC51LibC51S.Lib 加入工程中,该文件必须作为工程的最后文件。库文件与 编译模式的关系如前面。第四步:编译后将会产生一个 SRC 勺文件,将这个文件扩展名改为 ASMI。这 样就形成了可供 C51 程序调用的汇编程序。随后可在该文件
45、的代码段中加入所 需的指令代码。第五步:将该汇编程序与调用它的主程序一起加到工程文件中,这时工程文 件中不再需要原来的 C 语言文件和库文件,主程序只需要在程序开始处用 EXTERN所调用的汇编程序中的函数作声明,在主程序中就可调用汇编程序中 的函数了。第七章1.何为 准双向 I/O 接口”,在 MCS-51 单片机的四个并口中,哪些是 准双向 I/O 接口”,答:准双向 I/O 接口是能实现输入输出功能,但在使用时只能从输入和输出 中选择一个。MCS-51 单片机的四个并口中 P1、P2、P3 是准双向 I/O 接口。2. 80C51单片机内部有几个定时/计数器,它们由哪些功能寄存器组成,怎
46、样实 现定时功能和计数功能,答:80C51 单片机内部有两个 16 位的可编程定时/计数器,由TH0,TL0,TH1,TL1,TMO0n TCON 功能寄存器组成。通过 TMOD 中的 C/T 位选 择对机器周期计数实现计数功能,选择对外部脉冲计数实现计数功能。3. 定时/计数器 T0 有几种工作方式,各白的特点是什么,答:有四种工作方式,特点见下表:M1 M0 工作方式方式说明0 0 0 13 位定时/计数器0 1 1 16 位定时/计数器1 0 2 8 位白动重置定时/计数器1 1 3 两个 8 位定时/计数器(只有 T0 有)4. 定时/计数器的四种工作方式各白的计数范围是多少,如果要计
47、 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=24& 5.设振荡频率为 12MHz,如果用定时/计数器 T0 产生周期为 100ms 的方波,可以选择哪几种方 式,其初值分别设为多少,答:只能选择方式 1,初值为 65536-50000=15536. 何为同步通信,何为异步
48、通信,各白的特点是什么,答:异步通信方式的特点是数据在线路上传送时是以一个字符(字节)为单 位,未传送时线路处于空闲状态,空闲线路约定为高电平“1:特点是对发送时钟和接收时钟的要求相对不高,线路简单,但传送速度较慢。同步通信方式的特点是数据在线路上传送时以字符块为单位,一次传送多个字符,传送时须在前面加上一个或两个同步字符,后面加上校验字符。特点是对发送时钟和接收时钟要求较高,往往用同一个时钟源控制,控制线路复 杂,传送速度快。7. 单工、xx 和 xx 有什么区别,答:单工方式只有一根数据线,信息只能单向传送;半双工方式也只有一根数 据线,但信息可以分时双向传送;全双工方式有两根数据线,在同
49、一个时刻能够实现数据双向传送。8. 设某异步通信接口,每帧信息格式为 10 位,当接口每秒传送 1000 个字符 时,其波特率为多少,答:10000xx9. 串行口数据寄存器 SBUF什么特点,答:发送数据寄存器和接收数据寄存器合起用一个特殊功能寄存器 SBUF 串 行口数据寄存器),执行 MOV SBUF,戚送时为发送数据寄存器,执行 MOV A, SBUF 接收时为接收数据寄存器。10. MCS-51 单片机串行口有几种工作方式,各白特点是什么,答:有四种工作方式,分别是方式 0、方式 1、方式 2 和方式 3。其中:方式0,称为同步移位寄存器方式,一般用于外接移位寄存器芯片扩展方式 1,
50、称为 8 位的异步通信方式,通常用于双机通信。方式 2 和方式 3,称为 9 位的异步通信方式,通常用于多机通信。11. 说明 SM2 在方式 2 和方式 3 对数据接收有何影响。答:通过 SM2 对方式 2 和方式 3 数据接收进行控制,SM2=1,那么只有接收 的第 9 位为I/O 接口。“1 牙接收有效。如 SM2=0,接收的第 9 位无论为 1 还是 0 都接收有 效。12. 怎样来实现利用串行口扩展并行输入/输出口 ,答:利用串行口在方式 0 时,当外接一个串入并出的移位寄存器,就可以扩 展并行输出口 ;当外接一个并入串出的移位寄存器时,就可以扩展并行输入口。13. 什么是 xx、x
51、x 允许和 xx 屏蔽,答:在计算机中,由于计算机内外部的原因或软硬件的原因,使CPU 从当前正在执行的程序中暂停下来,而白动转去执行预先安排好的为处理该原因所对应的服务程序。执行完服务程序后,再返回被暂停的位置继续执行原来的程序,这个过程称为中断,实现中断的硬件系统和软件系统称为中断系统。中断允许是允许中断请求送 CPU 产生中断,中断屏蔽是禁止中断请求信号送 CPU 产 生中断。14. 8051有几个中断源,中断请求如何提出,INT0INT1 答:MCS-51 单片机提供 5 个硬件中断源:两个外部中断源(P3.2 湘 (P3.3),两个定时/计数器 T0 和 T1 中断;1 个串行口中断
52、。INT0INT1 外部中断源和的中断请求信号从外部引脚P3.2 和 P3.3 输入;两个定时/计数器 T0 和 T1 的溢出中断 TF0 和 TF1 定时/计数器 T0 感 T1)溢出时提出; 串行口中断由发送中断标志 T1 和接收中断标志 R1 产生。15. 8051的中断源 中,哪些中断请求信号在中断响应时可以白动清除理,答:工作在边沿触发方式下的两个外部中断源和两个定时 /计数器中断中断请 求信号在中断响应时可以白动清除,工作在电平触发方式下的两个外部中断源和串行口中断不能白动清除。工作在电平触发方式下的两个外部中断源的中断请求信号通过外加硬件和加软件的方式清除,串行口中断标志 T1
53、和标志 R1 完 全由软件清除。16. 8051 的中断优先级有几级,在形成中断嵌套时各级有何规定,答:8051 的 中断优先级有两级;形成中断嵌套时规定(1)正在进行的中断过程不能被新的同级 或低优先级的中断请求所中断,直到该中断服务程序结束,返回了主程序且执行了主程序中的一条指令后,CPU 才响应新的中断请求。,哪些不能白动清除,应如何处(2) 正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现 两级中断嵌套。(3) CPU 同时接收到几个中断请求时,首先响应优先级最高的中断请求。17.设 8051 的 P1 中各位接发光二极管,分别用汇编语言和 C 语言编程实现 逐个轮流点亮
54、二极管,并循环显示。参考程序:ORG 0000HLJMP MAINORG 0100H 主程序 MAIN: MOV A, #01H LOOP:MOV P1 ACALL DELAYRL ASJMP LOOPSJMP $DELAY:MOV R7 #0FFHDJNZ R7 $RETENDC 语言程序:#include 包含特殊功能寄存器库void delay(unsigned int x);void main()unsigned char i,j;while(1)(i=01;for (j=0;j8;j+)(P1=i;delay(100);i=i*2;void delay(unsigned int x)
55、(unsigned char j;while(x-)(for (j=0;j125;j+);18. 8051 系统中,已知振荡频率为 12MHz,用定时/计数器 T0,实现从 P1.0 产生周期为2ms 的方波。要求分别用汇编语言和 C 语言进行编程。解:分析:从 P1.0 输出周期为2ms 的方波,只须 P1.0 每 1ms 取反一次则可。当系统时钟为12MHZ,定时/计数器 T0 工作于方式 1 时,最大的定时时间为 65.536ms, 满足 1ms 的定时要求,方式控制字应设定为 00000001B(01H)定时 1ms,计数值 N 为 1000,初值X=65536-1000=64536
56、则TH0=FCH TL0=18H采用 xx 处理方式:程序如下:ORG 0000HLJMP MAINORG 000BH ;xXt 理程序MOV TH0, #0FCHMOV TL0, #18HCPL P1.0RETIORG 0100H 主程序 MAIN: MOV TMOD, #01HMOV TH0, #0FCHMOV TL0, #18HSETB EASETB ET0SETB TR0SJMP $ENDC 语言程序:#include 包含特殊功能寄存器库sbit P1_0=P1A0;void main()(TMOD=0x01;TH0=0xFC;TL0=0x18;EA=1;ET0=1;TR0=1;wh
57、ile(1);void time0_int(void) interrupt 1 / 中断服务程序(TH0=0xFC;TL0=0x18;P1_0=!P1_0;19. 8051 系统中,已知振荡频率为 12MHz,用定时/计数器 T1,实现从 P1.1 产生周期为2s 的方波。要求分别用汇编语言和 C 语言进行编程。解:从 P1.1 产生 2s 的方波,应产生 500ms 的周期性的定时,定时到对 P1.1 取反就可实现。由于定时时间较长,一个定时/计数器 T1 不能直接实现,采用定时/计数器 T1 产生 周期性为10ms 的定时,然后用一个寄存器 R2 对 10ms 计数 100 次来实现。系统
58、时钟为 12MH 乙定时/ 计数器 T1定时 10ms,计数值 N为 10000,只能选方式 1,方式控制字为 00010000B(10H初值 X:X=65536-10000=55536=1101100011110000 项 U TH1 = 11011000B=D8HTL1 = 11110000B=F0H 定时/计数器 T1 采用中断处理方式。汇编程序:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN: MOV TMOD, #10HMOV TH1, #0D8HMOV TL1, #0F0HMOV R2, #00HSETB EASETB ET1S
59、ETB TR1SJMP $INTT1: MOV TH1 #0D8HMOV TL1, #0F0HINC R2CJNE R2 #64H, NEXTCPL P1.1MOV R2, #00HNEXT: RETIENDC 语言程序:#include 包含特殊功能寄存器库(TMOD=0x10;sbit P1_1=P1A1; char i;void main()TH1=0xD8;TL1=0xf0;EA=1;ET1 = 1;i=0;TR1 = 1;while(1);void time0_int(void) interrupt 3 / 中断服务程序(TH1=0xD8;TL1=0xf0;i+;if (i= =10
60、0) (P1_1=! P1_1;i=0;20. 8051 系统中,已知振荡频率为 12MHz,用定时/计数器 T1,实现从 P1.1 产生高电平宽度为10ms,低电平宽度为 20ms 的矩形波。要求分别用汇编语言和 C 语言进行 编程。解:本题处理方式有多种,这里采用对定时/计数器 T1 形成 10ms 周期定 时,用 R2 对10ms 计数,当计到 1,则对 P1.1 置 1,当计到 2 和 3,则对 P1.1 置 0 来实现。用定时/计 数器 T1 形成10ms 周期定时见上题。程序如下:ORG 0000HLJMP MAINORG 001BHLJMP INTT1ORG 0100HMAIN:
61、 MOV TMOD, #10HMOV TH1, #0D8HMOV TL1, #0F0HMOV R2, #00HSETB EASETB ET1SETB TR1SJMP $INTT1: MOV TH1 #0D8HMOV TL1, #0F0HINC R2CJNE R2#01H, NEXTSETB P1.1SJMP EXIT NEXT: CJNE, R#02H, NEXT1CLR P1.1SJMP EXIT NEXT1:CJNE,R203H, NEXTSETB P1.1MOV R2, #00 EXIT: RETIENDC 语言程序:#include 包含特殊功能寄存器库sbit P1_1=P1A1;
62、char i;void main()(TMOD=0x10;TH1=0xD8;TL1=0xf0;EA=1;ET1 = 1;i=0;TR1=1;while(1)(if (i= =0) (P1_1=1;if (i= =1) (P1_1=0;if (i= =2) (P1_1=0;void time0_int(void) interrupt 3 / 中断服务程序(TH1=0xD8;TL1=0xf0;i+;if (i= =3) (i=0; 21.用 8051 单片机的串行口扩展并行 I/O 接口,控制 16 个发光二极管依次 发光,画出电路图,用汇编语言和 C 语言分别编写相应的程序。解:采用在串口连接两
63、个 CD4094 来实现,电路图如下:8051RXD DATA DATATXD CLK STB STBCLK P1.0程序如下;ORG 0000HLJMP MAINORG 0100H MAIN: MOV SCO,N#00HMOV R4, #10HMOV R3, #00HMOV R2, #01HCLR P1.0START:MOV A R3MOV SBUF A LOOP: JNB TI LOOPMOV A, R2MOV SBUF ALOOP1:JNB TI LOOP1SETB P1.0ACALL DELAYCLR TICLR CMOV A, R2RLC AMOV R2, AMOV A, R3RLC
64、 AMOV R3, ACLR P1.0DJNZ R4 START1SJMP MAIN DELAY:MOV R7#05H LOOP2:MOV R6 #0FFH LOOP1:DJNZ R6LOOP1DJNZ R7 LOOP2RETENDC 语言程序:#include void delay(unsigned int x); unionunsigned int word;structunsigned char high;unsigned char low;bytes;number;void main()int i;SCON=0x00;while(1)number.word=0x01;for (i=0;
65、i16;i+)SBUF=number.bytes.low;while(!TI);TI=0;SBUF=number.bytes.high;while(!TI);TI=0;delay(10);number.word=number.word*2;void delay(unsigned int x) unsigned char j;while(x-)for (j=0;j125;j+);22.用汇编语言编程设计一个 8051 双机通信系统,将 A 机的片内 RAM 中30H3FH 的数据块通过串行口传送到 B 机的片内 RAM 的 40H,4FH 中,并画出电路图。解:线路连接如图示。所8051 805
66、1 RXD TXIZ 机甲机 TXD RXDGND GND分析:甲、乙两机都选择方式 1 即 8 位异步通信方式,最高位用作奇偶校 验,波特率为 1200bps,甲机发送,乙机接收,因此甲机的串口控制字为40H,乙机的串口控制字为 50H。由于选择的是方式 1,波特率由定时/计数器 T1 的溢出率和电源控制寄存器PCON 中的 SMOD 位决定,则需对定时/计数器 T1 初始化设 SMOD=Q 甲、乙两机的振荡频率为 12MHz,由于波特率为 1200bpso 定 时/计数器T1 选择为方式2,则初值如下。SMOD 初值=256 -f X 2 /(族特系 X 32) osc=256-12000
67、000/(12 X 1200 X 32)?230=E6H根据要求,定时/计数器 T1 的方式控制字为 20H。甲机的发送程序:TSTART:MOV TMOD,#20HMOV TL1,#0E6HMOV TH1,#0E6HMOV PCON,#00HMOV SCON,#40HMOV R0,#30HMOV R7,#10HSETB TR1LOOP: MOV A,R0MOV C,PMOV ACC.7,CMOV SBUF,AWAIT: JNB TI,WAITCLR TIINC R0DJNZ R7,LOOPRET乙机的接收程序:RSTART: MOV TMOD,#20HMOV TL1,#0E6HMOV TH1
68、,#0E6HMOV PCON,#00HMOV R0,#40HMOV R7,#10HSETB TR1LOOP: MOV SCON,#50HWAIT: JNB RI,WAITMOV A,SBUFMOV C,PJC ERRORANL A,#7FHMOV R0,AINC R0DJNZ R7,LOOPRET第八章1. 什么是 MCS-51单片机的最小系统,答:所谓最小系统,是指一个真正可用 的单片机的最小配置系统。对于单片机内部资源已能够满足系统需要的,可直接采用最小系统。2. 简述存储器扩展的一般方法。答:存储器芯片与单片机扩展连接具有共同的规律。即不论何种存储器芯 片,其引脚都呈三总线结构,与单片机
69、连接都是三总线对接。另外,电源线接电源线,地线接地线。3.什么是部分译码法,什么是全译码法,它们各有什么特点,用于形成什么信号 答:部分译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余 的高位地址线仅用一部分参加译码。部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间的浪费。全译码就是存储器芯片的地址线与单片机系统的地址线顺次相接后,剩余的高位地址线全部参加译码。这种译码方法中存储器芯片的地址空间是唯一确定的,但译码电路要相对复杂。译码形成存储器芯片的片选信号线C 丘4.译码为什么会出现地址重叠情况,它对存储器容量有何影响采 用 部 分,答: 部分译码就是存储器芯片的地址线
70、与单片机系统的地址线顺次相接后,剩余的高位地址线仅用一部分参加译码。参加译码的地址线对于选中某一存储器芯片有一个确定的状态,而与不参加译码的地址线无关。也可以说,只要参加译码的地址线处于对某一存储器芯片的选中状态,不参加译码的地址线的任意状态都可以选中该芯片。正因为如此,部分译码使存储器芯片的地址空间有重叠,造成系统存储器空间减少。5. 存储器芯片的地址引脚与容量有什么关系,N 答:容量(Q)与地址线数目(N)满足关系式:Q=2。6. MCS-51 单片机的外部设备是通过什么方式访问的,答:MCS-51 单片机扩展的外部设备与片外数据存储器统一编址,即外部设备 占用片外数据存储器的地址空间。按
71、片外数据存储器的访问方式访问。7. 何为键抖动,键抖动对键位识别有什么影响,怎样消除键抖动,答 :按键时,无论按下键位还是放开键位都会产生抖动,如果对抖动不作处理,必然会出现按一次键而输入多次,为确保按一次键只确认一次,必须消除按键抖动。消除按键抖动通常有硬件消抖和软件消抖两种方法。8. 矩阵键盘有几种编码方式,怎样编码,答:通常有以下两种方法进行编码;(1)用连接键盘的 I/O 线的二进制组合进行 编码。(2)顺序排列编码。9. 简述对矩阵键盘的扫描过程。答:矩阵式键盘的工作过程可分为两步:第一 步是CPU 首先检测键盘上是否有键按下;第二步是识别哪一个键按下。(1) 检测键盘上是否有键按下
72、的处理方法是:将列线送入全扫描字,读入行线 的状态来判别。(2) 识别键盘中哪一个键按下的处理方法是:将列线逐列置成低电平,检查行 输入状态,称为逐列扫描。10. 共阴极数码管与共阳极数码管有何区别,答:共阴极结构,8 段发光二极管的阴极端连接在一起,阳极端分开控制, 使用时公共端接地,要使哪根发光二极管亮,贝 U 对应的阳极端接高电平使哪根发光二极管亮,则对应的阴极端接地。;共阳极结构,8 段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接 电源,要11. 简述 LED 数码管显示的译码方式。答:所谓译码方式是指由显示字符转换得到对应的字段码的方式。对于数码管显示器,通常的译码方
73、式有硬件译码方式和软件译码方式两种。12. 简述 LED 动态显示过程。答:LED 动态显示是将所有的数码管的段选线并接在一起,用一个I/O 接口LED控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的 I/O 接口 线控制,工作过程为:第一步使右边第一个数码管的公共端 D0 为 1,其余的数码 管的公共端为 0,同时在 1/0(1)上发送右边第一个数码管的字段码,这时,只有 右边第一个数码管显示,其余不显示;第二步使右边第二个数码管的公共端D1为 1,其余的数码管的公共端为 0,同时在 1/0(1)上发送右边第二个数码管的字 段码,这时,只有右边第二个数码管显示,其余不显示,
74、依此类推,直到最后 一个,这样 4 个数码管轮流显示相应的信息,一次循环完毕后,下一次循环又这样轮流显示,从计算机的角度看是一个一个地显示,但由于人的视觉暂留效应,只要循环的周期足够快,则看起来所有的数码管就都是一起显示的了,这 就是动态显示的原理。13.使用 2764(8KB 8 芯片通过部分译码法扩展 24KB 程序存储器,画出硬件 连接图,指明各芯片的地址空间范围。答:使用 2764(8K 8亦片通过部分译码法扩展 24KB 程序存储器,须要 3 块。 采用线译码,P2.5与第一片2764的CE相连,P2.6与第二片2764的CE相连, P2.7与第三片2764的 CE 相连,硬件连接如
75、下:P2.7 P2.6 P2.5 P2.4P2.0 5 ALE G 74LS 8 5 5 5 8 8 8 373 A0A7 OEA0A7 A0A7CE CE CE 8031 A8A12 A8A12 A8A12 2764(1) 2764(2) 2764(3)OE OE D0D7 D0D7D0D7 OE 8 8 8 8 P0 PSEN EA地址空间如下:第一片:1100 0000 0000 00001101 1111 1111 111 仰 C000HDFFFH;第二片:1010 0000 0000 00001011 1111 1111 111 仰 A000HBFFFH;第三片:0110 0000
76、0000 00000111 1111 1111 111 仰 6000H7FFFH;14.使用 6264(8KB 8芯片通过全译码法扩展 24KB 数据存储器,画出硬件连 接图,指明各芯片的地址空间范围。答:使用 6264(8K 8亦片通过全译码法扩展 24KB 程序存储器,须要 3 块。采 用 138 译码器译码,硬件连接如下:74LS138 Vcc G1 G G2Y3 G2A Y2 B C Y1 P2.7 B P2.6 A Y0 P2.5 P2.4P2.05 ALE G74LS 8 5 5 5 8 8 8 373 A0A7 OE A0A7 A0A7 CE CE CE 8031 A8A12A8
77、A12A8A12 6264(1) 6264(2) 6264(3) OE OE D0D7 D0D7 D0D7 OE 8 8 8 8P0 PSEN EA地址空间如下:第一片:0000 0000 0000 00000001 1111 1111 111仰 0000H1FFFh二片:0010 0000 000000000011 1111 1111 111 饵 2000H3FFFh三片:0100 0000 0000 00000101 11111111 1111 即 3000H5FFFH; 1 弑用一片 74LS373T 展一个并行 输入口,画出硬件连接图,指出相应的控制命令。答:硬件电路图如下:74LS3
78、73 的输入端为扩展的输入口,输出端接 8051 的数 据总路线 P0 口,控制端接高电平,输出允许由片外数据存储器读信号据。D0 P0.0 Q0 D1 P0.1 Q1 74LS D2 P0.2 Q2 D3 P0.3 Q3 373 D4 P0.4 Q4 D5P0.5 Q5D6 P0.6 Q6 D7 P 0.7 Q7 8051 OE G +5V + RDP2.0输入数据的命令如下:MOV DPTR #0FE00HRD 和P2.0 控制。当片外数据存储器读信号 RD 和 P2.0 同为低平时从 74LS373 中读入 输入的数MOVX A, DPTR16.用 8255A 扩展并行 I/O,实现把 8 个开关的状态通过 8 个二极管显示出 来,画出硬件连接图,用汇编语言和C 语言分别编写相应的程序。