单片机习题答案 下载本文

内容发布更新时间 : 2024/5/21 5:39:55星期一 下面是文章的全部内容请认真阅读。

单片机原理及应用作业参考答案 1.2 单片机的结构特点表现在哪些主要方面? . 单片机的结构特点表现在哪些主要方面? 答: (1)在存储器结构上,严格将程序存储器和数据存储器在空间上分开,并使用不同的寻址方式,使 用两个不同的地址指针; (2)在内部有一个全双工的串行接口; (3)有一个独立进行操作的位处理器. 1.4 通用单片机的供应状态主要取决于什么?供应状态有哪几种?用户选用单片机的供应状态的原则 . 通用单片机的供应状态主要取决于什么?供应状态有哪几种? 是什么? 是什么? 答:通用单片机的供应状态主要取决于片内 ROM 的配置状态. (1)片内 ROM 的配置状态 掩膜 ROM,适合于低成本.大批量产品的场合 (2)片内 EPROM 配置状态 可通过高压脉冲写入应用程序到 EPROM,适合于开发样机,小批量生产. (3)片内无 ROM 配置状态 必须外扩 EPROM,价格低,使用灵活,适合于需要外接能在现场进行修改和更新程序存储器的应 用场合. 2.3 单片机的 EA 端有何功用?8031 的 EA 端应如何处理,为什么? . 端有何功用? 端应如何处理,为什么? 答: EA 端是访问外部程序存储器的控制信号:当 EA 无效时,访问内部 ROM,当 EA 为有效时,访问 外部 ROM.由于 8031 没有内部 ROM,所以 EA 端必须接低电平. 2. MCS-51 引脚中有多少 I/O 线?它们与单片机对外的地址总线, . 4 它们与单片机对外的地址总线, 数据总线和控制总线有什么关系? - 数据总线和控制总线有什么关系? 地址总线和数据总线各是几位? 地址总线和数据总线各是几位? 答:MCS-51 引脚中有 32 根 I/O 线,一般由 P0 口提供单片机对外的数据总线,同时作为分时复用的地 址总线的低 8 位, P2 口作为地址总线的高 8 位, 由 控制总线由第二功能的状态下的 P3 口以及 RST, , EA ALE 和 PSEN 提供. 2.5 8051 单片机的内部数据存储器可以分为哪几个不同的区域?各有什么特点? . 单片机的内部数据存储器可以分为哪几个不同的区域?各有什么特点? 答:数据存储器主要分为两个区域:00H~7FH 是真正的 RAM 区,80H~FFH 专门用作特殊功能寄存器 的区域. 其中 00H~7FH 可分为三个区域: 00H~1FH 为四组工作寄存器; 20H~2FH 为 128 位位寻址区, 30H~7FH 为一般 RAM 区. 2.6 单片机对外有几条专用控制线?其功能是怎样的? . 单片机对外有几条专用控制线?其功能是怎样的? 答:单片机对外的专用控制线有 4 条,分别是: (1) PSEN : 外部取指操作,在访问外部 ROM 时, PSEN 信号自动产生; (2)ALE/ PROG :ALE 为地址锁存允许信号,在访问外部 ROM 或 RAM 时,用来锁存 P0 口的低 8 位地址.第二功能 PROG 是对 8751 的 EPROM 编程时,编程脉冲输入. 1 (3) EA /VPP: EA 是访问外部程序存储器的控制信号, EA 无效时,访问内部 ROM, EA 有效时,访 问外部 ROM,第二功能 VPP 为对 8751EPROM 的 21V 编程电源输入. (4)RST/VPD:RST 是复位信号输入端,第二功能 VPD 是备用电源输入端. 2.8 有哪几种方法使单片机复位?复位后各寄存器,RAM 中的状态如何? 中的状态如何? . 有哪几种方法使单片机复位?复位后各寄存器, 答:单片机的复位方式有两种,上电自动复位和按钮复位.复位后各寄存器状态为: PC 0000H ACC 00H PSW 00H SP 07H DPTR 0000H P0~P3FFH IP XX000000B IE 0X000000B TMOD 00H TCON 00H TL0 00H TH0 00H TL1 00H TH1 00H SCON 00H SBUF XXH PCON 0XXX0000B 2.9 在 8051 扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址,是否会在数据总线 扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址, . 上出现争总线的现象?为什么? 上出现争总线的现象?为什么? 答:不会发生争总线的现象,因为从外部 ROM 取指令需要用 ALE 和 PSEN 信号控制读取操作,由 P2 和 P0 提供地址;而片外数据存储器的读写除了地址之外还要 RD , WR 控制,所以不会争总线. 2.10 如果 8051 端口 P0~P3 作为通用 I/O 口使用,则在输入引脚数据时应注意什么? . 口使用,则在输入引脚数据时应注意什么? ~ 答:8051 的 P1,P2 和作为一般输入 I/O 口的 P 以及第一功能的 P3 口均为准双向口,在输入数据时应先 向端口写 1,然后方可作为高阻输入.以使其场效应管 T2 截止,才不会影响输入电平. 3.2 若要完成以下的数据传送,应如何用 MCS-51 的指令实现? . 若要完成以下的数据传送, 的指令实现? (1)R1 的内容传送到 R0 (5)ROM2000H 单元的内容传送到 R0 MOV

A,R1 MOV DPTR,#2000H MOV R0,A CLR A MOVC A,@A+DPTR (2) 外部 RAM20H 单元的内容传送到 R0 MOV R0,#20H MOV R0,A MOVX A,@R0 (6)ROM2000H 单元的内容传送到内部 RAM20H 单元 MOV R0,A MOV DPTR,#2000H CLR A (3)外部 RAM20H 单元的内容传送到内 MOVC A,@A+DPTR 部 RAM20H 单元 MOV R0,#20H MOV 20H,A MOVX A,@R0 (7)ROM2000H 单元的内容传送到外部 RAM20H 单元 MOV 20H,A MOV DPTR,#2000H CLR A (4)外部 RAM1000H 单元内容传送到内 MOVC A,@A+DPTR 部 RAM20H 单元 MOV DPTR,#1000H MOV R0,#20H MOVX A,@DPTR MOVX @R0,A MOV 20H,A 3.3 间接转移指令 JMP @A+DPTR 有何优点?为什么它能代替众多的判跳指令?试举例说明. 有何优点?为什么它能代替众多的判跳指令?试举例说明. . 答:该间接转移指令的转移地址由 A 的内容和数据指针 DPTR 的内容之和决定,且两者都是无符号数, 由 DPTR 决定多分支转移程序的首地址, A 的不同值实现多分支转移. 由 因为可以根据 A 的内容进行分 支转移,所以可以替代众多判跳指令. 如:根据 A 的内容调用相应的程序,如 A 为 0 调用 OP0,A 为 1 调用 OP1,这里 A 的值小于 128. MOV DPTR,#OPTAB 2 A @A+DPTR … OPTAB: ACALL OP0 ACALL OP1 ACALL OP2 … 3.4 设内部 RAM 的 30H 单元的内容为 40H,即(30H)= )=40H,还知(40H)= )=10H, (10H)= )=00H, . , )= ,还知( )= , ( )= , 端口 P1=0CAH.问执行以下指令后,各有关存储器单元,寄存器以及端口的内容(即 R0,R1,A,B, = .问执行以下指令后,各有关存储器单元,寄存器以及端口的内容( , , , , P1 以及 40H,30H,10H 单元的内容) 单元的内容) , , . MOV R0,#30H ; (R0)=30H MOV A,@R0 ; (A)=(30H)=40H MOV R1,A ; (R1)=40H MOV B,@R1 ; (B)=(40H)=10H MOV @R1,P1 ; (40H)=0CAH MOV P2,P1 ; (P2)=0CAH MOV 10H,#20H ; (10H)=20H MOV 30H,10H ; (30H)=20H 3.5 已知 8751 单片机的 P1 口为输出,经驱动电路接有 8 只发光二极管.当输出位是 1 时,发光二极 . 口为输出, 只发光二极管. 管点亮; 时发光二极管熄灭.试分析下述程序的执行过程及发光二极管的发光情况. 管点亮;输出位是 0 时发光二极管熄灭.试分析下述程序的执行过程及发光二极管的发光情况. LP: MOV P1,#81H ;1000 0001B LCALL DELAY LCALL DELAY MOV P1,#24H ;0010 0100B MOV P1,#42H ;0100 0010B LCALL DELAY LCALL DELAY MOV P1,#42H ;0100 0010B MOV P1,#24H ;0010 0100B LCALL DELAY LCALL DELAY SJMP LP MOV P1,#18H ;0001 1000B 答:程序执行 MOV P1,#DATA 后,根据 DATA 的每位的值点亮相应的 LED,调用延时程序使点亮的 LED 保持一段时间.LED 发光的情况为:每次同时点亮两个 LED 并从两边向中间移动,然后再向两边移动, 并一直循环. 3.6 在上题中,若系统的晶体振荡器频率为 6MHz,求子程序 DELAY 的延时时间. 的延时时间. . 在上题中, , DELAY: MOV R2,#0FAH ;①2S L1: MOV R3,#0FAH ;②2S L2: DJNZ R3,L2 ;③4S DJNZ R2,L1 ;④4S RET ;⑤4S 0FAH=250D 其中③执行 250 次,执行时间为 250×4S 其中②③④循环 250 次,该循环执行时间为(2+250×4+4)×250S 加上①和⑤的执行时间,DELAY 的延时时间为 2+(2+250×4+4)×250+4=251.506ms 延时程序的设计: 延时程序的设计: 首先设计内循环: MOV R3,#data1 ;2s NOP ;2s DJNZ R3,$ ;4s×data1 延时时间 t1=2+2+4×data1=4×(data1+1)=1000s=1ms,则 data1=249 3 RL JMP 若需要大于 1ms 时间,则先增加一层循环 MOV R2,#data2 ;2s L1: MOV R3,#data1 ;2s NOP ;2s DJNZ R3,$ ;4s×data1 DJNZ R2,L2 ;(4s+t1)×data2 延时时间为:2+(4s+t1)×data2=2+[4s+4×(data1+1)]×data2= =2+4×(data1+2)×data2=250ms,这里将 data1 修正为 248, 得 2+4×(248+2)×data2=2+1000×data2=250ms 则 data2=250 3.7 根据图 3-3 线路,试设计灯亮移位程序,使 8 只发光二极管每次亮一个,循环右移或左移,一个一 线路,试设计灯亮移位程序, 只发光二极管每次亮一个,循环右移或左移, . 个地亮,循环不止. 个地亮,循环不止. MOV A,#80H DIS: MOV P1,A ACALL DELAY RR A AJMP DIS 3.8 设逻辑运算表达式为: . 设逻辑运算表达式为: Y = A (B + C) + D (E + F ) 其中变量 A,B,C 分别为 P1.0,P1.4,定时器 1 溢出

标志 TF1,D,E,F 分别为 22H.0,22H.3,外中断 , , , , , , , , , 现上述逻辑功能的程序段. 方式标志 IE1;输出变量为 P1.5.试编写实现上述逻辑功能的程序段. ; .试编写实现上述逻辑功能的程序段 MOV C,P1.4 ORL ANL MOV MOV ORL ANL CPL ORL MOV C,/TF1 C,P1.0 F0,A C,22H.3 C,/IE1 C,22H.0 C C,/F0 P1.5,C ; (B + C) ; A (B + C) ;用户自定义标志位,暂存数据 ; (E + F ) ; D (E + F ) ; D (E + F ) ; A (B + C) + D (E + F ) 4.1 试设计数据块传送程序,将起始地址为 0400H 的 100 个连续单元中的内容送到以 4000H 为首址的区 . 试设计数据块传送程序, 域中去 解:分析:地址为 16 位,且进行数据传送,所以连续单元应为外部的存储器,只能使用外部数据传送指 令,由于源和目的地址都为 16 位,所以要保存 DPTR 的值,但源低 8 位和目的低 8 位相同,可以用一个 寄存器保存. MOV R0,#00 NEXT: MOV DPH,#04H MOV DPL,R0 MOVX A,@DPTR MOV DPH,#40H MOVX @DPTR,A INC R0 CJNE R0,#100,NEXT 4.2 试编写程序,计算片内 RAM 区 40H~47H8 个单元中数的算术平均值,结果存放在 4AH 中. 个单元中数的算术平均值, . 试编写程序, ~ 解:分析:8 个数总和最大值为 FFH×8=7F8H,所以求和时必须用两字节加法,设 R7 保存和高 8 位, R6 保存低 8 位,求和后再除以 8 即得算术平均值,这里需使用 16/8 除法,但因为除数为 23,所以可以直 4 接通过算术右移 3 位实现除以 8,前提存储的数据为无符号数. MOV MOV MOV NEXT : MOV INC ADD MOV CLR A ADDC MOV CJNE MOV DIV8: CLR C MOV RRC MOV MOV RRC MOV DJNZ R0,#40H R6,#00H R7,#00H A,@R0 R0 A,R6 R6,A ;和低字节清零 ;和高字节清零 ;取出一个字节 ;地址指针下移 ;低字节求和 ;保存和的低字节 A,R7 ;如果低字节求和有进位,则加至高字节 R7,A ;保存和的高字节 R0,#48H,NEXT R1,#03H ;循环移位 3 次,实现除以 8 A,R7 A R7,A A,R6 A R6,A R3,DIV8 ;高字节先移位,将 D0 移至 C ;将 C 移入低字节的 D7,从而实现 16 位数据的移位 16 位除以 8 位除法子程序: 位除法子程序: 被除数 R6R5,除数 R4,商 R3R2,余数 R1 DIV168: JC NEXT MOV R3,#00H MOV A,R2 MOV R1,#00H ADD A,#01H NEXT2: MOV R2,A CLR C JNC NEXT2 MOV A,R5 INC R3 SUBB A,R4 AJMP NEXT2 MOV R5,A NEXT: MOV A,R5 MOV A,R6 ADD A,R4 SUBB A,#00H MOV R1,A MOV R6,A RET 4.3 设有两个长度为 15 的数组,分别存放在 0200H 和 0500H 为首地址的存储区域中,试编写程序求 的数组, 为首地址的存储区域中, . 其对应项之和, 为首地址的存储区域中. 其对应项之和,结果存放在以 0300H 为首地址的存储区域中. 解:分析:0200H 和 0500H 都是片外地址,必须利用 MOVX 指令获取数据,这将导致 DPTR 使用不方 便,解决办法: (1)0200H,0500H 和 0300H 低字节地址相同,可以共用 DPL,DPH 单独处理; (2)可以考虑先将两个存储区的数据先转移到内部 RAM 中,然后再进行运算. 这里只是求对应项之和,并不是多位数求和,两数相加,可能产生进位,这里应该只考虑没有进位的情 况. 这里采用第一种方法 5 MOV R0,#15 MOVX A,@DPTR MOV DPL,#00H ADD A,B NEXT: MOV DPH,#02H MOV DPH,#03H MOVX A,@DPTR MOVX @DPTR,A MOV B,A INC DPTR MOV DPH,#05H DJNZ R0,NEXT 4.4 在起始地址为 2100H,长度为 64 的数表中找 F 的 ASCII 码,并将其地址送到 1000H 和 1001H 单 . , 元中去. 元中去. 解:都为 RAM 单元,只要找到\,则停止查找.利用寄存器 R7 保存高 8 位地址,R6 保存低 8 位地 址. SF: MOV DPTR,#2100H MOVX @DPTR,A MOV R0,#64 INC DPTR NEXT1:MOVX A,@DPTR MOV A,R7 CJNE A,#4FH,NEXT2 MOVX @DPTR,A MOV R7,DPH AJMP SFEND MOV R6,DPL NEXT2:INC DPTR MOV DPTR,#1000H DJNZ R0,NEXT1 MOV A,R6 SFEND: RET 4.5 设计一个多字节无符号数加法子程序和减法子程序. . 设计一个多字节无符号数加法子程序和减法子程序. 解: (1)多字节无符号数加法 (2)多字节无符号数减法 设 R0 为加数首地址,R1 为被加数首地址,R2 设 R0 为被减数首地址,R1 为减数首地址,R2 为字节数 为字节数 JIAFA: CLR C JIANFA: CLR C NEXT: MOV A,@R0 NEXT: MOV A,@R0 ADDC A,@R1 SUBB A,@R1 MOV @R0,A MOV @R0,A INC R0 INC R0 INC R1 INC R1 DJNZ

