利用单片机的定时器t0工作于方式1,实现从p1.0引脚上输出周期为10ms的连续方波,设系统时钟为

利用单片机的定时器t0工作于方式1,实现从p1.0引脚上输出周期为10ms的连续方波,设系统时钟为12mhz。问题:计算定时器T0的计数初值 并说明送入TH0和TL0的计数初值各位请多少。对定时器的工作方式2进行说明

因为周期为10毫秒,定时器中断方式,所以初值应该为:65536-(10/2)*1000=65536-5000
TH0=(65536-5000)/256
TL0=(65536-5000)%256
程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H

MOV TH0,#HIGH(65536-5000)

MOV TL0,#LOW(65536-5000)

SETB TR0

SETB ET0

SETB EA

SJMP $

T0ISR:
CLR TR0

MOV TH0,#HIGH(65536-5000)

MOV TL0,#LOW(65536-5000)

SETB TR0

CPL P1.0

RETI

END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-12
#include<reg51.h>
sbit flag=P1^4;
void main()
{EA=1;
ET1=1;
TMOD=0x01;
TH0=(2^16-2500)/256;
TL0=(2^16-2500)/256;
TR0=1;
while(1);
}
void T()interrupt 1
{flag=!flag;
TH0=(2^16-2500)/256;
TL0=(2^16-2500)/256;
}