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

📄 ex.c

📁 这是购买周立功的试验箱时候松的源代码。很经典的代码。希望学习单片机的朋友好好研究。短小精悍。有意思。这是第一部分。
💻 C
字号:
#include "reg52.h"

sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;

unsigned char PWMH;			//高电平脉冲的个数
unsigned char PWM;				//PWM周期
unsigned char COUNTER;	

void K1CHECK();
void K2CHECK();

void INTTO() interrupt 1 
{
	COUNTER++;				//计数值加1
	if((COUNTER!=PWMH)&&(COUNTER==PWM))		//如果等于高电平脉冲数
	{
		COUNTER=1;			//计数器复位
		P1_0=1;				//P1.0为高电平
	}
	else if(COUNTER==PWMH)
		P1_0=0;				//P1.0变为低电平
}

main()
{
	PWMH=0x02;	
	COUNTER=0x01;
	PWM=0x15;
	TMOD=0x02;			//定时器0在模式2下工作
	TL0=0x38;			//定时器每200us产生一次溢出
	TH0=0x38;			//自动重装的值
	ET0=1;				//使能定时器0中断
	EA=1;				//使能总中断
	TR0=1;				//开始计时

	while(1)
	{
		if(P1_1==0) 
			K1CHECK();//扫描KEY1,
		if(P1_2==0)
			K2CHECK();//扫描KEY2,如果按下KEY2,跳转到KEY2处理程序
	}				
}
void K1CHECK()
{
	while(P1_1==0);
	if(PWMH!=PWM)
	{
		PWMH++;
		if(PWMH==PWM)
		{
			TR0=0;
			P1_0=1;	
		}
		else
		{
			if(PWMH==0x02)
			{
				TR0=1;	
			}
		}
	}
}
void K2CHECK()
{
unsigned char TEMP;
	while(P1_2==0);
	if(PWMH!=0x01)
	{
		PWMH--;
		TEMP=PWM;
		TEMP--;
		if(PWMH==0x01)
		{
			TR0=0;
			P1_0=0;	
		}
		else
		{
			if(PWMH==TEMP)
			{
				TR0=1;	
			}
		}
	}
}

⌨️ 快捷键说明

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