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

📄 button.c

📁 基于PIC12F6**的旋钮调节灯光亮度调节显示
💻 C
字号:
//#include <pic.h>
#include <pic12f6x.h>

#define ADIN GPIO0
#define out1 GPIO1
#define out2 GPIO2
unsigned int zhkb=0;
unsigned int zhkb1=0;
unsigned int zhkb2=0;
unsigned char ch_jump=0;
unsigned char m=0;
unsigned int ADbuf;
  //__CONFIG ( INTIO & UNPROTECT & PWRTDIS & BORDIS & WDTDIS & MCLRDIS  );

void initial()
{
    GPIO = 0x00;
    TRIS0 = 1;
    TRIS4 = 1;
    TRIS1 = 0;
    TRIS2 = 0;
    ANS1 = 0;
    ADCON0 = 0x00;
    //TRISIO = 0b00000001;            //设置GP0为输入;GP1,GP5为输出管脚;
	ANSEL = 0b00001001;             //设置模拟选择转换寄存器,由内部振荡器产生AD转换时钟选择,
                                    //GP0设置为模拟量输入;
	ADCON0 = 0b10000001;            //设置AD控制寄存器,AD采样值为右对齐,模拟通道选择AN0,
                                    //AD转换未进行,AD转换器打开;
	OPTION = 0b11000010;            //OPTION寄存器,设置GPIO禁止上拉,选择内部时钟,分频器分给TIMER0,
                                    //
    CM2 = 1;
    CM1 = 1;
    CM0 = 1;
    T0IE = 1;
 //   VCFG = 0;
    out1 = 0;
    out2 = 0;

}                 



void delay(unsigned int i)          //延时程序;
{
  while(--i);
}

void output()
{
    delay((129-zhkb));    
    out1 = 1;
    out2 = !out1;
    delay((zhkb));
    out1 = 0;
    out2 = 0;
    delay((129-zhkb));
    out1 = 0;
    out2 = !out1;
    delay((zhkb));
    out1 = 0;
    out2 = 0;
}

union adres
{
   int		y1;
   unsigned  char  adre[2];
}adresult;	                      //设置一个共用体,用来存放10位AD转换的值;

void adpick(void)
{
       
   if(ADIF = 1)   
    {                             //clear interrupt flag 

       ADIF = 0;
       ADbuf = 0;

		if(!ch_jump)
       {adresult.adre[0]=ADRESL;  
	   adresult.adre[1]=ADRESH;  //AD 
	   ADbuf = adresult.y1;
       zhkb1 = ADbuf/8-25;
		CHS0=1;CHS1=1;ch_jump=1;}
		else
       {adresult.adre[0]=ADRESL;  
	   adresult.adre[1]=ADRESH;  //AD 
	   ADbuf = adresult.y1;
       zhkb2 = ADbuf/8;
		CHS0=0;CHS1=0;ch_jump=0;}
	   m++;
	if(m==2)
	{/*if(zhkb2<40)*/
		zhkb=zhkb1;
    /* else
		{if(zhkb1<((zhkb2-25)*8+5))
			zhkb=5;
		else
			zhkb=zhkb1-(zhkb2-25)*8;
		 /*if(zhkb<5)
		 zhkb=5;*/
		/*}*/
	m=0;
	}
       GODONE=1;                     //next enable ad input
//       output();
     
    }
}

main()
{
   
    initial();
       ADIF = 0;
	GODONE=1;
    adpick();
    adpick();
    adpick();

do
{
//    GPIO1 = 1;

    adpick();
    output();
/*
    delay((129-zhkb));    
    out1 = 1;
    out2 = !out1;
    delay((zhkb));
    out1 = 0;
    out2 = 0;
    delay((129-zhkb));
    out1 = 0;
    out2 = !out1;
    delay((zhkb));
    out1 = 0;
    out2 = 0;
*/

}
    while(1);

}

⌨️ 快捷键说明

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