![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
回路図を添付しました。動作確認しましたが全く動きません。コードの間違いをご指摘下さい。
#include<xc.h>
#pragma config PWRTE=ON,WDTE=OFF,FOSC=LP,CP=OFF,LVP=OFF
void init_port();
void init_timer();
void segment_set_data(short seg1,short seg2,short seg3,short seg4,short dot);
void segment_set_data_ss(short seg1,short seg2,short dot);
void interrupt intr();
void segment_disp();
void segment_disp_ss();
long clock_msec;
short lock;
#define LOCK 1
#define UNLOCK 0
void main(void){
short hh,mm,ss;long temp;init_port();init_timer();
INTCONbits.PEIE = 1;INTCONbits.GIE = 1;
while (1) {
temp=clock_msec /1000;
hh=temp/3600;
mm=(temp%3600)/60;
ss=temp%60;
segment_set_data(hh/10,hh%10,mm/10,mm%10,2);
segment_set_data_ss(ss/10,ss%10,1);
if (RE0==0) {
hh++;ss=0;
if(hh==24){hh=0;}
lock=LOCK;
clock_msec=(((long)hh*3600)+((long)mm*60)+(long)ss)*1000;
lock=UNLOCK;
}
if (RE1==0){
mm++;ss=0;
if(mm==60){mm=0;}
lock=LOCK;
clock_msec=(((long)hh*3600)+((long)mm*60)+(long)ss)*1000;
lock=UNLOCK;
}
_delay(8192);
}
}
void init_port(){
TRISA=0b000000;PORTA=0b000000;TRISB=0b00000000;PORTB=0b00000000;
TRISC=0b00000000;PORTC=0b00000000;TRISD=0b00000000;
PORTD=0b00000000;TRISE=0b011;PORTE=0b000;
}
void init_timer(){
T2CONbits.T2CKPS0 = 0;T2CONbits.T2CKPS1 = 0;T2CONbits.TOUTPS3 = 1;
T2CONbits.TOUTPS2 = 1;T2CONbits.TOUTPS1 = 1;T2CONbits.TOUTPS0 = 1;
TMR2 = 0;PIE1bits.TMR2IE = 1;PIR1bits.TMR2IF = 0;PR2 = 0.512;
T2CONbits.TMR2ON = 1;
}
short seg_dat[4] = {0, 0, 0, 0};short dot_point = 0;
void segment_set_data(short seg1, short seg2, short seg3, short seg4, short dot){
seg_dat[0] = seg1;seg_dat[1] = seg2;seg_dat[2] = seg3;seg_dat[3] = seg4;
dot_point = dot;
}
short seg_dat_ss[2] = {0, 0};short dot_point_ss = 0;
void segment_set_data_ss(short seg1, short seg2, short dot){
seg_dat_ss[0] = seg1;seg_dat_ss[1] = seg2;dot_point_ss = dot;
}
long clock_msec = 0;short lock = UNLOCK;
void interrupt intr(){
if(PIR1bits.TMR2IF == 1){
PIR1bits.TMR2IF = 0;
segment_disp();
segment_disp_ss();
if(lock == UNLOCK){
clock_msec++;
if(clock_msec == 86400000){clock_msec = 0;}
}
}
}
short seg_tbl[10] = {0b00111111,0b00000110,0b01011011,0b01001111,0b01100110, 0b01101101,0b01111101,0b00100111,0b01111111,0b01101111};
short seg_cnt = 0;
void segment_disp(void){
switch(seg_cnt){
case 0:
RA3=1;
PORTC=seg_tbl[seg_dat[0]];
if(dot_point==1){RC7=1;}
RA0=0;seg_cnt=1;break;
case 1:
RA0=1;
PORTC=seg_tbl[seg_dat[1]];
if(dot_point == 2){RC7=1;}
RA1=0;seg_cnt=2;break;
case 2:
RA1=1;
PORTC=seg_tbl[seg_dat[2]];
if(dot_point==3){RC7=1;}
RA2=0;seg_cnt=3;break;
case 3:
RA2=1;
PORTC=seg_tbl[seg_dat[3]];
if(dot_point==4){RC7=1;}
RA3=0;seg_cnt=0;break;
}
}
void segment_disp_ss(void){
switch(seg_cnt){
case 0:
PORTB=seg_tbl[seg_dat_ss[0]];
if(dot_point_ss==1){RB7=1;}
seg_cnt=1;break;
case 1:
PORTD=seg_tbl[seg_dat_ss[1]];
if(dot_point_ss==2){RB7=1;}
seg_cnt=0;break;
}
}
![「PIC16F877AとC-552SRDと」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/4/1054165_55a9e2be75f4e/M.png)
No.1ベストアンサー
- 回答日時:
参考サイト拝見しました。
正直デバック方法が理解できてません。
理何もお返事できる段階でもないことに気づきました。
何もお返事できる段階でもないことに気づきました。
お返事が出来ずに申し訳ありませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- FX・外国為替取引 pine scriptのコードが動作しない 1 2023/02/01 19:03
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- 英語 意味を教えてください 6 2022/09/25 09:40
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多重定義が起きている?--lnk20...
-
既定のコンストラクタがありま...
-
戻り値を返す関数の前に(void)...
-
【gcc・cygwin】multiple defin...
-
typedef unsigned int UINT;が...
-
C++別のオブジェクトからメンバ...
-
C/C++でのScene管理について
-
マルチメディアタイマー
-
ドラッグしたときにマウスカー...
-
(void)0 はどんな意味ですか
-
関数の再帰とは??[C言語]
-
4桁7セグでダイナミック点灯
-
クラス内で、親ではない他のク...
-
Visual Studio 6.0 でSDI開発
-
C++にてtemplateで受け取った任...
-
静的でないメンバ関数の呼び出...
-
static constメンバ変数(配列)...
-
ダイアログのOKボタンを押し...
-
合同式法をつかって(CPad)
-
SC_SIZEがわからない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがありま...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
C++にてtemplateで受け取った任...
-
多重定義が起きている?--lnk20...
-
gcc: incompatible pointer type
-
静的でないメンバ関数の呼び出...
-
int main()、void main()、void...
-
Notepad++の関数リスト表示の変...
-
C# KeyDownイベントでショート...
-
C# Controls.Addで動的に配置し...
-
(void)0 はどんな意味ですか
-
ArduinoでMouse関数を使用して...
-
DLLの関数呼び出しで引数がある...
-
void*型の配列について
-
ウインドウの移動禁止
-
const_castのつかいどころを教...
-
VC++でGetKeyboardStateがうま...
-
C言語 プロトタイプ宣言
-
stddef.hって何?
おすすめ情報