softdev:tempmeter3
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| softdev:tempmeter3 [2013/01/07 22:38] – [回路] king | softdev:tempmeter3 [2013/07/15 20:25] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 17: | 行 17: | ||
| 恥ずかしいので抜粋 | 恥ずかしいので抜粋 | ||
| + | ポート初期化他 | ||
| + | <code c++> | ||
| + | #include < | ||
| + | #define _XTAL_FREQ 4000000 | ||
| + | #define SPDAT GP0 | ||
| + | #define SPCLK GP1 | ||
| + | #define LED1 GP5 | ||
| + | #define SW1 GP4 | ||
| + | #define LED_ON 0 | ||
| + | #define LED_OFF 1 | ||
| + | #define KURIKAESHI 20 | ||
| + | #define HEIKIN 10 | ||
| + | |||
| + | // | ||
| + | // | ||
| + | #define data0 0b00000011 | ||
| + | #define data1 0b10011111 | ||
| + | #define data2 0b00100101 | ||
| + | #define data3 0b00001101 | ||
| + | #define data4 0b10011001 | ||
| + | #define data5 0b01001001 | ||
| + | #define data6 0b01000001 | ||
| + | #define data7 0b00011011 | ||
| + | #define data8 0b00000001 | ||
| + | #define data9 0b00001001 | ||
| + | |||
| + | #define MINUS 0b11111110 // | ||
| + | #define PLUS 0b00000001 // | ||
| + | |||
| + | __CONFIG(CP_OFF & BOREN_ON | ||
| + | |||
| + | main() | ||
| + | { | ||
| + | /* Note: The ANSEL and CMCON0 registers must be initialized to configure an analog | ||
| + | * channel as a digital input. Pins configured as analog inputs will read ‘0’. | ||
| + | */ | ||
| + | GPIO = 0x00; /* IO initialize */ | ||
| + | CMCON0 = 0x07; /* Comparator function CM210=111(disable)*/ | ||
| + | ANSEL | ||
| + | OSCCON = 0x60; /* 4MHz */ | ||
| + | TRISIO = 0x1C; /* IO direction 543210=011100 0=Out,1=In */ | ||
| + | ADCON0 = 0x89; // 10001001 | ||
| + | IOC = 0x10; // IOC4 is enable | ||
| + | INTCON = 0x88; // GIE , GPIE | ||
| + | |||
| + | ADFM=1; | ||
| + | ADON = 1; | ||
| + | |||
| + | </ | ||
| + | |||
| + | ADC計算部(ごめん、long使ってる) | ||
| + | <code c> | ||
| + | char avg, | ||
| + | int andata, | ||
| + | long temp10; | ||
| + | |||
| + | andata = 0; | ||
| + | for(avg=0; | ||
| + | __delay_ms(5); | ||
| + | GO = 1; | ||
| + | while(GO); | ||
| + | andata += (ADRESH<< | ||
| + | } | ||
| + | andata = andata / HEIKIN ; | ||
| + | temp10 = (long)andata * 5000 - 2457600; | ||
| + | temp10 = temp10 / 4096; | ||
| + | temp = (int)temp10; | ||
| + | </ | ||
softdev/tempmeter3.1357565933.txt.gz · 最終更新: (外部編集)
