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

📄 bn-led.lst

📁 用PIC12F675做的一个
💻 LST
字号:
     1: #include  <pic.h>

     2: #define XTAL_FREQ       4MHZ

     3: #include  "delay.c"

     4: #include  <delay.h>

     5: 

     6: 

     7: #define  delay_ms  DelayMs

     8: #define  delay_us  DelayUs

     9: #define  key_sw      GPIO0

    10: #define  blue_led  GPIO2

    11: #define  green_led GPIO4

    12: #define  red_led   GPIO5

    13: 

    14: 

    15: static unsigned char time,key_val;

    16: void sleep_sub(void);

    17: 

    18: key1(){

    19:         delay_ms(10);

    20:         return(0);

    21:          };

    22:     

    23: 

    24: static void interrupt gpie(void){

    25:          INTCON=0;  

    26:          GPIF=0;

    27:          if(TMR1IF==1)time++;

    28:          TMR1IF=0;   //PIR1:0

    29:          INTCON=0xc0;

    30:          }

    31:          

    32: void ad_init(void){

    33:       ADCON0=0x01;     //

    34:       ANSEL=0x11;        //AD CLOCK FOCS/8   AN0 SELECE AD CONVER REF:VDD

    35:       ADON=1;         //AD Module on

    36:       }

    37: 

    38: void sleep_sub(void){ 

    39:                blue_led=0;green_led=0;red_led=0;   

    40:                ADON=0;

    41:                INTCON=0x88;  //GIE=1;GPIE=1;

    42:                IOCB=0x08;    //GP3 CHANGE INTERRUPT

    43:                OPTION = 0x8f;   // WDT prescaled by 1 - about 17 ms

    44:                CLRWDT();               

    45:                asm("sleep");  

    46:                      

    47:               // asm("nop");     //jump main

    48:                //CLRWDT();

    49:                blue_led=0;green_led=0;red_led=0;

    50:                CLRWDT(); 

    51:                OPTION = 0x88;   // WDT prescaled by 1 - about 17 ms

    52:                asm("goto $");

    53:                asm("nop");

    54:                INTCON=0xc0;

    55:                CMCON=0x07;

    56:               

    57:                }

    58:                

    59: void led_off(void){        

    60:         blue_led=0;

    61:         green_led=0;

    62:         red_led=0;  

    63:         } 

    64:            

    65: void led_on(void){        

    66:         blue_led=1;

    67:         green_led=1;

    68:         red_led=1;  

    69:         }   

    70: 

    71: //////////////////////main////////////////////////

    72: 

    73: main(){

    74:         unsigned char i,temp,on_time,off_time,j;

    75:        i=0;

    76:        j=0;

    77:         //delay_ms(1);

    78:        GPIO=0x0;

    79:        TRISIO=0b00001001;

    80:        CMCON=0x07;

    81:        //TRISIO=0b00001001;

    82:                          //as  pic16f676

    83:        asm("movlw 0x00");

    84:        asm("movwf 0x91");

    85:        ANSEL=0x10;       // same pic12f675 ANSEL=0X11;

    86:                       

    87:         OPTION = 0x0D;  // WDT prescaled by 64 - about 1200 ms

    88:         TRISIO=0b00001001; 

    89:         GPIO=0x0;     //led of

    90:         //TRIS2=1;      /////////////

    91:         //WPU2=1;

    92:         //ad_init();

    93:         PEIE=0x01;   //enable  INTCON:6

    94:         T1CON=0x30;   //timer1  1:8  

    95:         PIE1=0x01;  //enable timer1 intterupt TMR1IE;

    96:         TMR1ON=0;   //T1CON:0   TMR1 STOP

    97:         //WPU0=1; //gpio0  weak pull-up enable

    98: 

    99:         

   100: 

   101:             GPIO=0x0;    ;   //led of

   102:             GPPU=1;

   103:         

   104:         if(key_sw==1)sleep_sub();  //no key press       

   105:         TMR1L=0;

   106:         TMR1H=0;

   107:         TMR1ON=1;    //START TMR1 ON 

   108:         GIE=1;       //enable globe inttrupt 

   109:         time=0;

   110:        

   111:         for(;;){

   112:             CLRWDT();

   113:             if((key_sw!=0)&&(time<3))sleep_sub();

   114:             if((key_sw!=0)&&(time>2)){blue_led=0;break;}

   115:             if(time>2)led_on();

   116:             }

   117:     on_time=50;

   118:     off_time=300; 

   119:     for(;;){

   120:             j++;

   121:             if(j>30){

   122:                     j=0;

   123:                     on_time=50;

   124:                 off_time=300;

   125:                 } 

   126:             key_val=1;

   127:         CLRWDT();

   128:         for(i=0;i<15;i++){

   129:                 CLRWDT();               

   130:                         led_on();

   131:                         on_time=on_time+15;

   132:                         delay_ms(on_time);

   133:                         key_val=key_sw;

   134:                         if(key_val==0)goto exit;

   135:                         CLRWDT();

   136:                         led_off();

   137:                         off_time=off_time-15;           

   138:                         delay_ms(off_time);

   139:                         }

   140:         /*

   141:                 led_on();

   142:                 delay_ms(100);

   143:                 key_val=key_sw;

   144:                 if(key_val==0)goto exit;

   145:                 CLRWDT();

   146:                 led_off();

   147:                 

   148:                 delay_ms(200);

   149:                 led_on();

   150:                 delay_ms(200);

   151:                 key_val=key_sw;

   152:                 if(key_val==0)goto exit;

   153:                 CLRWDT();

   154:                 led_off();

   155:                 

   156:                 delay_ms(100);

   157:                 led_on();

   158:                 delay_ms(250);

   159:                 key_val=key_sw;

   160:                 if(key_val==0)goto exit;

   161:                 CLRWDT();

   162:                 led_off();

   163:                 

   164:                 delay_ms(300);                          

   165:                 led_on();

   166:                 delay_ms(50);

   167:                 key_val=key_sw;

   168:                 if(key_val==0)goto exit;

   169:         */

   170:                 CLRWDT();

   171:                 led_off();

   172:                 for(i=0;i<40;i++){

   173:                         CLRWDT();

   174:                         delay_ms(100);

   175:                         key_val=key_sw;

   176:                         if(key_val==0)break;

   177:                         }

   178: exit:

   179:                 if(key_val==0){

   180:                         delay_ms(100);                  

   181:                         if(key_sw==0){

   182:                                 led_on();

   183:                                 delay_ms(200);

   184:                                 CLRWDT();

   185:                                 delay_ms(200);

   186:                                 led_off();

   187:                                 for(;;){

   188:                                         if(key_sw==1)break;

   189:                                         CLRWDT();

   190:                                         }

   191:                                 sleep_sub();

   192:                                 }

   193:                         }

   194:                         

   195:         }

   196: }

   197: 

⌨️ 快捷键说明

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