8051单片机晶振频率为6MHZ ,再P1.1口要输出50HZ的方波,定时周期为多少微秒。

如题所述

50Hz的方波对应的周期为20毫秒,也就是20000微秒,但程序中使用定时中断翻转的话,那就得设计为10000微秒,中断2次输出一个周期的方波。追问

是怎么计算出来的, 能说一下计算公式吗?
如果用T1工作方式1 。 用汇编语言写出程序可以吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-03
void Timer0Init(void) //10毫秒@6.000MHz C 语言
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TMOD |= 0x01; //设置定时器模式
TL0 = (65536-5000)%256; //设置定时初值 12.000MHz 为 -10000 = 10 mS
TH0 = (65536-5000)/256; //设置定时初值 6.000MHz 为 -5000 = 10 mS
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}

TIMER0INIT: ;10毫秒@6.000MHz 汇编语言
ANL AUXR,#7FH ;定时器时钟12T模式
ANL TMOD,#0F0H ;设置定时器模式
ORL TMOD,#01H ;设置定时器模式
MOV TL0,#(65536-5000) ;设置定时初值
MOV TH0,#(65536-5000)/256 ;设置定时初值
CLR TF0 ;清除TF0标志
SETB TR0 ;定时器0开始计时
RET追问

10MS是怎么计算出来的, 能写一下计算公式吗?

朋友你有这方面的习题吗?给我弄一点

追答

有专门的 计算器。网上很都,如 STC 官网的 STC15-ISP软件 就包含这种计算器。

第2个回答  2013-01-02
10ms对P1.1求反(CPL P101)一次,T0定时器设置方式1(MOV TMOD,#1),T0初值=0EC78H
OK追问

10MS是怎么计算出来的, 能写一下计算公式吗?

朋友你有这方面的习题吗? 帮我弄一点。

追答

50Hz脉冲的周期是20ms,10ms上升;10ms下降
上网找一个51定时器的计数器软件,直接算出来

第3个回答  2013-01-02
约等于120048微秒。计算依据:方波的周期/时钟周期。追问

是怎么计算出来的, 能说一下计算公式吗?
如果用T1工作方式1 。 用汇编语言写出程序可以吗?

追答

8051定时器计算公式:T1 = 65536-(1/50Hz)/(1/6MHz)/12/2
MOV TMOD,01H 设置定时器工作方式
MOV TH1,#ECH
MOV TL1,#64H
SETB ET1 允许T1中断
SETB TR1 开始计数
SETB EA 开中断
定时器中断:CPL P1.1