第三次作业讲评···
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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口引脚上的信号如下图所示: