单片机定时器如何输出连续的方波?

发布网友 发布时间:2022-04-20 10:07

我来回答

2个回答

热心网友 时间:2023-11-02 21:18

因为周期为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

热心网友 时间:2023-11-02 21:18

#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;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com