掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 901
タイトル 質問2
投稿日 : 2017/04/26(Wed) 16:32:06
投稿者 mh   <fmvmh2016t@outlook.jp>
参照先
質問2
暗唱キー: 38698453
お世話になります
質問よろしくお願いします。

暗唱キー: 38698452の質問のご回答有難う、
御座いました。


私のシステムは:
@ パソコン:windows10(64ビット)
A Mplab X Idev3.60 + XC8コンパイラv1.41

質問:
ビット反転して、switch case文で選んで処理をしたいと、
思っています色々やってみましたのですが、エラーが出て、
うまくいきません、尚PICは PIC16F1938です。
どこを直せばよいでせうか宜しくお願いします。
リスト載せておきます。

////////////////////////////////////
//
// tes_led_f1938.c
// time.h や time()
//
//
////////////////////////////////////
#include <time.h>
#include <xc.h>

//f1938
// コンフィギュレーション1の設定
#pragma config FOSC = INTOSC // 内部クロックを使用する(INTOSC)
#pragma config WDTE = OFF // ウオッチドッグタイマー無し(OFF)
#pragma config PWRTE = ON // 電源ONから64ms後にプログラムを開始する(ON)
#pragma config MCLRE = OFF // 外部リセット信号は使用せずにデジタル入力(RA5)ピンとする(OFF)
#pragma config CP = OFF // プログラムメモリーを保護しない(OFF)
#pragma config CPD = OFF // データメモリーを保護しない(OFF)
#pragma config BOREN = ON // 電源電圧降下常時監視機能ON(ON)
#pragma config CLKOUTEN = OFF // CLKOUTピンをRA6ピンで使用する(OFF)
#pragma config IESO = OFF // 外部・内部クロックの切替えでの起動はなし(OFF)
#pragma config FCMEN = OFF // 外部クロック監視しない(FCMEN_OFF)

// コンフィギュレーション2の設定
#pragma config WRT = OFF // Flashメモリーを保護しない(OFF)
#pragma config PLLEN = OFF // 動作クロックを32MHzでは動作させない(OFF)
#pragma config STVREN = ON // スタックがオーバフローやアンダーフローしたらリセットをする(ON)
#pragma config BORV = HI // 電源電圧降下常時監視電圧(2.5V)設定(HI)
#pragma config LVP = OFF // 低電圧プログラミング機能使用しない(OFF)

// メインの処理
//unsigned char DIPSW;
// unsigned char sw_state_prev = 0x00;

int h;
void main()
{
OSCCON = 0b01110010 ; // 内部クロックは8MHzとする
OPTION_REG = 0b00000000 ; // デジタルI/Oに内部プルアップ抵抗を使用する
ANSELA = 0b00000000 ; // AN0-AN4は使用しない全てデジタルI/Oとする
ANSELB = 0b00000000 ; // AN8-AN13は使用しない全てデジタルI/Oとする
TRISA = 0b00000000 ; // ピン(RA)は全て出力に割当てる(0:出力 1:入力)
TRISB = 0b11111111 ; // ピン(RB)はRB0のみ入力、他は全て出力に割当てる
TRISC = 0b00000000 ; // ピン(RC)は全て出力に割当てる
WPUB = 0b00000001 ; // RB0は内部プルアップ抵抗を指定する
PORTA = 0b11111111 ; // RA出力ピンの初期化(全てLOWにする)
PORTB = 0b00000000 ; // RB出力ピンの初期化(全てLOWにする)
PORTC = 0b00000000 ; // RC出力ピンの初期化(全てLOWにする)
BYTE DIPSW

while(1) // 無限ループ
{
sw_state = (PORTb^ 0xff) & 0x1F; // SW1,SW2の状態を反転して格納
switch(sw_state)
{
case 0x02: // SW1押下
PORTC = 0b00000010; // 7セグメントLED表示 "1"
break;
case 0x04: // SW2押下
PORTC = 0b00000100; // 7セグメントLED表示 "2"
break;
case 0x06: // SW1およびSW2押下
PORTC = 0b00001000; // 7セグメントLED表示 "3"
break;
default:
break;
}
}

}

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -