Skin:
[NORMAL]
[BLUE] [DOS] [LIGHT]  / コピーするための表示 / 実行
このファイル: /home/web6047/www/cgi-bin/prj/20190901-DRAMを理解してプログラミングに強くなろう/20191020-2bitPIC24H.X/newmain - snapshot 20191020.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <libpic30.h>
4 #include <p24HJ32GP202.h>
5
6
7 //内部クロック使用 7.37 MHz
8 _FBS(BSS_NO_FLASH & BWRP_WRPROTECT_OFF )
9 _FGS(GSS_OFF & GCP_OFF & GWRP_OFF )
10 _FOSCSEL(FNOSC_FRC & IESO_ON)
11 _FOSC(FCKSM_CSECME & IOL1WAY_OFF & POSCMD_NONE & OSCIOFNC_ON )
12 _FWDT(FWDTEN_OFF & WINDIS_OFF)
13 _FPOR(FPWRT_PWR32 & ALTI2C_OFF)
14
15
16 //一定時間待つ
17 void delay( unsigned long int num ) {
18 unsigned long int i;
19 for( i = 0; i < num; i++ );
20 }
21
22 //LEDで合図する
23 void telltell() {
24 int i;
25 delay( 100000 ); //間を置いて
26 //合図 チカチカッ
27 for( i = 0; i < 2; i++ ) {
28 LATBbits.LATB6 = 1;
29 delay( 10000 );
30 LATBbits.LATB6 = 0;
31 delay( 10000 );
32 }
33 delay( 100000 ); //間を置いて
34 }
35
36 int main(int argc, char** argv) {
37 unsigned long int i;
38 int r1, r2;
39 //100 CLO :' ピン ショキカ
40 //PIC24H特有の設定 ------------------------------
41 //___CBA9___543210
42 AD1PCFGL = 0b0001111000111111; //アナログ:0、デジタル:1
43 //ピン入出力設定 --------------------------------
44 //43210
45 TRISA = 0b11111; //出力:0、入力:1
46 //FEDCBA9876543210
47 TRISB = 0b0000000000000000;
48
49 //110 ' ジョウホウ 0 カキコミ
50 LATBbits.LATB8 = 0; //120 OUT 1,0 :' セツメイ ノ ピンB シュツリョク 0V セッテイ★★★
51 LATBbits.LATB9 = 1; //125 OUT 2,1 :' セツメイ ノ ピンC シュツリョク 3V セッテイ★★★
52 LATBbits.LATB2 = 1; //130 OUT 7,1 :' セツメイ ノ ピンA トランジスタ オン
53 delay( 3000 ); //140 WAIT 10 :' カキコミ
54 LATBbits.LATB2 = 0; //150 OUT 7,0 :' セツメイ ノ ピンA トランジスタ オフ
55 //160 ' ジョウホウ ヲ ヨム
56 TRISBbits.TRISB8 = 1; //170 OUT 1,-1 :' セツメイ ノ ピンB ニュウリョク セッテイ
57 TRISBbits.TRISB9 = 1; //170 OUT 2,-1 :' セツメイ ノ ピンC ニュウリョク セッテイ
58 LATBbits.LATB2 = 1; //180 OUT 7,1 :' セツメイ ノ ピンA トランジスタ オン
59 r1 = PORTBbits.RB8; //190 ? IN(5) :' セツメイ ノ ピンB ウケトリ
60 r2 = PORTBbits.RB9; //195 ? IN(6) :' セツメイ ノ ピンC ウケトリ
61 LATBbits.LATB2 = 0; //200 OUT 7,0 :' セツメイ ノ ピンA トンジスタ オフ
62
63 //ヒョウジ
64
65 telltell(); //表示開始を知らせる合図 チカチカッ
66
67 //数値の数だけ点滅
68 int r = r2 * 2 + r1; //2進数の各桁から10進数を得る
69 for( i = 0; i < r; i++ ) {
70 LATBbits.LATB6 = 1;
71 delay( 100000 );
72 LATBbits.LATB6 = 0;
73 delay( 100000 );
74 }
75
76 telltell(); //表示終了を知らせる合図 チカチカッ
77
78
79 //緑のボタンを押すとLED点灯
80 while( 1 ) {
81 //LED
82 if( PORTAbits.RA4 == 1 ) {
83 LATBbits.LATB6 = 1;
84 } else {
85 LATBbits.LATB6 = 0;
86 }
87 }
88
89 return (EXIT_SUCCESS);
90 }