(完整版)第6章作业及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章作业

1、说明定时器T0的四种工作方式。(P.145 第6题)

2、假设单片机晶振fosc=6MHz,若要求定时分别为0.1ms , 1ms , 10ms,定时器T0工作在方式0、方式1、方式2时,其初值应为多少?

晶振fosc=6MHz,则机器周期为2us

定时0.1ms时的初始值:

50=110010 B

模式0:(213-50)=(8192-50)=8142=1111 1110 0 1110 B

TH0=#FEH0 ; TL0=#0EH

模式1:(216-50)=(65536-50)=65486=1111 1111 1100 1110 B

TH0=#0FFH ;TL0=#0CEH

模式2:(28-50)=(256-50)=206=1100 1110 B

TH0=#0CEH ; TL0=#0CEH

定时1ms时的初始值:

500=111110100 B

模式0:(213-500)=(8192-500)=7692=1111 0000 0 1100 B

TH0=#0F0H ; TL0=#0CH

模式1:(216-500)=(65536-500)=65036=1111 1110 0000 1100 B

TH0=#0FEH ; TL0=#0CH

定时10ms时的初始值:

5000=1001110001000 B

模式1:(216-5000)=(65536-5000)=60536=1110 1100 0111 1000 B

TH0=#0ECH ; TL0=#78H

3、假设单片机晶振fosc=6MHz,请利用T0和P1.0输出矩形波,矩形波的高电平宽50us,低电平宽300us。(P.145 第13)

晶振fosc=6MHz→机器周期为2us

定时器T0使之工作于模式3

定时50us的初值为:256-25=231 (E7H)

定时300US的初值为:256-150=106 (6AH)

方法1:

MOV TMOD , #00000011B ;T0工作于模式3

MOV TCON ,#0 ;清TR0 , TF0

MOV TL0 , #0E7H ;高电平初值。 256-25

SETB P1.0 ;P1.0口输出高电平

SETB TR0 ;启动定时器T0

LOOP1: JNB TF0 , LOOP1 ;检测T0是否溢出

CLR TF0 ;清除溢出标志

CLR TR0 ;关闭定时器

MOV TL0 , #6AH ;写低电平初值 256-150

SETB TR0 ;启动定时器T0

CLR P1.0 ;使P1.0输出低电平LOOP2: JNB TF0 , LOOP2 ;检测T0是否溢出

CLR TF0 ;清除溢出标志

CLR TR0 ;关闭定时器

MOV TL0 , #0E7H ;写高电平初值 256-25

SETB TR0 ;启动定时器T0

SETB P1.0 ;使P1.0输出高电平

SJMP LOOP1 ;重复

方法2:

MOV TMOD , #03H ; T0工作于模式3

MOV TCON , #0 ; 清TR0 , TF0

MOV TL0 , #0E7H ; 高电平初值。 256-25

SETB P1.0 ; P1.0口输出高电平

SETB TR0 ; 启动定时器T0

LOOP: JNB TF0 , LOOP ; 检测T0是否溢出

CLR TF0 ; 清除溢出标志

CLR TR0 ; 关闭定时器

JNB P1.0 , NEXT ; P1.0口为低电平转移,

; 高电平顺序执行

MOV TL0 , #6AH ; 定时器T0写入低电平的定时初值

SETB TR0 ; 启动定时器T0

CLR P1.0 ; P1.0口输出低电平

SJMP LOOP ; 返回重复

NEXT: MOV TL0 , #0E7H ; 定时器T0写入高电平的定时初值 SETB TR0 ; 启动定时器T0

SETB P1.0 ; P1.0口输出高电平

SJMP LOOP ; 返回重复

4、假设单片机晶振fosc=12MHz,用T1定时,试编程由P1.0和P1.1引脚分别输出周期为2ms和500us的方波。(P.145 第14题)

晶振fosc=6MHz→机器周期为1us

定时器T0使之工作于模式1

定时250us的初值为:65536-250 = 65286 = 1111 1111 0000 0110 B = FF06 H

方法一:

MOV TMOD , #10H ; T1工作于模式1

MOV TCON , #0 ; TR1、TF1清零

MOV TH1 , #0FFH ; 65536-250=(FF06H)

MOV TL1 , #05H ;

MOV R7 , #4 ; 2ms是500us的4倍

SETB P1.0 ; P1.0置高电平

SETB P1.1 ; P1.1置高电平

SETB TR1 ; 启动定时器T1

LOOP: JNB TF1 , LOOP ; 定时器是否溢出?

CLR TF1 ; 定时器溢出后,清除定时器溢出标志 CPL P1.1 ; 取反P1.1

DJNZ R7 , NEXT ; 4倍关系是否满足?

MOV R7 , #4 ; 重写4倍关系

CPL P1.0 ; 取反P1.0

NEXT: CLR TR1 ; 关闭定时器T1

相关文档
最新文档