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

📄 lignt1.c

📁 一款可用按键控制日光灯管调光的C程序。如果需要更详细的
💻 C
字号:
//LIGHT1.c
//Body: HT48R05A-1
//Mask option
//SysFreq: 2000KHz
//the others use the default value

#include <ht48R05A-1.h>

#define _tmrc4 _0e_4  //timer4 enable bit      

//#define num1 _pb2
#define num1 _pa7
#define num2 _pc1
#define num3 _pb2
#define num4 _pa6

#define LED_ON_OFF _pa0
#define Single _pa1
#define key1 _pb0
#define key2 _pb1

bit On_Off_Flag;
bit OnFlag;
unsigned char brightness;

unsigned int count;
unsigned char half_second,time_delay,time2_delay;
unsigned char min;
#pragma vector isr_4 @ 0x4
#pragma vector isr_8 @ 0x8

//ISR for safequard
void isr_4(){} // external ISR
void isr_8() // timer/event
{ 
   if(count >= 250) //0.5sec //250
	{
        half_second ++;
		time_delay --;
		time2_delay --;
	    count = 0;
	}
    else
        count ++;
} 
void safeguard_init(){
        _intc = 0;
        _tmrc = 0;
        _tmr = 0;
        _pac = 0xff;
        _pbc = 0x03;
        _pcc = 0x03;
}

main()
{
	unsigned char i;
	
	safeguard_init();

	_pbc = 0x07;
  	_pac = 0x7e;
	_pcc = 0x00;
	_pa = 0xff;
/*
_pa = 0x00;
	_pa = 0xff;
_pa = 0x00;
	_pa = 0xff;
_pa = 0x00;
	_pa = 0xff;
_pa = 0x00;
	_pa = 0xff;
_pa = 0x00;
*/
	_pb = 0x07;
	_pc = 0x03;
	OnFlag = 0;
	LED_ON_OFF = 1;
	_delay(2000);
	brightness = 1;
	On_Off_Flag = 1;
	min = 0;

	_intc = 0x5;    //enable timer
	_tmrc = 0x87;   //timer mode (internal clock)
	_tmrc4 = 0;
	_tmr = 0xa0;
	_tmrc4 = 1;    //start timer1   

	while(1)
	{
		/***********key**********************/
		if(!key1)
		{
			_delay(2000);
			if(!key1)
			{
				while(!key1){}
				if(brightness < 4)
				brightness ++;
			}
		}
	
		if(!key2)
		{
			_delay(2000);
			if(!key2)
			{
				while(!key2){}
				if(brightness >1)
				brightness --;
			}
		}
	/***************************************/
	
	/**********adjust*************************/
		switch(brightness)
		{
			case 1:
				_pbc = 0x07;
				num1 = 1;
				num2 = 1;
				num3 = 0;
				num4 = 1;
				break;
			case 2:
				_pbc = 0x07;
				num1 = 0;
				num2 = 1;
				num3 = 0;
				num4 = 1;
				break;
			case 3:
				_pbc = 0x07;
				num1 = 1;
				num2 = 0;
				num3 = 0;
				num4 = 1;
				break;
			case 4:
				_pbc = 0x03;
				num1 = 0;
				num2 = 0;
				num3 = 1;
				num4 = 0;
				break;
			default:
				num1 = 1;
				num2 = 1;
				num3 = 0;
				num4 = 1;
				break;
		}
	/***************************************/
	
	/**********single*************************/
//		if(On_Off_Flag)
		{
			_tmrc4 = 1;
	//		if((!Single)&&(!On_Off_Flag))
			for(i = 0; i < 10; i ++)
			{
				if(!Single)
				{
					time_delay = 20;
					while(time_delay){}
		
					time_delay = 10;
					while(time_delay)
					{
						if(!Single)
						{
							if(_pa0)
								_pa0 = 0;
							else 
								_pa0 = 1;
							min = 1;

							brightness = 1;
							_pbc = 0x07;
							num1 = 1;
							num2 = 1;
							num3 = 0;
							num4 = 1;

							time2_delay = 40;
							while(time2_delay){}
					//		while(1){}
							break;
						}
					}
				}
			}
		}
		
		if(!min)
		{
			_tmrc4 = 0;
			half_second =0;
		}
		else
			_tmrc4 = 1;
//		else
//		if(On_Off_Flag)
		{

			if (half_second >= 200)
			{
	
				half_second =0;
				min ++;
				if (min == 1)
				{
					On_Off_Flag = 0;
					brightness = 1;
				}
				if (min == 2)
				{
					On_Off_Flag = 0;
					brightness = 2;
				}
				if (min == 3)
				{
					On_Off_Flag = 0;
					brightness = 3;
				}
				if (min == 4)
				{
					brightness = 4;
					min = 0;
					On_Off_Flag = 1;
					_tmrc4 = 0;
				}	
			}
		}	
	}
}

⌨️ 快捷键说明

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