// PIC12F629 Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-Up Timer Enable bit (PWRT enabled) #pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD) #pragma config BOREN = ON // Brown-out Detect Enable bit (BOD enabled) #pragma config CP = ON // Code Protection bit (Program Memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include #include #define _XTAL_FREQ 4000000 #define LED GP5 #define DummyPulse GP4 uint8_t mystatus=0; void isrTMR0(void){//TMR0割込処理本体 if(mystatus){//DummyPulse 1-->0 TMR0=0xF0;//TMR0を2mSにセット DummyPulse=0; mystatus=0; } else {//DummyPulse 0-->1 TMR0=0x61;//TMR0を20.3mSにセット DummyPulse=1; mystatus=1; } T0IF=0;//TMR0割込フラグクリア } //割込処理 void __interrupt() myisr(void){ //割込判別 if(T0IF){//TMR0割込 isrTMR0(); } } void main(void){ OSCCAL=0x30; //EEPROMへ署名 __EEPROM_DATA('NTakahashi NIT-Hakodate 2023/8/15 TMR0 Interrupt', 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ); //初期化 TRISIO=0b001100;//GP5,4,1:output GP3,2:input nGPPU=0; WPU=2; //GP2=pull up //パルス幅20.3mS, 周期22.3mS //T0CS=0(clock source=FOSC/4), PSA=0(), ,プリスケーラPS<2:0>=110 T0CS=0; PSA=0; PS2=1; PS1=1; PS0=0; //OPTION_REGを設定 TMR0=0;//TMR0クリア T0IE=1;//TMR0割込許可 INTE=0;//INT割込禁止 GPIE=0;//GP変更割込禁止 PEIE=0;//TMR1他割込禁止 GIE=0;//割込禁止 //本体 DummyPulse=0; uint8_t i=5; while(i--){//最初にLEDが5回点滅 LED=1; __delay_ms(500); LED=0; __delay_ms(500); } GIE=1;//割込許可 while(1); }