R2,NEXT DJNZ R2,NEXT RET RET 4.6 试设计一个双字节无符号数乘法子程序和除法子程序. . 试设计一个双字节无符号数乘法子程序和除法子程序. 解:设被乘数为 R7R6,乘数为 R5R4,结果存于 R3R2R1R0 设被除数为 R7R6,除数为 R5R4,商存于 R3R2,余数存于 R1R0 将被除数减除数,够减商加 1,然后将差作为被减数,继续前面的减法操作,直到不够减为止,这时需 要恢复余数. 6 MUL1616:MOV MOV MUL MOV MOV MOV MOV MUL ADD MOV A,R6 B,R4 AB R0,A R1,B A,R7 B,R4 AB A,R1 R1,A MOV ADC MOV MOV MOV MUL ADD MOV MOV ADC A,B A,#0 R2,A A,R6 B,R5 AB A,R1 R1,A A,B A,R2 MOV MOV MOV MUL ADD MOV MOV ADC MOV RET R2,A A,R7 B,R5 AB A,R2 R2,A A,B A,#0 R3,A DIV1616:MOV DPTR,#0 JC NEXT MOV R1,A LOOP: CLR C INC DPTR MOV A,DPH MOV A,R6 JMP LOOP MOV R3,A SUBB A,R4 NEXT: MOV A,R6 MOV A,DPL MOV R4,A ADD A,R4 MOV R2,A MOV A,R7 MOV R0,A RET SUBB A,R5 MOV A,R7 MOV R7,A ADC A,R5 4.7 在 3000H 为首的存储器区域中,存放着 14 个由 ASCII 码表示的 0~9 之间的数,试编写程序将它 为首的存储器区域中, . ~ 之间的数, 单元中. 们转换成 BCD 码,并以压缩 BCD 码的形式存放在 2000H~2006H 单元中. ~ 解:0~9 的 ASCII 码为 30H~39H,首先必须去掉其中的 3,可以通过减去 30H 实现,也可通过 ANL 实现.另外还得将两个 BCD 码压缩成一个 BCD 码,注意低地址对应低字节,比如 3000H 为 31H(低字 节) ,3001H 为 38H(高字节) ,合并后应为 81H,存于 2000H 单元,可利用 ORL 或 ADD 进行合并. 由于涉及到源和目的地址都为 16 位,为了方便操作,现将转换结果存于内部 RAM. MOV R0,#30H MOV @R0,A MOV R1,#14 INC R0 MOV DPTR,#3000H CJNE R1,#37H,NEXT MOV R0,#30H NEXT: MOVX A,@DPTR ;取出低字节 MOV DPTR,#2000H INC DPTR ;源区地址指针下移 NEXT2:MOV A,@R0 ANL A,#0FH ;低字节转换为 BCD 码 INC R0 MOV R4,A ;暂存数据 MOVX @DPTR,A MOVX A,@DPTR ;取出高字节 INC DPTR INC DPTR CJNE R0,#37H,NEXT2 ANL A,#0FH ;高字节转换为 BCD 码 SWAP A ;高低四位互换 ORL A,R4 ;将两个 BCD 码合并 4.8 编写一段程序,模拟如图所示的逻辑电路的逻辑功能,要求将四个输入与非门的逻辑模拟先写成一 . 编写一段程序,模拟如图所示的逻辑电路的逻辑功能,要求将四个输入与非门的逻辑模拟先写成一 个子程序,然后以多次调用得到整个电路的功能模拟. 都已定义为位地址, 个子程序,然后以多次调用得到整个电路的功能模拟.设 X,Y,Z 和 W 都已定义为位地址,若程序中还 , , 需要其他地址标号,也可以另行定义. 需要其他地址标号,也可以另行定义. 解: 方法一:设计四输入与非门子程序,利用子程序必定要传递参数,但位操作的传送指令必须由 C 完成,所 以调用子程序时参数传递较复杂. 7 MOV MOV MOV CPL MOV MOV MOV MOV MOV ACALL MOV SETB MOV MOV MOV MOV MOV MOV ACALL MOV C,W 00H,C C,Z C 01H,C C,Y 02H,C C,X 03H,C NAND4 04H,C 00H C,X 01H,C C,Y 02H,C C,Z 03H,C NAND4 05H,C CPL MOV CPL MOV MOV MOV ACALL SETB MOV MOV MOV MOV MOV ACALL MOV AJMP NAND4: ANL ANL ANL CPL C RET END 01H C,Y C 02H,C C,W 03H,C NAND4 00H 01H,C C,04H 02H,C C,05H 03H,C NAND4 F,C $ MOV C,00H C,01H C,02H C,03H SETB 00H MOV C,X MOV 01H,C 方法二:利用宏实现 MACRO,宏可以带参数,所以参数传递将很方便 NAND4 MACRO A1,A2,A3,A4 MOV ONE,C MOV C,A1 NAND4 X,Y,ONE,W ANL C,A2 MOV 04H,C ANL C,A3 SETB ONE ANL C,A4 NAND4 X,Y,ONE,W CPL C MOV 05H,C ENDM CPL Y SETB ONE ORG 0000H NAND4 X,Y,ONE,W AJMP MAIN MOV 06H,C ORG 0030H SETB ONE MAIN: MOV C,Z NAND4 04H,05H,06H,ONE CPL C MOV F,C 5.3 已知 8051 单片机系统时钟频率为 6MHz,试利用定时器 T0 和 P1 口输出矩形脉冲,其波形如图所 . 口输出矩形脉冲, , 示(建议用方式 2) ) . 解:定时器 T0 的工作方式:方式 2,定时方式,所以 TMOD 为:0000010(02H) 定时初值: 8-TH0 初值)×时钟周期×12=(28-X)×(1/6M)×12=40s (2 X=236=0ECH,360s 则为 9 次定时中

