按鈕控制LED亮度 芯片PIC16F54 晶振4M 設(shè)計 何中華 2009.6 .30
*/ #include<pic.h>
#define uchar unsigned char #define uint unsigned int
__CONFIG (XT&WDTEN&CP) ;
#define LED RB1 #define K1 RB3 #define K2 RB2 #define KEY PORTB #define keyi 0B1100
uchar LED_pc,h,l,LEDH,LEDL; static bit HL_bit;
static volatile bit TM_RBit @ ((unsigned)&TMR0*8)+5;
void TMR0_interrupt(void); void TMR0_interrupt() { if(TM_RBit) { TM_RBit=0; if(HL_bit){if(h>0)h--; } else {if(l>0)l--; } } else return ; }
void main() { uchar i; OPTION=0B00000000; // 預(yù)分頻器分配給定時器0 TRISB=0B1101; LEDH= h=0; LEDL=l=255; while(1){ CLRWDT(); TMR0_interrupt(); if(HL_bit){if(h>0)LED=1;else {l=LEDL;HL_bit=0;}} else {if(l>0)LED=0;else {h=LEDH;HL_bit=1;}}
if((KEY&keyi)!=keyi)//按健掃描 {i--; if((i==0) ) { if(!K1&&LEDH<255){ LEDH++;LEDL--;} if(!K2&&LEDL<255){ LEDH--;LEDL++;} } } else i=0;//按健掃描計數(shù)器清0 } } 網(wǎng)友在寫這個功能的程序遇到的一些問題,所以寫了這個小程序,而且在板子上運(yùn)行通過。 |