⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩形波.c

📁 矩形波发生器源代码
💻 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 + -