断 MOV TMOD,#02H JNB TF0,$ CLR TF0 MOV TH0,#0ECH MOV TL0,#0ECH NEXT1: CLR P1.0 CLR P1.0 WAIT2: JNB TF0,$ SETB TR0 CLR TF0 DJNZ R0,WAIT2 NEXT3: MOV R0,#09H SETB P1.0 AJMP NEXT3 8 5.4 要求 8051 单片机定时器的定时值以内部 RAM 的 20H 单元的内容为条件而改变;当(20H)= . 单元的内容为条件而改变; )=00H )= )=01H 时,定时值为 20ms.请根据以上要求编写相应程序. 时,定时值为 10ms;当(20H)= ; )= .请根据以上要求编写相应程序. 解:采用定时器 T0,工作方式:方式 1,定时方式,所以 TMOD 为:0000001(01H) 定时初值:216-T0 初值) ( ×时钟周期×12= 16-X) (2 ×(1/6M)×12= 16-X) (2 2s=10[(20H)+1]1000s X = 65536 10[(20H) + 1]1000 = 65536 5000 5000 × (20H) 2 = 60536 5000(20H ) = EC 78H 1388H × (20H ) (这里 20H 单元的内容最大为 12,否则超出 16 为定时器的范围) TIMER:MOV A,20H MOV B,#88H MUL AB ;88H×(20H) MOV R0,A ;R0 保存低字节 MOV R1,B ;R1 保存高字节 MOV A,20H MOV B,#13H MUL AB ;13H×(20H) ADD A,R1 MOV R1,A ;只要限制 20H 单元内容小于 13,1388H×(20H)即为两字节 CLR C MOV A,78H SUBB A,R0 ;78H 减去 1388H×(20H)的低字节 MOV TL0,A MOV A,#0ECH SUBB A,R1 ;ECH 减去 1388H×(20H)的高字节 MOV TH0,A MOV TMOD,#01H SETB TR0 WAIT: JNB TF0,WAIT RET ;定时时间到 上述定时初值的设置适合(20H)为 00H~12H,即可以实现 10ms~190ms 的定时. 若仅仅是 10ms 和 20ms 两种情况,初值设置将更简单 X 00 H = 60536 = EC 78H TIMER: MOV CJNE MOV MOV AJMP NEXT1: CJNE X 01H = EC 78H 1388H × (01H ) = D8F0H MOV MOV NEXT2: MOV SETB WAIT: JNB RET TH0,#0D8H TL0,#0F0H TMOD,#01H ;T0 工作方式 TR0 TF0,WAIT ;定时时间到 A,20H A,#00H,NEXT1 TH0,#0ECH TL0,#78H NEXT2 A,#01H,NEXT2 5.5 试用定时器 T1 设计外部事件计数器.要求每计数 1 万个脉冲,就将 T1 转为 10ms 定时方式,当 . 设计外部事件计数器. 万个脉冲, 定时方式, 定时到后,又转为计数方式,如此反复循环不止. 定时到后,又转为计数方式,如此反复循环不止.设系统的时钟频率为 6MHz,建议选用方式 1 编写相 , 应程序. 应程序. 解:T1 工作方式为方式 1,计数方式:TMOD:01010000(50H) ,定时方式:TMOD:00010000(10H) 计数初值 X=M-计数模值=65536-10000=55536=D8F0H 定时初值(65536-X)×2=10000,X=60536=EC78H MAIN: MOV TMOD,#50H WAIT1: JBC TF1,NEXT1 MOV TL1,#0F0H AJMP WAIT1 MOV TH1,#0D8H NEXT1: MOV TMOD,#10H SETB TR1 MOV TL1,#78H 9 MOV WAIT2: JBC TH1,#0ECH TF1,MAIN AJMP WAIT2 5.7 利用 8051 单片机定时器测量某正脉冲宽度宽度,采用何种工作方式可以获得最大的量程?若时钟 . 单片机定时器测量某正脉冲宽度宽度,采用何种工作方式可以获得最大的量程? 频率为 6MHz,则允许测量的最大脉宽是多少? ,则允许测量的最大脉宽是多少? 解:要获得最大量程,那么定时/计数器的计数值必须达到最大,只有方式 1 是工作在 16 位计数模式. 因为测脉宽,所以定时/计数器工作于定时方式,且由外部中断引脚电平启动定时. 最大定时时间为: (M-X)×T=(65536-0)×12×1/6MHz=131.072ms 7.3 某异步通讯接口,其帧格式由一个起始位,7 个数据位,1 个奇偶校验位和一个停止位组成.当该 . 某异步通讯接口,其帧格式由一个起始位, 个数据位, 个奇偶校验位和一个停止位组成. 接口每分钟传送 1800 个字符时,计算其传送波特率. 个字符时,计算其传送波特率. 解:由帧格式可知:一个字符由 1+7+1+1=10 位组成,波特率=1800×10/60=300 波特. 7. 为什么定时器 T1 用作串行口波特率发生器时常采用工作方式 2?若已知 T1 设置成方式 2, . 6 ? , 用作波 特率发生器, 特率发生器,系统时钟频率为 11.0592MHz,求可能产生的最高和最低的波特率各是多少? ,求可能产生的最高和最低的波特率各是多少? 答:因为定时器 T1 的方式 2 为自动重装定时初值,这样操作方便,也避免了因重装定时初值引起的定 2 SMOD f OSC 1 时误差.由波特率= × 32 12 256 初值 当初值为 0,SMOD=0 时,得到最低波特率=112.5 当初值为 255,SMOD=1 时,得到最低波特率=57.6K 7.7 在 8051 应用系统中,时钟频率为 6MHz.现需利用定时器 T1 方式 2 产生