Subversion Repositories Code-Repo

Rev

Rev 113 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 113 Rev 114
Line 35... Line 35...
35
    LATAbits.LATA2 = 0; // DAT
35
    LATAbits.LATA2 = 0; // DAT
36
    LATAbits.LATA3 = 0; // OE
36
    LATAbits.LATA3 = 0; // OE
37
#endif
37
#endif
38
 
38
 
39
#ifdef _SPI2_V2
39
#ifdef _SPI2_V2
-
 
40
    TRISAbits.TRISA0 = 0;   // CLK
-
 
41
    TRISAbits.TRISA1 = 0;   // DAT
-
 
42
    TRISAbits.TRISA2 = 0;   // LE
-
 
43
    TRISAbits.TRISA3 = 0;   // OE
-
 
44
    
-
 
45
    LATAbits.LATA0 = 0; // CLK
-
 
46
    LATAbits.LATA1 = 0; // DAT
-
 
47
    LATAbits.LATA2 = 1; // LE
-
 
48
    LATAbits.LATA3 = 0; // OE
-
 
49
 
40
    RPOR0 = 10; // CLK
50
    RPOR0 = 10; // CLK
41
    RPOR1 = 9;  // DATA
51
    RPOR1 = 9;  // DATA
42
    OpenSPI2(SPI_FOSC_4, MODE_00, SMPMID);
52
    OpenSPI2(SPI_FOSC_4, MODE_00, SMPMID);
43
#endif
53
#endif
44
 
54
 
45
    led_last_value = 0;
55
    led_last_value = 0;
46
    led_driver_data(0);
56
    led_driver_data(0);
47
    led_driver_data(0);
57
    led_driver_data(0);
48
}
58
}
49
 
59
 
50
#ifdef _SPI2_V1
-
 
51
void led_driver_clock() {
60
void led_driver_clock() {
-
 
61
#ifdef _SPI2_V1
52
    LATAbits.LATA1 = 0x1; // Simple clock output toggle
62
    LATAbits.LATA1 = 0x1; // Simple clock output toggle
53
    Nop();
63
    Nop();
54
    LATAbits.LATA1 = 0x0;
64
    LATAbits.LATA1 = 0x0;
55
    Nop();
65
    Nop();
56
}
-
 
57
#endif
66
#endif
-
 
67
#ifdef _SPI2_V2
-
 
68
    LATAbits.LATA0 = 0x1; // Simple clock output toggle
-
 
69
    Nop();
-
 
70
    LATAbits.LATA0 = 0x0;
-
 
71
    Nop();
-
 
72
#endif
-
 
73
}
58
 
74
 
59
void led_driver_data(char val) {
75
void led_driver_data(char val) {
60
#ifdef _SPI2_V1
76
#ifdef _SPI2_V1
61
    int i;
77
    int i;
62
    LATAbits.LATA0 = 0x0; // Set latch low to pause display
78
    LATAbits.LATA0 = 0x0; // Set latch low to pause display
Line 67... Line 83...
67
    }
83
    }
68
    LATAbits.LATA0 = 0x1; // Set latch high to resume display
84
    LATAbits.LATA0 = 0x1; // Set latch high to resume display
69
#endif
85
#endif
70
 
86
 
71
#ifdef _SPI2_V2
87
#ifdef _SPI2_V2
72
    LATAbits.LATA0 = 0x0;
-
 
73
    WriteSPI2(val);
88
    WriteSPI2(val);
74
    LATAbits.LATA0 = 0x1;
-
 
75
#endif
89
#endif
76
}
90
}
77
 
91
 
