16F18326で「LED点灯」 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18F18326でLEDを点灯してみます。 動作は電源を入れるとLEDが点灯します 8pin RC2を出力に設定してLEDを点灯します ![]() 入出力ピンは 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から出力(電圧を出力)する PORTC = 0b00000100
![]() プログラム /* * 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 ; // デジタル ANSELC = 0b00000000 ; // デジタル 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クリア */ PORTC = 0b00000100 ; /* RC2 LED点灯 */ } テストプログラム ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||