16F18326で「続、LED点滅」 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18F18326でLEDを点滅させてみます。 動作は電源を入れるとLEDが点滅します プログラムは「LED点滅」です 下記の回路の場合、LEDの点滅が逆になります 16F18326「LED点滅」のプログラムですが PORTC = 0b00000000 の時にLEDが点灯 PORTC = 0b00000100 の時にLEDが消灯 8pin RC2を出力に設定してLEDを点滅します 1秒消灯 1秒点灯 点滅させる為のプログラム
入出力ピンは 2pin RA5 3pin RA4 4pin RA3 5pin RC5 6pin RC4 7pin RC3 8pin RC2 9pin RC1 10pin RC2 11pin RA2 12pin RA1 13pin RA0 入出力ピンをアナログまたはデジタルで入出力するかを設定 アナログ(1) デジタル(0) ANSELA = 0b00000000
ANSELC = 0b00000000
入出力ピンを入力または出力で使用するか設定 入力(1) 出力(0) TRISA = 0b00111111 全て入力
TRISC = 0b00111011 入力 RC0 RC1 RC3 RC4 RC5 出力 RC2
RC2から出力(電圧を出力)する LED消灯 PORTC = 0b00000100
RC2出力は停止して内部でアースに落ちる LED点灯 PORTC = 0b00000000
プログラム /* * 16F18326 LED点滅 * * クロックは内部クロック使用 * ------------------------------------------------------- * 16F18326接続 * 1pin VDD +5V * 2pin RA5 * 3pin RA4 * 4pin RA3 * 5pin RC5 * 6pin RC4 * 7pin RC3 * 8pin RC2 LED * 9pin RC1 * 10pin RC2 * 11pin RA2 * 12pin RA1 * 13pin RA0 * 14pin GND * ------------------------------------------------------- */ #include <stdio.h> #include <stdlib.h> #include <xc.h> // CONFIG1 #pragma config FEXTOSC = OFF //*** FEXTOSC External Oscillator mode Selection bits (Oscillator not enabled) #pragma config RSTOSC = HFINT32 //*** Power-up default value for COSC bits (HFINTOSC with 2x PLL (32MHz)) #pragma config CLKOUTEN = OFF //クロック出力を無効とし、RA4ピンとして使用する // Clock Out Enable bit (CLKOUT function is disabled; I/O or oscillator function on OSC2) #pragma config CSWEN = ON //*** Clock Switch Enable bit (Writing to NOSC and NDIV is allowed) #pragma config FCMEN = OFF //外部クロックを監視しない // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled) // CONFIG2 #pragma config MCLRE = OFF //MCLRピンをRA3として使用する // Master Clear Enable bit (MCLR/VPP pin function is digital input; MCLR internally disabled; Weak pull-up under control of port pin's WPU control bit.) #pragma config PWRTE = ON //パワーアップタイマーを有効にする // Power-up Timer Enable bit (PWRT enabled) #pragma config WDTE = OFF //ウォッチドックタイマー無効 // Watchdog Timer Enable bits (WDT disabled; SWDTEN is ignored) #pragma config LPBOREN = OFF //LPBOR = OFF //低消費電力ブラウンアウトリセット無効 // Low-power BOR enable bit (ULPBOR disabled) #pragma config BOREN = ON //ブラウンアウトリセットを有効にする // Brown-out Reset Enable bits (Brown-out Reset enabled, SBOREN bit ignored) #pragma config BORV = HIGH //ブラウンアウトリセット電圧を高(?V)に設定 // Brown-out Reset Voltage selection bit (Brown-out voltage (Vbor) set to 2.45V) #pragma config PPS1WAY = OFF //ロック解除シーケンスで何度でもPPSLOCKをセット/クリアできる // PPSLOCK bit One-Way Set Enable bit (The PPSLOCK bit can be cleared and set only once; PPS registers remain locked after one clear/set cycle) #pragma config STVREN = ON //スタックオーバーフローリセットを行う // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a Reset) #pragma config DEBUG = OFF //*** Debugger enable bit (Background debugger disabled) // CONFIG3 #pragma config WRT = OFF //フラッシュメモリを保護しない // User NVM self-write protection bits (Write protection off) #pragma config LVP = OFF //低電圧プログラミングを行わない // Low Voltage Programming Enable bit (High Voltage on MCLR/VPP must be used for programming.) // CONFIG4 #pragma config CP = OFF //プログラムメモリを保護しない // User NVM Program Memory Code Protection bit (User NVM code protection disabled) #pragma config CPD = OFF //1840と同じ設定 // Data NVM Memory Code Protection bit (Data NVM code protection disabled) #define _XTAL_FREQ 32000000 //クロック32MHz void main() { OSCCON1 = 0b01110000 ; // 内部クロック8MHz ×4=32MHz ANSELA = 0b00000000 ; // ANA0(RA0) ANA1(RA1) ANA2(RA2) ANA4(RA4) ANA5(RA5) デジタル(0)アナログ(1) 3bit目は(0) ANSELC = 0b00000000 ; // ANC0(RC0) ANC1(RC1) ANC2(RC2) ANC3(RA3) ANC4(RA4) ANC5(RA5) デジタル(0)アナログ(1) TRISA = 0b00011111 ; // PORTA RA0 RA1 RA2 RA3 RA4 RA5 全て入力(1) TRISC = 0b00011011; // ROTRC RC0 RC1 RC2 RC3 RC4 RC5 入力(1) RC2 出力(0) PORTA = 0b00000000 ; // PORTAクリア PORTC = 0b00000000 ; // PORTCクリア while(1){ PORTC = 0b00000100; // RC2 点灯 __delay_ms(1000); // 一秒待つ PORTC = 0b00000000; // RC2 消灯 __delay_ms(1000); // 一秒待つ } } テストプログラム test_002.c |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||