78
void led_driver_num(unsigned char data) {
92
void led_driver_num(unsigned char data) {
79
    unsigned char tmp = 0;
93
    unsigned char tmp = 0;
80
    led_last_value = 0;
94
    led_last_value = 0;
81
    
95
    
82
    // Determine right character (1s digit)
96
    // Determine right character (1s digit)
83
    tmp = data % 10;
97
    tmp = data % 10;
84
    switch (tmp) {
98
    switch (tmp) {
-
 
99
#ifdef _SPI2_V1
85
        case 0:
100
        case 0:
86
            led_last_value |= 0x0D70;
101
            led_last_value |= 0x0D70;
87
            break;
102
            break;
88
        case 1:
103
        case 1:
89
            led_last_value |= 0x0140;
104
            led_last_value |= 0x0140;
Line 110... Line 125...
110
            led_last_value |= 0x0F70;
125
            led_last_value |= 0x0F70;
111
            break;
126
            break;
112
        case 9:
127
        case 9:
113
            led_last_value |= 0x0770;
128
            led_last_value |= 0x0770;
114
            break;
129
            break;
-
 
130
#endif
-
 
131
#ifdef _SPI2_V2
-
 
132
            case 0:
-
 
133
            led_last_value |= 0x0EB0;
-
 
134
            break;
-
 
135
        case 1:
-
 
136
            led_last_value |= 0x0280;
-
 
137
            break;
-
 
138
        case 2:
-
 
139
            led_last_value |= 0x0670;
-
 
140
            break;
-
 
141
        case 3:
-
 
142
            led_last_value |= 0x06E0;
-
 
143
            break;
-
 
144
        case 4:
-
 
145
            led_last_value |= 0x0AC0;
-
 
146
            break;
-
 
147
        case 5:
-
 
148
            led_last_value |= 0x0CE0;
-
 
149
            break;
-
 
150
        case 6:
-
 
151
            led_last_value |= 0x0CF0;
-
 
152
            break;
-
 
153
        case 7:
-
 
154
            led_last_value |= 0x0E80;
-
 
155
            break;
-
 
156
        case 8:
-
 
157
            led_last_value |= 0x0EF0;
-
 
158
            break;
-
 
159
        case 9:
-
 
160
            led_last_value |= 0x0EE0;
-
 
161
            break;
-
 
162
#endif
115
    }
163
    }
116
 
164
 
117
    // Determine left character (10s digit)
165
    // Determine left character (10s digit)
118
    tmp = data / 10;
166
    tmp = data / 10;
119
    switch (tmp) {
167
    switch (tmp) {
-
 
168
#ifdef _SPI2_V1
120
        case 0:
169
        case 0:
121
            led_last_value |= 0xE00D;
170
            led_last_value |= 0xE00D;
122
            break;
171
            break;
123
        case 1:
172
        case 1:
124
            led_last_value |= 0x2008;
173
            led_last_value |= 0x2008;
Line 145... Line 194...
145
            led_last_value |= 0xE00F;
194
            led_last_value |= 0xE00F;
146
            break;
195
            break;
147
        case 9:
196
        case 9:
148
            led_last_value |= 0x600F;
197
            led_last_value |= 0x600F;
149
            break;
198
            break;
-
 
199
#endif
-
 
200
#ifdef _SPI2_V2
-
 
201
            case 0:
-
 
202
            led_last_value |= 0xB007;
-
 
203
            break;
-
 
204
        case 1:
-
 
205
            led_last_value |= 0x1004;
-
 
206
            break;
-
 
207
        case 2:
-
 
208
            led_last_value |= 0x7003;
-
 
209
            break;
-
 
210
        case 3:
-
 
211
            led_last_value |= 0x7006;
-
 
212
            break;
-
 
213
        case 4:
-
 
214
            led_last_value |= 0xD004;
-
 
215
            break;
-
 
216
        case 5:
-
 
217
            led_last_value |= 0xE006;
-
 
218
            break;
-
 
219
        case 6:
-
 
220
            led_last_value |= 0xE007;
-
 
221
            break;
-
 
222
        case 7:
-
 
223
            led_last_value |= 0xB004;
-
 
224
            break;
-
 
225
        case 8:
-
 
226
            led_last_value |= 0xF007;
-
 
227
            break;
-
 
228
        case 9:
-
 
229
            led_last_value |= 0xF006;
-
 
230
            break;
-
 
231
#endif
150
    }
232
    }
151
 
233
 
-
 
234
#ifdef _SPI2_V1
152
    led_driver_data(led_last_value & 0x00FF);
235
    led_driver_data(led_last_value & 0x00FF);
153
    led_driver_data((led_last_value & 0xFF00) >> 8);
236
    led_driver_data((led_last_value & 0xFF00) >> 8);
-
 
237
#endif
-
 
238
#ifdef _SPI2_V2
-
 
239
    led_driver_data((led_last_value & 0xFF00) >> 8);
-
 
240
    led_driver_data(led_last_value & 0x00FF);
-
 
241
#endif
154
}
242
}
155
 
243
 
156
void led_driver_show_last() {
244
void led_driver_show_last() {
-
 
245
#ifdef _SPI2_V1
157
    led_driver_data(led_last_value & 0x00FF);
246
    led_driver_data(led_last_value & 0x00FF);
158
    led_driver_data((led_last_value & 0xFF00) >> 8);
247
    led_driver_data((led_last_value & 0xFF00) >> 8);
-
 
248
#endif
-
 
249
#ifdef _SPI2_V2
-
 
250
    led_driver_data((led_last_value & 0xFF00) >> 8);
-
 
251
    led_driver_data(led_last_value & 0x00FF);
-
 
252
#endif
159
}
253
}
160
254