Soft SPI geht auf jedem Mikrocontroller. Es werden dann die SPI Signale
mit GPIO-Pins nachgebildet. Ist in der Regel nicht so schnell wie
Hardware SPI, aber durchaus brauchbar.
Bsp., ein SPI-Senderoutine für 8051 (SDCC) könnte so aussehen:
1 | ...
|
2 | #define LCD_CSB P0_1
|
3 | #define LCD_RS P0_2
|
4 | #define LCD_DATA P0_3
|
5 | #define LCD_SCK P0_4
|
6 |
|
7 | // ***********************************************************************
|
8 | // Schreiben eines Zeichens an das LCD-Modul (seriell Soft-SPI Mode)
|
9 | // Übergabe: lcd_byte : Auszugebendes Zeichen/Steuerzeichen
|
10 | // lcd_mode : 0 - Daten
|
11 | // 1 - Steuerzeichen
|
12 | // ***********************************************************************
|
13 | void write_lcd(byte lcd_byte, bit lcd_mode) {
|
14 | byte stelle;
|
15 | LCD_CSB = 0; // LCD-Modul freigeben
|
16 | if (lcd_mode) LCD_RS = 0; // Steuerzeichen
|
17 | else LCD_RS = 1; // Daten
|
18 |
|
19 | // Byte senden seriell senden, MSB zuerst (D7 D6 D5 D4 D3 D2 D1 D0)
|
20 | for ( stelle = 0x80; stelle; stelle >>= 1 ) {
|
21 | LCD_DATA = lcd_byte & stelle;
|
22 |
|
23 | LCD_SCK = 0; // Takt
|
24 | LCD_SCK = 1;
|
25 | LCD_SCK = 0;
|
26 |
|
27 | }
|
28 | LCD_CSB = 1; // LCD-Modul sperren
|
29 | }
|