单片机原理及应用答案(李全利)(19页).doc
-第 0 页 单片机原理及应用答案(李全利)-第 0 页ADI 公司推出的 ADC8xx 系列高精度 ADC 单片机;LG 公司推出的 GMS90/97 系列低压高速单片机;Maxim 公司推出的 DS89C420 高速(50MIPS)单片机;Cygnal 公司推出的 C8051F 系列高速 SOC 单片机等。8简述单片机的开发过程。答:系统需求分析,硬件方案设计,软件编程,仿真调试,实际运行。9单片机应用系统开发方法有哪些新方法?答:在系统编程(ISP)技术,在应用编程(IAP)技术。章 280C51 的结构和原理180C51 单片机在功能上、工艺上、程序存储器的配置上有哪些种类?答:功能上分为基本型和增强型;工艺上分为 HMOS 工艺和 CHMOS 工艺;在片内程序存储器的配置上有掩膜 ROM、EPROM 和 Flash、无片内程序存储器形式。2 80C51 单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?答:采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51 基本型单片机片内程序存储器为 4KB,地址范围是 0000H-0FFFH,用于存放程序或常数;片内数据存储器为 128 字节 RAM,地址范围是 00H-7FH,用于存放运算的中间结果、暂存数据和数据缓冲;另外在 80H-FFH 还配有 21 个 SFR。380C51 单片机的 P0P3 口在结构上有何不同?在使用上有何特点?答:作为通用 I/O 口时,P0、P1、P2 和 P3 都是准双向口。P0 可以作为地址/数据总线,此时是一个真正的双向口;P2 口可以作为地址线的高 8 位;P3 口是双功能口,每条口线还具有不同的第二功能。另外,P0 口的驱动能力为 8 个 TTL 负载,而其它口仅可驱动 4 个 TTL 负载。4如果 80C51 单片机晶振频率分别为 6 MHz、11.0592 MHz、12MHz 时,机器周期分别为多少?答:机器周期分别为 2s,1.085s,1s。580C51 单片机复位后的状态如何?复位方法有几种?答:复位后,PC 内容为 0000H,P0 口P3 口内容为 FFH,SP 内容为 07H,SBUF 内容不定,IP、IE 和 PCON 的有效位为 0,其余的特殊功能寄存器的状态均为 00H。复位方法一种是上电复位,另一种是上电与按键均有效的复位。680C51 单片机的片内、片外存储器如何选择?答:80C51 的EA引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存储器需要采用不同的指令加以区分。780C51 单片机的 PSW 寄存器各位标志的意义如何?答:CY:进位、借位标志。有进位、借位时 CY=1,否则 CY=0;AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位);F0:用户标志位,由用户自己定义;RS1、RS0:当前工作寄存器组选择位;OV:溢出标志位。有溢出时 OV=1,否则 OV=0;P:奇偶标志位。存于 ACC 中的运算结果有奇数个 1 时 P=1,否则 P=0。8 80C51 单片机的当前工作寄存器组如何选择?答:当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器 PSW 的 RS1、RS0 来决定。980C51 单片机的控制总线信号有哪些?各信号的作用如何?答:RST/VPD:复位信号输入引脚/备用电源输入引脚;ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚;EA/VPP:内外存储器选择引脚/片内 EPROM(或 FlashROM)编程电压输入引脚;PSEN:外部程序存储器选通信号输出引脚。1080C51 单片机的程序存储器低端的几个特殊单元的用途如何?答:0000H:单片机复位入口地址;0003H:外部中断 0 的中断服务程序入口地址;000BH:定时/计数器 0 溢出中断服务程序入口地址;0013H:外部中断 1 的中断服务程序入口地址;001BH:定时/计数器 1 溢出中断服务程序入口地址;0023H:串行口的中断服务程序入口地址。-第 1 页章 380C51 的指令系统180C51 系列单片机的指令系统有何特点?答:执行时间短。1 个机器周期指令有 64 条,2 个机器周期指令有 45 条,而 4 个机器周期指令仅有 2 条(即乘法和除法指令);指令编码字节少。单字节的指令有 49 条,双字节的指令有 45 条,三字节的指令仅有 17 条;位操作指令丰富。这是 80C51 单片机面向控制特点的重要保证。280C51 单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何?答:80C51 单片机的寻址方式有七种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。这些寻址方式所对应的寄存器和存储空间如下表所示。序号寻址方式寄存器或存储空间1寄存器寻址寄存器 R0R7,A、AB、DPTR 和 C(布尔累加器)2直接寻址片内 RAM 低 128 字节、SFR3寄存器间接寻址片内 RAM(R0,R1,SP)片外 RAM(R0,R1,DPTR)4立即寻址ROM5变址寻址ROM(ADPTR,APC)6相对寻址ROM(PC 当前值的127128 字节)7位寻址可寻址位(内部 RAM20H2FH 单元的位和部分 SFR 的位)3访问特殊功能寄存器 SFR 可以采用哪些寻址方式?答:直接寻址和位寻址方式。4访问内部 RAM 单元可以采用哪些寻址方式?答:直接寻址、寄存器间接寻址和位寻址方式。5访问外部 RAM 单元可以采用哪些寻址方式?答:寄存器间接寻址。6访问外部程序存储器可以采用哪些寻址方式?答:立即寻址、变址寻址和相对寻址方式。7为什么说布尔处理功能是 80C51 单片机的重要特点?答:单片机指令系统中的布尔指令集、存储器中的位地址空间与 CPU 中的位操作构成了片内的布尔功能系统,它可对位(bit)变量进行布尔处理,如置位、清零、求补、测试转移及逻辑“与”、“或”等操作。在实现位操作时,借用了程序状态标志器(PSW)中的进位标志Cy 作为位操作的“累加器”。8对于 80C52 单片机内部 RAM 还存在高 128 字节,应采用何种方式访问?答:寄存器间接寻址方式。9试根据指令编码表写出下列指令的机器码。(1)MOVA,#88H-74H,88H(2)MOVR3,50H-ABH,50H(3)MOVP1,#55H-75H,90H,55H(4)ADDA,R1-27H(5)SETB12H-D2H,12H10完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。(1)将 R0 的内容传送到 R1;(2)内部 RAM 单元 60H 的内容传送到寄存器 R2;(3)外部 RAM 单元 1000H 的内容传送到内部 RAM 单元 60H;(4)外部 RAM 单元 1000H 的内容传送到寄存器 R2;(5)外部 RAM 单元 1000H 的内容传送到外部 RAM 单元 2000H。答:(1)MOVA,R0MOVR1,A(2)MOVR2,60H-第 2 页(3)MOVDPTR,#1000HMOVXA,DPTRMOV60H,A(4)MOVDPTR,#1000HMOVXA,DPTRMOVR2,A(5)MOVDPTR,#1000HMOVXA,DPTRMOVDPTR,#2000HMOVXDPTR,A11若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。MOVA,R1MOVR1,40HMOV40H,AMOVR1,#7FH答:(R1)=7FH(A)=60H(30H)=08H(40H)=60H12若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出 CY、AC、和 OV 的值。(1)MOVA,R0(2)ANL40H,#0FH(3)ADDA,R4(4)SWAPA(5)DECR1(6)XCHDA,R1答:(1)(A)=2CH(2)(40H)=0CH(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0(4)(A)=8EH(5)(20H)=0EH,P=1(6)(A)=EFH,(20)=08H13若(50H)=40H,试写出执行以下程序段后累加器 A、寄存器 R0 及内部 RAM 的 40H、41H、42H 单元中的内容各为多少?MOVA,50HMOVR0,AMOVA,#00HMOVR0,AMOVA,#3BHMOV41H,AMOV42H,41H答:(A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。14试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。(1)使 ACC.0 置位;(2)清除累加器高 4 位;(3)清除 ACC.3,ACC.4,ACC.5,ACC.6。答:(1)SETBACC.0-第 3 页(2)ANLA,#0FH(3)ANLA,#87H15试编写程序,将内部 RAM 的 20H、21H、22H 三个连续单元的内容依次存入 2FH、2EH 和 2DH 单元。答:MOV2FH,20HMOV2EH,21HMOV2DH,22H16试编写程序,完成两个 16 位数的减法:7F4DH2B4EH,结果存入内部 RAM 的 30H 和 31H 单元,30H 单元存差的高 8 位,31H单元存差的低 8 位。(注意:此题与书上的题要求不一样,书中要求 31H 单元存差的高 8 位,30H 单元存差的低 8 位)答:CLRCYMOV30H,#7FHMOV31H,#4DHMOVR0,#31HMOVA,R0SUBBA,#4EMOVR0,A;保存低字节相减结果DECR0MOVA,R0SUBBA,#2BHMOVR0,A;保存高字节相减结果17试编写程序,将 R1 中的低 4 位数与 R2 中的高 4 位数合并成一个 8 位数,并将其存放在 R1 中。答:MOVA,R2ANLA,#0F0HORLR1,A18试编写程序,将内部 RAM 的 20H、21H 单元的两个无符号数相乘,结果存放在 R2、R3 中,R2 中存放高 8 位,R3 中存放低 8 位。答:MOVA,20HMOVB,21HMULABMOVR3,AMOVR2,B19若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1 口及 P3 口内容的变化情况。MOVP1.3,CMOVP1.4,CMOVC,P1.6MOVP3.6,CMOVC,P1.0MOVP3.4,C答:(CY)=1,(P1)=10111011B,(P3)=00111100B章 480C51 的汇编语言程序设计180C51 单片机汇编语言有何特点?答:汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。2利用 80C51 单片机汇编语言进行程序设计的步骤如何?答:一、任务分析首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。-第 4 页这是应用系统程序设计的基础和条件。二、算法设计经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。三、流程描述程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节。3常用的程序结构有哪几种?特点如何?答:顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的;分支程序:可以改变程序的执行顺序;循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。4子程序调用时,参数的传递方法有哪几种?答:利用累加器或寄存器;利用存储器;利用堆栈。5什么是伪指令?常用的伪指令功能如何?答:伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括:ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址;END,功能是结束汇编;DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据;DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间;EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名;BIT,功能是将位地址赋给指定的符号名。6设被加数存放在内部 RAM 的 20H、21H 单元,加数存放在 22H、23H 单元,若要求和存放在 24H、25H 中,试编写出 16 位无符号数相加的程序(采用大端模式存储)。答:程序如下:ORG0000HMOVR0,21HMOVR1,23HMOVA,R0ADDA,R1MOV25H,ADECR0DECR1MOVA,R0ADDCA,R1MOV24H,ASJMP$END7编写程序,把外部 RAM 中 1000H101FH 的内容传送到内部 RAM 的 30H4FH 中。答:ORG0000HMOVDPTR,#1000HMOVR0,#30HMOVR7,#32LOOP:MOVXA,DPTR-第 5 页MOVR0,AINCR0INCDPTRDJNZR7,LOOPRET8编写程序,实现双字节无符号数加法运算,要求(R0R1)+(R6R7)(60H61H)。答:ORG0000HMOVA,R1ADDA,R7MOV61H,AMOVA,R0ADDCA,R6MOV60H,ASJMP$END9若 80C51 的晶振频率为 6MHz,试计算延时子程序的延时时间。DELAY:MOVR7,#0F6HLP:MOVR6,#0FAHDJNZR6,$DJNZR7,LPRET答:延时时间:2s*1+((1+2*250+2)*246)+2+2=0.247486 秒(含调用指令 2 个机器周期)10在内部 RAM 的 30H37H 单元存有一组单字节无符号数。要求找出最大数存入 BIG 单元。试编写程序实现。答:ORG0000HBIGDATA2FHONEDATA2AHTWODATA2BHSTART:MOVR7,#7;比较次数MOVR0,#30HLOOP:MOVA,R0MOVONE,AINCR0MOVTWO,R0CLRCSUBBA,R0JCNEXT;ONE 小,TWO 大继续比下一对数MOVR0,ONE;ONE 大放后面(交换)DECR0MOVR0,TWO;TWO 小放前面INCR0;NEXT:DJNZR7,LOOPMOVBIG,37HSJMP$END11编写程序,把累加器 A 中的二进制数变换成 3 位 BCD 码,并将百、十、个位数分别存放在内部 RAM 的 50H、51H、52H 中。答:单字节二进制数转换为压缩的 BCD 码仅需要 2 个字节;在将压缩的 BCD 码拆分存于 3 个单元。org0-第 6 页MOV52H,#0MOV51H,#0MOV50H,#0MOVA,#0FDhLCALL DCDTHSJMP$DCDTH:MOVR7,#8MOVR0,A;暂存于 R0LOOP:CLRCMOVA,R0RLCAMOVR0,AMOVR1,#51H;MOVA,R1;ADDCA,R1;DAA;MOVR1,A;DECR1MOVA,R1ADDCA,R1DAAMOVR1,ADJNZR7,LOOPINCR1;50H 已是结果,R1 指向 51H,51H 单元需拆分MOVA,#00HXCHDA,R1MOV52H,AMOVA,R1SWAPAMOVR1,ARETEND12编写子程序,将 R1 中的 2 个十六进制数转换为 ASCII 码后存放在 R3 和 R4 中。答:ORG0MOVR1,#5BHMOVA,R1ANLA,#0F0HSWAPAACALLASCIIMOVR3,AMOVA,R1ANLA,#0FHACALLASCIIMOVR4,ASJMP$ASCII:PUSHACCCLRC-第 7 页SUBBA,#0AHPOPACCJCLOOPADDA,#07HLOOP:ADDA,#30HRETEND13编写程序,求内部 RAM 中 50H59H 十个单元内容的平均值,并存放在 5AH 单元。答:ORG0000HMOVR7,#10MOVR0,#50HMOVB,#10CLRCCLRALOOP:ADDCA,R0INCR0DJNZR7,LOOPDIVABMOV5AH,ASJMP$END14如图 4.10 所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键号“0”“7”。答:实现程序如下:TEMPEQU30HORG0000HJMPSTARTORG0100HSTART:MOVSP,#5FHMOVP0,#8CH;正序显示PMOVP3,#0FFH;输入方式CLRCYNOKEY:MOVA,P3CPLAJZNOKEY;无键按下MOVTEMP,P3;有键按下CALLD10msMOVA,P3CJNEA,TEMP,NOKEY;去抖动MOVR2,#0;键号计数器复位MOVA,TEMPLP:RRCAJNCDONEINCR2SJMPLPDONE:MOVA,R2MOVDPTR,#CODE_P0MOVCA,A+DPTR-第 8 页MOVP0,AJMPNOKEYD10ms:MOVR5,#10;10MSD1ms:MOVR4,#249DL:NOPNOPDJNZR4,DLDJNZR5,D1msRETCODE_P0:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,90H,88H,83H,0C6H,0A1H,86H,8EHEND章 580C51 的中断系统及定时/计数器1.80C51 有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU 响应各中断时,其中断入口地址是多少?答:5 个中断源,分别为外中断INT0和INT1、T0 和 T1 溢出中断、串口中断。电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。T0 和 T1,CPU 响应中断时,由硬件自动复位。RI 和 TI,由硬件置位。必须由软件复位。另外,所有能产生中断的标志位均可由软件置位或复位。各中断入口地址:INT00003H,T0000BH,INT10013H,T1001BH,RI 和 TI0023H。2.某系统有三个外部中断源 1、2、3,当某一中断源变低电平时便要求 CPU 处理,它们的优先处理次序由高到低为 3、2、1,处理程序的入口地址分别为 2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。答:将 3 个中断信号经电阻线或,接INT1。ORG0000HLJMPMAINORG00013HLJMPZDFZORG0040HMAIN:SETBEASETBEX1SJMP$0RG0200HZDFZ:PUSHPSWPUSHACCJBP1.0,DV0JBP1.1,DV1JBP1.2,DV2INRET:POPACCPOPPSWRETIORG2000HDV0:-JMPINRETORG2100HDV1:-第 9 页JMPINRETORG2200HDV2:-JMPINRET3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?答:当 IT0=0 时,INT0为电平触发方式。电平触发方式时,CPU 在每个机器周期的 S5P2 采样INT0引脚电平,当采样到低电平时,置 IE0向 CPU 请求中断;采样到高电平时,将 IE0 清 0。在电平触发方式下,CPU 响应中断时,不能自动清除 IE0 标志。电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。当 IT0=1 时,INT0为边沿触发方式。边沿触发方式时,CPU 在每个机器周期的 S5P2 采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置 IE01,产生中断请求。在边沿触发方式下,CPU 响应中断时,能由硬件自动清除 IE0 标志。边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在 IE0 或 IE1 中将锁存一个逻辑 1。若 CPU 暂时不能响应,中断申请标志也不会丢失,直到 CPU 响应此中断时才清 0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为 12MHz,为 1 微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。4.定时/计数器工作于定时和计数方式时有何异同点?答:定时/计数器实质是加 1 计数器。不同点不同点:设置为定时器模式时,加 1 计数器是对内部机器周期计数(1 个机器周期等于 12 个振荡周期,即计数频率为晶振频率的 1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由 T0 或 T1 引脚输入到计数器。在每个机器周期的 S5P2 期间采样 T0、T1 引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加 1,更新的计数值在下一个机器周期的 S3P1 期间装入计数器。相同点相同点:它们的工作原理相同,它们都有 4 种工作方式,由 TMOD 中的 M1M0 设定,即方式 0:13 位计数器;方式 1:16 位计数器;方式 2:具有自动重装初值功能的 8 位计数器;方式 3:T0 分为两个独立的 8 位计数器,T1 停止工作。5.定时/计数器的 4 种工作方式各有何特点?答:方式 0 位 13 位计数器,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位组成。TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU 发出中断请求。计数初值计算的公式为:X213N方式 1 的计数位数是 16 位,由 TL0 作为低 8 位、TH0 作为高 8 位,组成了 16 位加 1 计数器。计数个数与计数初值的关系为:X216N方式 2 为自动重装初值的 8 位计数方式。TH0 为 8 位初值寄存器。当 TL0 计满溢出时,由硬件使 TF0 置 1,向 CPU 发出中断请求,并将 TH0 中的计数初值自动送入 TL0。TL0 从初值重新进行加 1 计数。周而复始,直至 TR0=0 才会停止。计数个数与计数初值的关系为:X28N方式 3 只适用于定时/计数器 T0,定时器 T1 处于方式 3 时相当于 TR10,停止计数。方式 3 时,T0 分成为两个独立的 8 位计数器TL0 和 TH0,TL0 使用 T0 的所有控制位。当 TL0 计数溢出时,由硬件使 TF0 置 1,向 CPU 发出中断请求。而 TH0 固定为定时方式(不能进行外部计数),并且借用了 T1 的控制位 TR1、TF1。因此,TH0 的启、停受 TR1 控制,TH0 的溢出将置位 TF1。6.要求定时/计数器的运行控制完全由 TR1、TR0 确定和完全由INT0、INT1高低电平控制时,其初始化编程应作何处理?答:TMOD 中 GATE 的值不同:完全由 TR1、TR0 确定时 GATE 为 0;完全由INT0、INT1高低电平控制时 GATE 为 1。7.当定时/计数器 T0 用作方式 3 时,定时/计数器 T1 可以工作在何种方式下?如何控制 T1 的开启和关闭?答:T0 用作方式 3 时,T1 可以工作在方式 0、1 和 2。T1 的开启由 TR1 控制,即 TR11 时,T1 开始工作;TR10 时或者定时/计数器工作在方式 3 时,T1 停止工作。8.利用定时/计数器 T0 从 P1.0 输出周期为 1s,脉宽为 20ms 的正脉冲信号,晶振频率为 12MHz。试设计程序。-第 10 页答:采用定时 20ms,然后再计数 1、49 次的方法实现。a、T0 工作在定时方式 1 时,控制字 TMOD 配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为 01H;b、计算计数初值 X:晶振为 12 MHz,所以机器周期 Tcy 为 1s。Nt/Tcy 20103/110620000X216N6553620000455364E20H即应将 4EH 送入 TH1 中,20H 送入 TL1 中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG0030HMAIN:MOVTMOD,#01H;设 T1 工作于方式 2MOVTH0,#4EH;装入循环计数初值MOVTL0,#20H;首次计数值LP0:SETBP1.0ACALL NT0CLRP1.0MOVR7,#49;计数 49 次LP1:ACALL NT0DJNZR7,LP1AJMPLP0NT0:MOVTH0,#4EHMOVTL0,#20HSETBTR0JNBTF0,$CLRTR0CLRTF0RETEND9.要求从 P1.1 引脚输出 1000Hz 方波,晶振频率为 12MHz。试设计程序。答:采用 T0 实现a、T0 工作在定时方式 1 时,控制字 TMOD 配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为 01H;b、计算计数初值 X:晶振为 12 MHz,所以机器周期 Tcy 为 1s。1/1000=1103Nt/Tcy 0.5103/1106500X216N6553650065036FE0CH即应将 FEH 送入 TH0 中,0CH 送入 TL0 中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG000BH;T0 的中断入口地址LJMPDVT0ORG0030HMAIN:MOVTMOD,#01H;设 T0 工作于方式 2MOVTH0,#0FEH;装入循环计数初值MOVTL0,#0CH;首次计数值-第 11 页SETBET0;T0 开中断SETBEA;CPU 开中断SETBTR0;启动 T0SJMP$;等待中断DVT0:CPLP1.1MOVTH0,#0FEHMOVTL0,#0CHSETBTR0RETIEND10.试用定时/计数器 T1 对外部事件计数。要求每计数 100,就将 T1 改成定时方式,控制 P1.7 输出一个脉宽为 10ms 的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为 12MHz。答:a、T1 工作在计数方式 2 时,控制字 TMOD 配置:M1M0=10,GATE=0,C/T=1,可取方式控制字为 60H;T1 工作在定时方式 1 时,控制字 TMOD 配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为 10H;b、计算初值 X:定时定时 10ms10ms 时时:晶振为 12 MHz,所以机器周期 Tcy 为 1s。Nt/Tcy 10103/110610000X216N655361000055536D8F0H即应将 D8H 送入 TH1 中,F0H 送入 TL1 中。计数计数 100100 时时:N100X28N2561001569CHc、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG001BH;T1 的中断入口地址LJMPDVT1ORG0030HMAIN:MOVTMOD,#60H;T1 工作于计数方式 2MOVTH1,#9CH;装入计数初值MOVTL1,#9CH;CLRP1.7SETBET1;T1 开中断SETBEA;CPU 开中断SETBTR1;启动 T1SJMP$;等待中断DVT1:SETBP1.7CLRET1CLRTR1MOVTMOD,#10H;T1 工作于定时方式 1MOVTH1,#0D8H;装初值MOVTL1,#0F0HSETBTR1JNBTF1,$;查询等待 10msCLRTF1-第 12 页CLRTR1CLRP1.7MOVTMOD,#60H;T1 工作于计数方式 2MOVTH1,#9CH;装初值MOVTL1,#9CH;SETBET1;T1 开中断SETBTR1;启动 T1RETIEND11.利用定时/计数器 T0 产生定时时钟,由 P1 口控制 8 个指示灯。编一个程序,使 8 个指示灯依次闪动,闪动频率为 1 次/秒(即,亮 1秒后熄灭并点亮下一个,-)。答:采用定时 20ms,计数 50 次实现 1 秒定时。编制 1 秒延时子程序,由主程序调用。a、T0 工作在定时方式 1 时,控制字 TMOD 配置:M1M0=01,GATE=0,C/T=0,可取方式控制字为 01H;b、计算计数初值 X:晶振为 12 MHz,所以机器周期 Tcy 为 1s。Nt/Tcy 20103/110620000X216N6553620000455364E20H即应将 4EH 送入 TH1 中,20H 送入 TL1 中。c、实现程序如下:ORG0000HAJMPMAIN;跳转到主程序ORG0030HMAIN:CLRCYMOVA,#01HLP0:MOVP1,ACALLD1SECRLAAJMPLP0D1SEC:MOVR7,#50;计数 50 次MOVTMOD,#01HDL:MOVTH0,#4EHMOVTL0,#20HSETBTR0JNBTF0,$CLRTR0CLRTF0DJNZR7,DLRETEND章 680C51 的串行口180C51 单片机串行口有几种工作方式?如何选择?简述其特点?答:四种工作方式,由 SCON 中的 SM0、SM1 进行定义:方式 0:同步移位寄存器的输入输出方式,主要用于扩展并行输入或输出口,波特率固定。方式 1:10 位数据的异步通信口,波特率可变。方式 2:11 位数据的异步通信口,波特率固定。-第 13 页方式 3:11 位数据的异步通信口,波特率可变。2串行通信的接口标准有那几种?答:RS-232C 接口、RS-422A 接口、RS-485 接口3在串行通信中通信速率与传输距离之间的关系如何?答:最大距离与传输速率及传输线的电气特性有关。当传输线使用每 0.3m(约 1 ft)有 50PF 电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当波特率超过 1000 bps 时,最大传输距离将迅速下降。4在利用 RS-422/RS-485 通信的过程如果通信距离(波特率固定)过长,应如何处理?答:在波特率一定的情况下,带负载数的多少,与信号能传输的最大距离是直接相关的。在总线允许的范围内,带负载数越多,信号能传输的距离就越小;带负载数越少,信号能传输的距离就越远。故应减小通信距离或减少负载数量。5利用单片机串行口扩展并行输入接口电路如图所示。试编写程序完成将 SW1SW8 的状态反应在 P0 口所接的 LED 上(如 SW1闭合时 L7 应点亮)。答:电路图如下:ORG0000HMOVSCON,#10HLOOP:CLRP1.7NOPNOPNOPSETBP1.7CLRRIJNBRI,$MOVA,SUBFSJMPLOOPEND6 利用单片机串行口扩展并行输出接口电路如图所示。试编写程序完成将 SW1SW8 的状态反应在移位寄存器 74LS164 所接的 LED上(如 SW1 闭合时 L0 应点亮)。答:电路图如下:ORG0000HMOVSCON,#00HMOVP1,#0FFHLOOP:MOVA,P1MOVSUBF,AJNBTI,$CLRTISJMPLOOPEND章 780C51 单片机的系统扩展1以 80C31 为主机,用 2 片 27C256 扩展 64K EPROM,试画出接口电路。答:2以 80C31 为主机,用 1 片 27C512 扩展 64K EPROM,试画出接口电路。答:3以 80C31 为主机,用 1 片 27C256 扩展 32K RAM,同时要扩展 8K 的 RAM,试画出接口电路。答:4当单片机应用系统中数据存储器 RAM 地址和程序存储器 EPROM 地址重叠时,它们内容的读取是否会发生冲突,为什么?答:不会。由于 80C51 对 ROM 的读操作由 PSEN 控制,指令用 MOVC 类;对 RAM 读操作用 RD 控制,指令用 MOVX。所以,尽管 ROM-第 14 页与 RAM 的逻辑地址是重叠的,它们内容的读取也不会发生冲突。5根据图 7.14 电路,编程完成对 81C55 的操作:a、读 81C55 的 80H 单元。b、将立即数 88H 写入 81C55 的 30H 单元。答:a、MOVDPTR,#7E80HMOVXA,DPTRb、MOVA,#88HMOVDPTR,#7E30HMOVXA,DPTR6 I2C 总线的特点是什么?答:a、二线制传输。器件引脚少,器件间连接简单,电路板体积减小,可靠性提高。b、传输速率高标准模式传输速率为 100Kb/s,快速模式为 400Kb/s,高速模式为 3.4Mb/s。c、支持主/从和多主两种工作方式7、I2C 总线的起始信号和终止信号是如何定义的?答:SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号起始信号;SCL 线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号终止信号。起始和终止信号如图所示。8、I2C 总线的数据传送方向如何控制?答:在主机发出起始信号后要再传输 1 个控制字节:7 位从器件地址,1 位传输方向控制位(用“0”表示主机发送数据,“1”表示主机接收数据)。9、具备 I2C 总线接口的 E2PROM 芯片有哪几种型号?容量如何?答:典型产品如 ATMEL 公司的 AT24C 系列:型号容量AT24C01A128AT24C02256AT24C04512AT24C08A1KAT24C16A2KAT24C32A4KAT24C64A8KAT24C128B16KAT24C256B32KAT24C512B64K10、AT24C 系列芯片的读写格式如何?答:a、写操作过程对 AT24C02 写入时,单片机发出起始信号之后再发送的是控制字节,然后释放 SDA 线并在 SCL 线上产生第 9 个时钟信号。被选中的存储器器件在确认是自己的地址后,在 SDA 线上产生一个应答信号,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的预写入存储单元的首地址,收到正确的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。单片机发出停止信号 P 后,启动 AT24C02 的内部写周期,完成数据写入工作(约 10ms 内结束)。AT24C02 片内地址指针在接收到每一个数据字节后自动加 1,在芯片的“一次装载字节数”(页面字节数)限度内,只需输入首地址。装载字节数超过芯片的“一次装载字节数”时,数据地址将“上卷”,前面的数据将被覆盖。要写入的数据传送完后,单片机应发出终止信号以结束写入操作。写入 n 个字节数据格式如下:b、读操作过程对 AT24C02 读出时,单片机也要发送该器件的控制字节(“伪写”),发送完后释放 SDA 线并在 SCL 线上产生第 9 个时钟信号,被选中的存储器在确认是自己的地址后,在 SDA 线上产生一个应答信号作为响应。然后,单片机再发送一个字节的要读出器件的存储区的首地址,收到器件的应答后,单片机要重复一次起始信号并发出器件地址和读方向位(“1”),收