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

📄 bn-led.c

📁 用PIC12F675做的一个
💻 C
字号:
#include  <pic.h>
#define	XTAL_FREQ	4MHZ
#include  "delay.c"
#include  <delay.h>


#define  delay_ms  DelayMs
#define  delay_us  DelayUs
#define  key_sw      GPIO0
#define  blue_led  GPIO2
#define  green_led GPIO4
#define  red_led   GPIO5


static unsigned char time,key_val;
void sleep_sub(void);

key1(){
	delay_ms(10);
	return(0);
	 };
    

static void interrupt gpie(void){
         INTCON=0;  
         GPIF=0;
         if(TMR1IF==1)time++;
         TMR1IF=0;   //PIR1:0
         INTCON=0xc0;
         }
         
void ad_init(void){
      ADCON0=0x01;     //
      ANSEL=0x11;        //AD CLOCK FOCS/8   AN0 SELECE AD CONVER REF:VDD
      ADON=1;         //AD Module on
      }

void sleep_sub(void){ 
               blue_led=0;green_led=0;red_led=0;   
               ADON=0;
               INTCON=0x88;  //GIE=1;GPIE=1;
	       IOCB=0x08;    //GP3 CHANGE INTERRUPT
	       OPTION = 0x8f;	// WDT prescaled by 1 - about 17 ms
               CLRWDT();	       
	       asm("sleep");  
	             
              // asm("nop");     //jump main
               //CLRWDT();
               blue_led=0;green_led=0;red_led=0;
               CLRWDT(); 
               OPTION = 0x88;	// WDT prescaled by 1 - about 17 ms
               asm("goto $");
               asm("nop");
               INTCON=0xc0;
               CMCON=0x07;
              
               }
               
void led_off(void){        
        blue_led=0;
        green_led=0;
        red_led=0;  
        } 
           
void led_on(void){        
        blue_led=1;
        green_led=1;
        red_led=1;  
        }   

//////////////////////main////////////////////////

main(){
        unsigned char i,temp,on_time,off_time,j;
       i=0;
       j=0;
	//delay_ms(1);
       GPIO=0x0;
       TRISIO=0b00001001;
       CMCON=0x07;
       //TRISIO=0b00001001;
                         //as  pic16f676
       asm("movlw 0x00");
       asm("movwf 0x91");
       ANSEL=0x10;       // same pic12f675 ANSEL=0X11;
        	      
        OPTION = 0x0D;	// WDT prescaled by 64 - about 1200 ms
        TRISIO=0b00001001; 
        GPIO=0x0;     //led of
        //TRIS2=1;	/////////////
        //WPU2=1;
        //ad_init();
        PEIE=0x01;   //enable  INTCON:6
        T1CON=0x30;   //timer1  1:8  
        PIE1=0x01;  //enable timer1 intterupt TMR1IE;
        TMR1ON=0;   //T1CON:0   TMR1 STOP
        //WPU0=1; //gpio0  weak pull-up enable

        

	    GPIO=0x0;    ;   //led of
  	    GPPU=1;
  	
        if(key_sw==1)sleep_sub();  //no key press       
        TMR1L=0;
        TMR1H=0;
        TMR1ON=1;    //START TMR1 ON 
        GIE=1;       //enable globe inttrupt 
        time=0;
       
        for(;;){
            CLRWDT();
            if((key_sw!=0)&&(time<3))sleep_sub();
            if((key_sw!=0)&&(time>2)){blue_led=0;break;}
            if(time>2)led_on();
            }
    on_time=50;
    off_time=300; 
    for(;;){
	    j++;
	    if(j>30){
		    j=0;
		    on_time=50;
    		off_time=300;
    		} 
	    key_val=1;
        CLRWDT();
        for(i=0;i<15;i++){
	        CLRWDT();	        
			led_on();
			on_time=on_time+15;
			delay_ms(on_time);
			key_val=key_sw;
			if(key_val==0)goto exit;
			CLRWDT();
			led_off();
			off_time=off_time-15;		
			delay_ms(off_time);
			}
	/*
		led_on();
		delay_ms(100);
		key_val=key_sw;
		if(key_val==0)goto exit;
		CLRWDT();
		led_off();
		
		delay_ms(200);
		led_on();
		delay_ms(200);
		key_val=key_sw;
		if(key_val==0)goto exit;
		CLRWDT();
		led_off();
		
		delay_ms(100);
		led_on();
		delay_ms(250);
		key_val=key_sw;
		if(key_val==0)goto exit;
		CLRWDT();
		led_off();
		
		delay_ms(300);				
		led_on();
		delay_ms(50);
		key_val=key_sw;
		if(key_val==0)goto exit;
	*/
		CLRWDT();
		led_off();
		for(i=0;i<40;i++){
			CLRWDT();
			delay_ms(100);
			key_val=key_sw;
			if(key_val==0)break;
			}
exit:
		if(key_val==0){
			delay_ms(100);			
			if(key_sw==0){
				led_on();
				delay_ms(200);
				CLRWDT();
				delay_ms(200);
				led_off();
				for(;;){
					if(key_sw==1)break;
					CLRWDT();
					}
				sleep_sub();
				}
			}
			
	}
}

⌨️ 快捷键说明

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