このファイル: /home/web6047/www/cgi-bin/prj/20190901-DRAMを理解してプログラミングに強くなろう/20200222-dram2x2test.X/newmain - snapshot 20200222.c
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <libpic30.h>
4
#include <p24HJ32GP202.h>
5
6
7
8
_FBS( BSS_NO_BOOT_CODE & BWRP_WRPROTECT_OFF )
9
_FGS( GSS_OFF & GWRP_OFF )
10
_FOSCSEL( IESO_ON & FNOSC_FRC )
11
_FOSC( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_ON & POSCMD_EC )
12
_FWDT( FWDTEN_OFF & WINDIS_OFF & WDTPRE_PR32 & WDTPOST_PS1 )
13
_FPOR( ALTI2C_OFF & FPWRT_PWR32 )
14
_FICD( JTAGEN_OFF & ICS_PGD1 )
15
16
17
18
19
void delay( unsigned long int num ) {
20
unsigned long int i;
21
for( i = 0; i < num; i++ );
22
}
23
24
25
void tell( int num ) {
26
int i;
27
delay( 50000 );
28
for( i = 0; i < num; i++ ) {
29
LATBbits.LATB6 = 1;
30
delay( 100000 );
31
LATBbits.LATB6 = 0;
32
delay( 100000 );
33
}
34
delay( 50000 );
35
}
36
37
38
void space() {
39
delay( 50000 );
40
LATBbits.LATB6 = 1;
41
delay( 400000 );
42
LATBbits.LATB6 = 0;
43
delay( 50000 );
44
}
45
46
int main(int argc, char** argv) {
47
int r1b1, r1b2;
48
int r2b1, r2b2;
49
int r1, r2;
50
51
52
53
54
55
AD1PCFGL = 0b0001111000111111;
56
57
58
TRISA = 0b11111;
59
60
TRISB = 0b0000000000000000;
61
62
63
ニシン10ヲ アドレス1ニ カキコミ
64
TRISBbits.TRISB8 = 0;
65
TRISBbits.TRISB9 = 0;
66
LATBbits.LATB8 = 0;
67
LATBbits.LATB9 = 1; シュツリョクセッテイ (ピンに3Vを出力)
68
69
LATBbits.LATB2 = 1;
70
delay( 30000 ); カキコミ
71
LATBbits.LATB2 = 0;
72
73
ニシン01ヲ アドレス2ニ カキコミ
74
TRISBbits.TRISB8 = 0;
75
TRISBbits.TRISB9 = 0;
76
LATBbits.LATB8 = 1;
77
LATBbits.LATB9 = 0; シュツリョクセッテイ (ピンに0Vを出力)
78
79
LATBbits.LATB3 = 1;
80
delay( 30000 ); カキコミ
81
LATBbits.LATB3 = 0;
82
83
アドレス1ヲ ヨミコミ
84
TRISBbits.TRISB8 = 1;
85
TRISBbits.TRISB9 = 1; ニュウリョク セッテイ
86
87
LATBbits.LATB2 = 1;
88
delay( 3000 );
89
r1b1 = PORTBbits.RB8; ニュウリョク ジッコウ
90
r1b2 = PORTBbits.RB9;
91
LATBbits.LATB2 = 0; トランジスタ オフ
92
93
94
TRISBbits.TRISB8 = 1; ニュウリョク セッテイ
95
TRISBbits.TRISB9 = 1;
96
97
LATBbits.LATB3 = 1; トランジスタ オン
98
delay( 3000 );
99
r2b1 = PORTBbits.RB8;
100
r2b2 = PORTBbits.RB9; ニュウリョク ジッコウ
101
LATBbits.LATB3 = 0;
102
103
0,1,1,0 ト ヒョウジサレマス
104
r1 = r1b2 * 2 + r1b1;
105
r2 = r2b2 * 2 + r2b1;
106
107
space();
108
tell( r1 );
109
space();
110
tell( r2 );
111
space();
112
113
114
115
116
117
while( 1 ) {
118
119
if( PORTAbits.RA4 == 1 ) {
120
LATBbits.LATB6 = 1;
121
} else {
122
LATBbits.LATB6 = 0;
123
}
124
}
125
126
return (EXIT_SUCCESS);
127
}