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

📄 51init.c

📁 stc89c58的c51测试程序
💻 C
字号:
#include <regX51.h>
#include "intrins.h"

unsigned int Ri=0;//pwm脉冲宽度  		|R_PWM
unsigned int Rj=0;//pwm低电平宽度,		|R_PWM
unsigned int Ro=0;//pwm					|R_PWM
unsigned int Rp=0;//pwm					|R_PWM

unsigned int Gi=0;//pwm脉冲宽度  		|G_PWM
unsigned int Gj=0;//pwm低电平宽度,		|G_PWM
unsigned int Go=0;//pwm					|G_PWM
unsigned int Gp=0;//pwm					|G_PWM

unsigned int Bi=0;//pwm脉冲宽度  		|B_PWM
unsigned int Bj=0;//pwm低电平宽度,		|B_PWM
unsigned int Bo=0;//pwm					|B_PWM
unsigned int Bp=0;//pwm					|B_PWM

unsigned int r=0;//t1 led闪烁时间
unsigned char senddata=0x00;

unsigned char CLN=0;

sfr Wd=0xa6;//定义89s51看门狗寄存器

	
sbit    R_led=0xa0;
sbit    G_led=0xa1;
sbit	B_led=0xa2;

bit		R_led_zt=1;
bit		G_led_zt=1;
bit		B_led_zt=1;

/********************************************************************
定时计数器0
*********************************************************************/
void int_0()interrupt 1
{
	TL0=0x66;//1ms
	TH0=0xfc;
//RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
	if(Ri>Ro)///////////////j是亮的时间,i-j是灭的时间/////
		{
		if(!R_led_zt)R_led=0;		else R_led=1;
		Ri=0;Rj=0;
		}else Ri++;//

	if(Rj>Rp){R_led=1;}
		else Rj++;///////////////////////////////////////////////
//RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

//GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
	if(Gi>Go)///////////////j是亮的时间,i-j是灭的时间/////
		{
		if(!G_led_zt)G_led=0;    else G_led=1;
		Gi=0;Gj=0;
		}else Gi++;//

	if(Gj>Gp){G_led=1;}
		else Gj++;///////////////////////////////////////////////
//GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

//BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
	if(Bi>Bo)///////////////j是亮的时间,i-j是灭的时间/////
		{
		if(!B_led_zt)B_led=0;		else B_led=1;

		Bi=0;Bj=0;
		}else Bi++;//

	if(Bj>Bp){B_led=1;}
		else Bj++;///////////////////////////////////////////////
//BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

if(r>1000)////led闪光的时间
	{
	//ledsszt=!ledsszt;
	

   

	if(CLN<6)CLN++;  else CLN=0;


	Ro=1;Rp=10;//RRRRRRRRRRRRRRRRRRRRRRR
	Go=1;Gp=1;//RRRRRRRRRRRRRRRRRRRRRRR
	Bo=1;Bp=1;//RRRRRRRRRRRRRRRRRRRRRRR

	R_led_zt=0;
	G_led_zt=0;
	B_led_zt=0;

	//P3_5=1;
	//P3_6=1;
	//P3_7=1;

	r=0;//
	}else r++;//


}

/********************************************************************
定时计数器1
*********************************************************************/
//void int_1()interrupt 3
//{
//	TL1=0xb0;
//	TH1=0x3c;
//}

/*----------------------------
串口中断
------------------------------*/
void serial()interrupt 4		//串口中断子程序  接收到的数据存在datasbuf中
{	
	ES=0;
	if(RI)
		{
		RI=0;
		senddata=SBUF;	
		

		}
	
	ES=1;
}
void mdelay(unsigned char delay)
{unsigned int i; 
    for(;delay>0;delay--)
        {for(i=1;i<250;i++)
            {;}
        }
}

//void WatchDog()//打开,复位89s51看门狗
//{
//Wd=0x1e;
//Wd=0xe1;
//}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -