PICマイコン初心者です。時間を正確に測定して表示させたいのですが、時間を正確に測定する方法が分からず苦慮しています。教えてください。
デバイスはPIC16F877、プログラミング言語はMPLABに付属していた
Cコンパイラ(HI-TECH PICC Lite)です。
現在、考えてうまく動作していない記述を下記に示します。ご指摘頂きたく。
Buildは成功するのですが動作せず????
私が考えていたのはRC0がLOWのときにdelay(100ms)をカウントしていき、
それをバイナリでPORTBに表示する方法です。
測定レンジは0.1 - 60secぐらいまでです。
*****************************************************************************
#include <pic.h>
#define _XTAL_FREQ 16000000
__CONFIG(HS & DEBUGDIS & LVPDIS & BORDIS & PWRTEN & WDTDIS );
int main(void){
unsigned long T1 = 0 ; // iの変数設定
TRISC = 0b00000001 ; // RC0入力 その他は出力設定
TRISB = 0x00 ; // PORT B 出力
PORTC = 0xff ; // PORTCをall 1を設定
PORTB = 0x00 ; // PORTBを"0"Resetする
if ( RC0 == 1 ) {
}
else {
__delay_ms(100) ; // 100ms wait
T1++ ; // T1 = T1 + 1
PORTB = T1 ;
}
}
No.2ベストアンサー
- 回答日時:
while(1){.......} でくくると無限ループになり、括弧内を繰り返します
T1がlongで宣言されてますが、PORTBは8ビットなので、何らかの変換が必要では?
タイマ0を使用する場合
プリスケーラ8ビット + タイマ0 8ビット = 16ビット
基本クロック 16/4=4MHz 1Ф=250ns 250ns * 65536 = 16.384ms までしか計測できないので
オーバーフローフラグによるタイマの拡張が必要です
RC0=1 に成るまで待つ
RC0=0 でタイマクリア タイマカウントスタート
RC0=1 でタイマカウント停止
PORRTB データ出力
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Arduino UNO のC言語 2 2023/04/18 19:42
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報