第三次作业讲评···

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

116页

8、利用定时器/计数器T0从P1.0输出周期为1s ,脉宽为20ms 的正脉冲信号,晶振频率为12MH Z 。试设计程序。

解:波形如图所示

从图中可知,高电平持续时间是20ms ,低电平持续时间是980ms ,低电平为高电平持续时间的49倍。 用T0的方式1定时20ms ,采取中断方式,在中断服务程序中,利用R7作为计数的寄存器,赋值50,每次20ms 中断之后将R7内容减一,当R7是50时也就是第一次20ms 将P1.0置高电平,当R7小于等于49时将P1.0清零,R7减到0了则赋回初值50,而时间常数计算如下式:

其中,定时长度为20ms ,并由于晶振频率为12MH Z ,所以机器周期长度为1微秒

2000010

11020X 26

3

16

=⨯⨯==

---机器周期长度

定时长度

H 0E 1B 0455362000065536X ==-=

程序如下:

ORG 0 SJMP MAIN ORG 0BH SJMP INT0

ORG 30H

MAIN: MOV TMOD, #1

MOV TH0, #0B1H MOV TL0, #0E0H

SETB ET0 SETB EA

MOV R7, #50 SETB P1.0 SETB TR0 SJMP $

INT0: MOV TH0, #0B1H MOV TL0, #0E0H DJNZ R7, EXIT

MOV R7, #50 SETB P1.0 SIMP BACK

EXIT: CLR P1.0 BACK: RETI END

9、要求从P1.1引脚输出1000H Z 的方波,晶振频率为12MH Z 。试设计程序。 解:

1000H Z 的方波的周期是1ms ,则每隔0.5ms 对P1.1取反一次则成为一个方波信号 用T0的方式1定时0.5ms ,采取中断方式,初值计算如下式:

其中,定时长度为0.5ms ,并由于晶振频率为12MH Z ,所以机器周期长度为1微秒

50010

1105.0X 26

3

16

=⨯⨯==

---机器周期长度

定时长度

CH 0FE 06503650065536X ==-=

程序如下:

ORG 0 SJMP MAIN ORG 0BH SJMP INT0

ORG 30H

MAIN: MOV TMOD, #1

MOV TH0, #0FEH MOV TL0, #0CH

SETB ET0 SETB EA SETB P1.1 SETB TR0 SJMP $

INT0: MOV TH0, #0FEH MOV TL0, #0CH CPL 1.1

RETI END

10、试用定时器/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms 的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MH Z 。 解:

首先将T1设成方式1的计数模式,所以(TMOD )= #50H, 而计数初值=65536-100=65436=0FF9CH 所以此时,(TH1)= #0FFH, (TL1)= #9CH

而当计够100次之后产生中断,将T1设成方式1的定时模式,所以(TMOD )= #10H ,其中,定时长度为10ms ,并由于晶振频率为12MH Z ,所以机器周期长度为1微秒,定时初值计算如下:

100001011010X 26

3

16

=⨯⨯==

---机器周期长度

定时长度

H 0F 8D 0555361000065536X ==-=

所以此时,(TH1)= #0D8H, (TL1)= #0F0H

程序采用中断方式,则计数中断和定时中断都会进入该中断服务程序,由于计数中断和定时中断是交替进行的,所以用一个软件标志位表示进入中断服务程序时的奇偶次,在此选取PSW 的一个用户自定义位PSW.5,该位的位名称是F0,预先清零,而在每次进入中断服务程序时都将它取反,则在F0清零的时候

标志着计数功能,F0置位的时候标志着定时功能,程序如下所示:

ORG 0

SJMP MAIN

ORG 1BH

SJMP INT1

ORG 30H

MAIN: MOV TMOD, #50H

MOV TH1, #0FFH

MOV TL1, #9CH

CLR F0

SETB ET1

SETB EA

CLR P1.7

SETB TR1

SJMP $

INT1: CPL F0 ;每次进入中断服务程序,都改变F0的奇偶性JNB F0, POSI

SETB P1.7 ;定时方式期间,P1.7高电平

MOV TMOD, #10H ;定时10ms,高电平会持续10ms,也就是正脉冲

MOV TH1, #0D8H

MOV TL1, #0F0H

SJMP EXIT

POSI: CLR P1.7 ;计数方式期间,P1.7低电平

MOV TMOD, #50H

MOV TH1, #0FFH

MOV TL1, #9CH

EXIT: RETI

END

11、利用定时器/计数器T0产生定时时钟,由P1口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒(8个灯依次亮一遍为一个周期)。

解:假设晶振频率为12MH Z,所以机器周期长度为1微秒,再假设指示灯是用高电平点亮,P1口引脚上的信号如下图所示:

相关文档
最新文档