📄 矩形波.c
字号:
/*波形发生驱动,在输出端接其它处理电路模块
可制作成个波形/信号发生器**************/
#include <reg51.h>
typedef unsigned char uchar;
sbit signal=P3^0;
uchar counter;
void main(void)
{
// TR0=0; //禁止T0
TMOD=0x11; //T0和T1均选择工作方式1,16位定时器
TH0=(65536-50000)/256; //定时时间为50ms
TL0=(65536-50000)%256;
TH1=(65536-25000)/256; //25ms中断初值
TL1=(65536-25000)%256;
signal=0; //开始时输出为低电平
counter=0; //初始化T1的中断次数为0
EA=1; //使能CPU中断
ET0=1; //使能T0溢出中断
ET1=1; //使能T1溢出中断
TR0=1; //T0开始运行,注意,T1不能现在运行
while(1) //无限循环
{
}
}
void isr_t0(void) interrupt 1 //T0中断服务函数
{
TH0=(65536-50000)/256; //定时时间为50ms
TL0=(65536-50000)%256;
counter++; //中断次数
if(counter==2) //若已中断两次,说明已经过去100ms
{
counter=0 ; //中断次数归零
signal=1; //产生矩形波中的高电平
TR0=0;
TR1=1; //开始计数T1
}
}
//***********T1中断函数******
void isr_t1(void) interrupt 3
{
//禁止T1计数,等待T0将其唤醒
TH1=(65536-25000)/256; //25ms中断初值
TL1=(65536-25000)%256;
counter++; //中断次数
if(counter==2) //若已中断两次,说明已经过去100ms
{
counter=0 ; //中断次数归零
signal=0;
TR1=0;
TR0=1; //开始计数T0
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -