このファイル: /home/web6047/www/cgi-bin/prj/20190901-DRAMを理解してプログラミングに強くなろう/20200411-adr2bit8_pic.X/newmain - backup 20200412.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, r1b3, r1b4, r1b5, r1b6, r1b7, r1b8;
48
int r2b1, r2b2, r2b3, r2b4, r2b5, r2b6, r2b7, r2b8;
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
TRISBbits.TRISB10 = 0;
67
TRISBbits.TRISB11 = 0;
68
TRISBbits.TRISB12 = 0;
69
TRISBbits.TRISB13 = 0;
70
TRISBbits.TRISB14 = 0;
71
TRISBbits.TRISB15 = 0;
72
LATBbits.LATB8 = 1;
73
LATBbits.LATB9 = 1; シュツリョクセッテイ (ピンに3Vを出力)
74
LATBbits.LATB10 = 1;
75
LATBbits.LATB11 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
76
LATBbits.LATB12 = 0;
77
LATBbits.LATB13 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
78
LATBbits.LATB14 = 0;
79
LATBbits.LATB15 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
80
81
LATBbits.LATB2 = 1;
82
delay( 30000 ); カキコミ
83
LATBbits.LATB2 = 0;
84
85
ニシン01ヲ アドレス2ニ カキコミ
86
TRISBbits.TRISB8 = 0;
87
TRISBbits.TRISB9 = 0;
88
TRISBbits.TRISB10 = 0;
89
TRISBbits.TRISB11 = 0;
90
TRISBbits.TRISB12 = 0;
91
TRISBbits.TRISB13 = 0;
92
TRISBbits.TRISB14 = 0;
93
TRISBbits.TRISB15 = 0;
94
LATBbits.LATB8 = 1;
95
LATBbits.LATB9 = 0; シュツリョクセッテイ (ピンに0Vを出力)
96
LATBbits.LATB10 = 1;
97
LATBbits.LATB11 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
98
LATBbits.LATB12 = 0;
99
LATBbits.LATB13 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
100
LATBbits.LATB14 = 0;
101
LATBbits.LATB15 = 0; シュツリョクセッテイ (ピンに0Vを出力) 4
102
103
LATBbits.LATB3 = 1;
104
delay( 30000 ); カキコミ
105
LATBbits.LATB3 = 0;
106
107
アドレス1ヲ ヨミコミ
108
TRISBbits.TRISB8 = 1;
109
TRISBbits.TRISB9 = 1; ニュウリョク セッテイ
110
TRISBbits.TRISB10 = 1;
111
TRISBbits.TRISB11 = 1;
112
TRISBbits.TRISB12 = 1;
113
TRISBbits.TRISB13 = 1;
114
TRISBbits.TRISB14 = 1;
115
TRISBbits.TRISB15 = 1;
116
117
LATBbits.LATB2 = 1;
118
delay( 3000 );
119
r1b1 = PORTBbits.RB8; ニュウリョク ジッコウ
120
r1b2 = PORTBbits.RB9;
121
r1b3 = PORTBbits.RB10; ニュウリョク ジッコウ
122
r1b4 = PORTBbits.RB11;
123
r1b5 = PORTBbits.RB12; ニュウリョク ジッコウ
124
r1b6 = PORTBbits.RB13;
125
r1b7 = PORTBbits.RB14; ニュウリョク ジッコウ
126
r1b8 = PORTBbits.RB15;
127
LATBbits.LATB2 = 0; トランジスタ オフ
128
129
130
TRISBbits.TRISB8 = 1; ニュウリョク セッテイ
131
TRISBbits.TRISB9 = 1;
132
TRISBbits.TRISB10 = 1;
133
TRISBbits.TRISB11 = 1;
134
TRISBbits.TRISB12 = 1;
135
TRISBbits.TRISB13 = 1;
136
TRISBbits.TRISB14 = 1;
137
TRISBbits.TRISB15 = 1;
138
139
LATBbits.LATB3 = 1; トランジスタ オン
140
delay( 3000 );
141
r2b1 = PORTBbits.RB8;
142
r2b2 = PORTBbits.RB9; ニュウリョク ジッコウ
143
r2b3 = PORTBbits.RB10;
144
r2b4 = PORTBbits.RB11; ニュウリョク ジッコウ
145
r2b5 = PORTBbits.RB12;
146
r2b6 = PORTBbits.RB13; ニュウリョク ジッコウ
147
r2b7 = PORTBbits.RB14;
148
r2b8 = PORTBbits.RB15; ニュウリョク ジッコウ
149
LATBbits.LATB3 = 0;
150
151
0,1,1,0 ト ヒョウジサレマス
152
r1 = r1b8 * 128 + r1b7 * 64 + r1b6 * 32 + r1b5 * 16 + r1b4 * 8 + r1b3 * 4 + r1b2 * 2 + r1b1;
153
r2 = r2b8 * 128 + r2b7 * 64 + r2b6 * 32 + r2b5 * 16 + r2b4 * 8 + r2b3 * 4 + r2b2 * 2 + r2b1;
154
155
space();
156
tell( r1 );
157
space();
158
tell( r2 );
159
space();
160
161
162
163
164
165
while( 1 ) {
166
167
if( PORTAbits.RA4 == 1 ) {
168
LATBbits.LATB6 = 1;
169
} else {
170
LATBbits.LATB6 = 0;
171
}
172
}
173
174
return (EXIT_SUCCESS);
175
}