设系统时钟频率为12MHz,利用定时器T0中断,实现从P2.1输出高电平宽度为10ms,低电平为20ms的矩形波。
#include<reg51.h>
bit flag=0;
sbit a1=P2^1;
int main(void)
{
unsigned int count=0;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(flag)
{
count=count+1;
if(count==1)
{a1=1;}
else if(count==2)
{
a1=0;
}
else if(count==3){
a1=0;
count=0;
}
flag=0;
ET0=1;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
}
}
}
void int2(void) interrupt 1
{
flag=1;
ET0=0;
}
该程序通过设置系统时钟为12MHz,利用8051单片机的定时器T0中断,生成10ms高电平和20ms低电平交替的矩形波。通过调整TH0和TL0的初值,实现了定时中断,从而控制P2.1口的电平变化。
1795

被折叠的 条评论
为什么被折叠?



