#include <xc.h>
#define _XTAL_FREQ 4000000
__CONFIG(FOSC_INTOSCIO & WDTE_OFF & PWRTE_ON & MCLRE_OFF & CP_OFF & CPD_OFF & BOREN_ON & IESO_OFF & FCMEN_OFF);
__IDLOC(F683); //PIC12F683
void LED_ON_OFF(unsigned char);
void LED_CHANGE(unsigned char);
void main(void)
{
unsigned char i; //スイッチ用フラグに使用
OSCCON = 0b01100000; //3V電圧なのでクロック周波数を4MHzにする
ANSEL = 0;
TRISIO = 0b00111000; //入出力設定。GP3,GP4,GP5を入力、GP0,GP1,GP2は出力
CMCON0 = 7;
GPIO = 0b00000000;
i = 1;
while(1) //無限ループ構造
{
ADCON0 = 0b00001101; //GP4(AN3)をAD変換対象にする。GP3とGP5はもともとデジタル?
__delay_ms(20);
GO = 1; //変換の開始
while(GO); //変換が終わるまで待つ
if(GP3 == 0) //電源スイッチが押されたときの処理。
{
__delay_ms(10); //チャタリング除去
if(i == 1) //スイッチが一回押されたとき(起動時)
{
LED_ON_OFF(i);
i++;
}
else if(i == 2) //スイッチが二回押されたとき
{
LED_ON_OFF(i);
i++;
}
else //スイッチが三回押されたとき
{
LED_ON_OFF(i);
i = 1;
}
}
if((GP4 == 0) || (GP5 == 0) && ((i == 2) || (i == 3)))
{
LED_CHANGE(i-1);
}
}
}
void LED_ON_OFF(unsigned char n)
{
if(n == 1)
{
GP0 = 0;
GP1 = 0;
GP2 = 1; //緑を点灯
}
else if(n == 2)
{
GP0 = 0;
GP1 = 1; //青を点灯
GP2 = 0;
}
else
{
GP0 = 0;
GP1 = 0;
GP2 = 0;
}
}
void LED_CHANGE(unsigned char n)
{
unsigned char x;
for(x=0; x<10; x++) //赤を点滅
{
GP0 = 1;
GP1 = 0;
GP2 = 0;
__delay_ms(50);
GP0 = 0;
GP1 = 0;
GP2 = 0;
__delay_ms(50);
}
LED_ON_OFF(n);
}
I2luY2x1ZGUgPHhjLmg+CiNkZWZpbmUgX1hUQUxfRlJFUSA0MDAwMDAwCgpfX0NPTkZJRyhGT1NDX0lOVE9TQ0lPICYgV0RURV9PRkYgJiBQV1JURV9PTiAmIE1DTFJFX09GRiAmIENQX09GRiAmIENQRF9PRkYgJiBCT1JFTl9PTiAmIElFU09fT0ZGICYgRkNNRU5fT0ZGKTsKX19JRExPQyhGNjgzKTsgLy9QSUMxMkY2ODMKCnZvaWQgTEVEX09OX09GRih1bnNpZ25lZCBjaGFyKTsKdm9pZCBMRURfQ0hBTkdFKHVuc2lnbmVkIGNoYXIpOwoKdm9pZCBtYWluKHZvaWQpCnsKICAgIHVuc2lnbmVkIGNoYXIgaTsgLy/jgrnjgqTjg4Pjg4HnlKjjg5Xjg6njgrDjgavkvb/nlKgKCiAgICBPU0NDT04gPSAwYjAxMTAwMDAwOyAvLzNW6Zu75Zyn44Gq44Gu44Gn44Kv44Ot44OD44Kv5ZGo5rOi5pWw44KSNE1IeuOBq+OBmeOCiwogICAgQU5TRUwgPSAwOwogICAgVFJJU0lPID0gMGIwMDExMTAwMDsgLy/lhaXlh7rlipvoqK3lrprjgIJHUDMsR1A0LEdQNeOCkuWFpeWKm+OAgUdQMCxHUDEsR1Ay44Gv5Ye65YqbCiAgICBDTUNPTjAgPSA3OwoKICAgIEdQSU8gPSAwYjAwMDAwMDAwOwoKICAgIGkgPSAxOwoKICAgIHdoaWxlKDEpIC8v54Sh6ZmQ44Or44O844OX5qeL6YCgCiAgICB7CiAgICAgICAgQURDT04wID0gMGIwMDAwMTEwMTsgLy9HUDQoQU4zKeOCkkFE5aSJ5o+b5a++6LGh44Gr44GZ44KL44CCR1Az44GoR1A144Gv44KC44Go44KC44Go44OH44K444K/44Or77yfCiAgICAgICAgX19kZWxheV9tcygyMCk7CiAgICAgICAgR08gPSAxOyAvL+WkieaPm+OBrumWi+WniwogICAgICAgIHdoaWxlKEdPKTsgLy/lpInmj5vjgYzntYLjgo/jgovjgb7jgaflvoXjgaQKCiAgICAgICAgaWYoR1AzID09IDApIC8v6Zu75rqQ44K544Kk44OD44OB44GM5oq844GV44KM44Gf44Go44GN44Gu5Yem55CG44CCCiAgICAgICAgewogICAgICAgICAgICBfX2RlbGF5X21zKDEwKTsgLy/jg4Hjg6Pjgr/jg6rjg7PjgrDpmaTljrsKCiAgICAgICAgICAgIGlmKGkgPT0gMSkgLy/jgrnjgqTjg4Pjg4HjgYzkuIDlm57mirzjgZXjgozjgZ/jgajjgY0o6LW35YuV5pmCKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBMRURfT05fT0ZGKGkpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoaSA9PSAyKSAvL+OCueOCpOODg+ODgeOBjOS6jOWbnuaKvOOBleOCjOOBn+OBqOOBjQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBMRURfT05fT0ZGKGkpOwogICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgLy/jgrnjgqTjg4Pjg4HjgYzkuInlm57mirzjgZXjgozjgZ/jgajjgY0KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTEVEX09OX09GRihpKTsKICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZigoR1A0ID09IDApIHx8IChHUDUgPT0gMCkgJiYgKChpID09IDIpIHx8IChpID09IDMpKSkKICAgICAgICB7CiAgICAgICAgICAgIExFRF9DSEFOR0UoaS0xKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgTEVEX09OX09GRih1bnNpZ25lZCBjaGFyIG4pCnsKICAgIGlmKG4gPT0gMSkKICAgIHsKICAgICAgICBHUDAgPSAwOwogICAgICAgIEdQMSA9IDA7CiAgICAgICAgR1AyID0gMTsgLy/nt5HjgpLngrnnga8KICAgIH0KICAgIGVsc2UgaWYobiA9PSAyKQogICAgewogICAgICAgIEdQMCA9IDA7CiAgICAgICAgR1AxID0gMTsgLy/pnZLjgpLngrnnga8KICAgICAgICBHUDIgPSAwOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIEdQMCA9IDA7CiAgICAgICAgR1AxID0gMDsKICAgICAgICBHUDIgPSAwOwogICAgfQp9Cgp2b2lkIExFRF9DSEFOR0UodW5zaWduZWQgY2hhciBuKQp7CiAgICB1bnNpZ25lZCBjaGFyIHg7CgogICAgZm9yKHg9MDsgeDwxMDsgeCsrKSAvL+i1pOOCkueCuea7hQogICAgewogICAgICAgIEdQMCA9IDE7CiAgICAgICAgR1AxID0gMDsKICAgICAgICBHUDIgPSAwOwogICAgICAgIF9fZGVsYXlfbXMoNTApOwogICAgICAgIEdQMCA9IDA7CiAgICAgICAgR1AxID0gMDsKICAgICAgICBHUDIgPSAwOwogICAgICAgIF9fZGVsYXlfbXMoNTApOwogICAgfQoKICAgIExFRF9PTl9PRkYobik7Cn0K