当前位置:首页 > 单片机 > 单片机
[导读] 利用定时器T0产生定时脉冲。每隔2ms产生宽度为2个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHZ)。 答:首先求出定时器T0初值。由于时钟频率为6MHZ,所以,机器周期为2μs。因为:t=(213-T0

利用定时器T0产生定时脉冲。每隔2ms产生宽度为2个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHZ)。


答:首先求出定时器T0初值。由于时钟频率为6MHZ,所以,机器周期为2μs。


因为:t=(213-T0初值)′机器周期


所以,当t=2ms时,则:(213-T0初值)′2′10-6=2′10-3


解得:T0初值=7096=11011101 11000B,其中将高8位11011101 B=DDH赋给TH0,低5位11000B=18H赋给TL0。


方法一:

采用查询工作方式,编程如下:


ORG0000H

AJMPMAIN

ORG0100H


MAIN:CLRP1.0

MOVTMOD , #00H;设定T0的工作方式

MOVTH0 , #0DDH;给定时器T0送初值

MOVTL0 , #18H


SETBTR0;启动T0工作


LOOP:JNBTF0 , $;$为当前指令指针地址

CLRTF0


SETBP1.0;产生2μs正脉冲

CLRP1.0

MOVTH0 , #0DDH;重装载TH0和TL0


MOVTL0 , #18H

SJMPLOOP


END


方法二:


采用中断工作方式,编程如下:

ORG0000H


AJMPMAIN

ORG000BH

AJMPT0INT

ORG0100H


MAIN:CLRP1.0


MOVTH0 , #0DDH;给定时器T0送初值


MOVTL0 , #18H

MOVIE , #82H;允许T0中断


SETBTR0;启动T0


SJMP$

中断服务程序:


ORG0300H


T0INT: SETBP1.0

CLRP1.0


MOVTH0 , #0DDH;重装载TH0和TL0

MOVTL0 , #18H

RETI




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