PIC10F320電源切換LED

作者 civic3569 於 2020年02月11日 22:07:15
各位先進好,我目前要做一個電源開關切換LED的產品,打開電源則RA0的LED0亮;將電源關掉,在0.5秒內打開,就能切換RA1的LED1亮(LED0為暗);再將電源關掉,在0.5秒內打開,變成RA0的LED0亮(LED1為暗),等於是切換2顆LED燈,之前有試過用RA2輸入,如電路圖所示,結果不穩定,有時能切,有時不行。後來將RA2用INT外部中斷的方式,電路圖一樣,結果有比較好,大概切換5次會有3次成功(成功是指一直開、關電源,則LED會一直變換,不會有LED切不過去的問題)。請問如果要100%成功,要如何修改。謝謝



#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
uchar k=0;


void port_init()
{
OSCCON=0B01010000; //設為4MHZ,這樣速度才可延用
OPTION_REG=0B11111111;//正觸發(用負觸發怪怪的)
ANSELA=0X00; //設RA0~2為數位I/O
WPUA=0X00; //PORTA全部不要PLUU HIGH
TRISA=0B00000100; //RA2 做輸入
PORTA=0X00;
INTCON=0B11010000; //開GIE、PEIE、INTE中斷
}


void output(k)
{
switch(k)
{

case 1:
PORTA=0B00000001;break; //RA0輸出LED0亮
case 2:
PORTA=0B00000010;break; //RA1輸出LED1亮
}
}

void interrupt ISR(void)
{
if(INTF==1)
{
INTE=0;
INTF=0;
k=k+1;
if(k>2)
{
k=0;
}
else
{
}
}
INTE=1;
}

void main()
{
port_init();

while(1)
{
output(k);
}

}

附加檔案:



jpg  123.jpg (35.79 KB)
47795_5e42b4dff4204.jpg 800X612 px

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=1&topic_id=22818&post_id=80336