使用12MHz晶振,其机器周期为1us
欲产生5000us周期方波,只需在p1.0以2500us时间交替输出高低电平
1.T0为方式0,则M1M0=00H。使用定时功能,C/T=0,GATE=0。T1不用,其有关位设为0。因此,TMOD=00H
2.方式0为13长度计数(TL0高3位不使用),设计数初值为X,则(8192-X)*1us=2500us,得X=5692D。X=1011000111100B。因为TL0高3位不用,所以10110001-00011100B得TH0=B1H,TL0=1CH
3.由控制寄存器TCON的TR0位来控制定时的启动和停止,TR0=1启动,TR0=0停止
C语言程序如下(编译器Keil C)
#include<REG51.H>
sbit FB=p1^0;
void initial(void)
{
TMOD=0x00;
TH0=0xb1;
TL0=0x1c;
IE=0x00;
TR0=1;
}
void main(void)
{
initial();
for(;;)
{
while(!TF0);
TF0=0;
FB=!FB;
}
}
汇编程序如下
ORG 0000H
AJMP START
ORG 30H
START: MOV P1.0,#0FFH
MOV TMOD,#00H
MOV TH0,#0B1H
MOV TL0,#1CH
SETB TR0
LOOP: JBC TF0,NEXT
LJMP LOOP
NEXT: CPL P1.0
MOV TH0,#0B1H
MOV TL0,#1CH
LJMP LOOP
END
温馨提示:答案为网友推荐,仅供参考