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

📄 main.c

📁 单片机at89s52输入脉冲,可以通过开关实现脉冲输出加减速
💻 C
字号:
#include<reg51.h>
#include<intrins.h>//包含NOP指令


//unsigned int count_th,count_tl;
unsigned char number;	//number记录定时次数
unsigned char time1,time2;	//time1是由慢到快的初始值,time2是由快到慢的初始值
unsigned char flag1,flag2;

sbit mode1			=P1^6;//模式1开关信号
sbit mode2			=P1^5;//模式2开关信号
sbit out				=P1^7;//脉冲输出
sbit led1				=P1^4;//模式1指示灯
sbit led2				=P1^3;//模式2指示灯

extern void init_time0();
extern void init_out();
extern void init();
extern void delay(unsigned char,unsigned char);
extern void change(unsigned char,unsigned char);

void main()
{
unsigned int n;
unsigned int a1,a2;
	a1=100;
	a2=100;
	flag1=1;
	flag2=1;
	init();							//相关开关量初始化
	while(1)
	{
	if(mode1==1)
	{
		if(flag1==1)
		{
			if(a1<20000) a1+=250;
			if(a1>=20000) flag1=0;
		}
		else
		{
			if(a1>100) a1-=250;
			if(a1<=100) flag1=1;
		}
		for(n=0;n<a1;n++);
		out=1;
		for(n=0;n<a1;n++);
		out=0;
	}
	if(mode2==1)
	{
		if(flag2==1)
		{
			if(a2<5000) a2+=10;
			if(a2>=5000) flag2=0;
		}
		else
		{
			if(a2>100) a2-=10;
			if(a2<=100) flag2=1;
		}

		for(n=0;n<a2;n++);
		out=1;
		for(n=0;n<a2;n++);
		out=0;
	}
	}
	
}
//***************************************************************************************
//功能:初始化仪表各项功能:
//       
//***************************************************************************************
void init(void)
{
	out=0;					//输出置为0
	led1=0;					
	led2=0;		
	mode1=1;
	mode2=1;			
	delay(10,50);
}
//***************************************************************************************
//功能:设置定时器0并打开中断禁止
//***************************************************************************************
void init_time0(void)
{
	TMOD=0x15;						//定时器1模式1计数器0模式1
	TH1=0x3c;
	TL1=0xb0;				//装载50ms的初值
	TH0=0x00;
	TL0=0x00;				//计数器初值
	TR0=1;					//启动定时器1	
	TR1=1;					//打开计数器0
	ET0=1;
	EX1=0;					//外中断1禁止位
	ET1=1;					//定时器1中断允许
	EA=1;					//开总中断允许
}
void time1_isr(void) interrupt 3	using 0		//定时器1中断服务程序
{
	number++;
}


//***************************************************************************************
//功能:延时子程序,时间为time1*time2
//***************************************************************************************
void delay(unsigned char time1,unsigned char time2)
{
	unsigned char tmp1,tmp2;
	for(tmp1=0;tmp1<=time1;tmp1++)
	{	
		for(tmp2=0;tmp2<=time2;tmp2++)
		{
			_nop_();	
		}
	}
}

⌨️ 快捷键说明

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