SG12864A
Dependents: SG12864A_TestProgram
SG12864A.cpp@1:aacd73a4e7ee, 2010-07-20 (annotated)
- Committer:
- shintamainjp
- Date:
- Tue Jul 20 03:59:17 2010 +0000
- Revision:
- 1:aacd73a4e7ee
- Parent:
- 0:238f2d048222
- Child:
- 2:91c03e41c927
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
shintamainjp | 0:238f2d048222 | 1 | /** |
shintamainjp | 0:238f2d048222 | 2 | * SG12864A Graphics LCD module driver class (Version 0.0.1) |
shintamainjp | 0:238f2d048222 | 3 | * |
shintamainjp | 0:238f2d048222 | 4 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
shintamainjp | 0:238f2d048222 | 5 | * http://shinta.main.jp/ |
shintamainjp | 0:238f2d048222 | 6 | */ |
shintamainjp | 0:238f2d048222 | 7 | |
shintamainjp | 0:238f2d048222 | 8 | #include "SG12864A.h" |
shintamainjp | 0:238f2d048222 | 9 | |
shintamainjp | 1:aacd73a4e7ee | 10 | #define setPixel(x,y) buffer[((COLUMNS * 2)* (y / 8)) + x] |= (1 << (y % 8)) |
shintamainjp | 1:aacd73a4e7ee | 11 | #define unsetPixel(x,y) buffer[((COLUMNS * 2)* (y / 8)) + x] &= ~(1 << (y % 8)) |
shintamainjp | 1:aacd73a4e7ee | 12 | #define swap(a,b) {int c=a;a=b;b=c;} |
shintamainjp | 1:aacd73a4e7ee | 13 | |
shintamainjp | 0:238f2d048222 | 14 | SG12864A::SG12864A(PinName di, |
shintamainjp | 0:238f2d048222 | 15 | PinName rw, |
shintamainjp | 0:238f2d048222 | 16 | PinName en, |
shintamainjp | 0:238f2d048222 | 17 | PinName db0, |
shintamainjp | 0:238f2d048222 | 18 | PinName db1, |
shintamainjp | 0:238f2d048222 | 19 | PinName db2, |
shintamainjp | 0:238f2d048222 | 20 | PinName db3, |
shintamainjp | 0:238f2d048222 | 21 | PinName db4, |
shintamainjp | 0:238f2d048222 | 22 | PinName db5, |
shintamainjp | 0:238f2d048222 | 23 | PinName db6, |
shintamainjp | 0:238f2d048222 | 24 | PinName db7, |
shintamainjp | 0:238f2d048222 | 25 | PinName cs1, |
shintamainjp | 0:238f2d048222 | 26 | PinName cs2, |
shintamainjp | 0:238f2d048222 | 27 | PinName res) |
shintamainjp | 0:238f2d048222 | 28 | : |
shintamainjp | 0:238f2d048222 | 29 | ioDI(di), |
shintamainjp | 0:238f2d048222 | 30 | ioRW(rw), |
shintamainjp | 0:238f2d048222 | 31 | ioEN(en), |
shintamainjp | 0:238f2d048222 | 32 | ioDB(db0, db1, db2, db3, db4, db5, db6, db7), |
shintamainjp | 0:238f2d048222 | 33 | ioCS1(cs1), |
shintamainjp | 0:238f2d048222 | 34 | ioCS2(cs2), |
shintamainjp | 0:238f2d048222 | 35 | ioRES(res) { |
shintamainjp | 1:aacd73a4e7ee | 36 | bufferClear(); |
shintamainjp | 0:238f2d048222 | 37 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 38 | } |
shintamainjp | 0:238f2d048222 | 39 | |
shintamainjp | 0:238f2d048222 | 40 | SG12864A::~SG12864A() { |
shintamainjp | 0:238f2d048222 | 41 | } |
shintamainjp | 0:238f2d048222 | 42 | |
shintamainjp | 1:aacd73a4e7ee | 43 | void SG12864A::bufferPush(void) { |
shintamainjp | 1:aacd73a4e7ee | 44 | for (uint8_t i = 0; i < PAGES; i++) { |
shintamainjp | 1:aacd73a4e7ee | 45 | // CS1 |
shintamainjp | 1:aacd73a4e7ee | 46 | setPageAddress(SG12864A::CS1, i); |
shintamainjp | 1:aacd73a4e7ee | 47 | setColumnAddress(SG12864A::CS1, 0); |
shintamainjp | 1:aacd73a4e7ee | 48 | for (uint8_t j = 0; j < COLUMNS; j++) { |
shintamainjp | 1:aacd73a4e7ee | 49 | writeData(CS1, buffer[0 + ((COLUMNS * 2) * i) + j]); |
shintamainjp | 1:aacd73a4e7ee | 50 | } |
shintamainjp | 1:aacd73a4e7ee | 51 | // CS2 |
shintamainjp | 1:aacd73a4e7ee | 52 | setPageAddress(SG12864A::CS2, i); |
shintamainjp | 1:aacd73a4e7ee | 53 | setColumnAddress(SG12864A::CS2, 0); |
shintamainjp | 1:aacd73a4e7ee | 54 | for (uint8_t j = 0; j < COLUMNS; j++) { |
shintamainjp | 1:aacd73a4e7ee | 55 | writeData(CS2, buffer[COLUMNS + ((COLUMNS * 2) * i) + j]); |
shintamainjp | 1:aacd73a4e7ee | 56 | } |
shintamainjp | 1:aacd73a4e7ee | 57 | } |
shintamainjp | 1:aacd73a4e7ee | 58 | } |
shintamainjp | 1:aacd73a4e7ee | 59 | |
shintamainjp | 1:aacd73a4e7ee | 60 | void SG12864A::bufferPull(void) { |
shintamainjp | 1:aacd73a4e7ee | 61 | } |
shintamainjp | 1:aacd73a4e7ee | 62 | |
shintamainjp | 1:aacd73a4e7ee | 63 | void SG12864A::bufferClear(void) { |
shintamainjp | 1:aacd73a4e7ee | 64 | for (int i = 0; i < sizeof(buffer); i++) { |
shintamainjp | 1:aacd73a4e7ee | 65 | buffer[i] = 0x00; |
shintamainjp | 1:aacd73a4e7ee | 66 | } |
shintamainjp | 1:aacd73a4e7ee | 67 | } |
shintamainjp | 1:aacd73a4e7ee | 68 | |
shintamainjp | 1:aacd73a4e7ee | 69 | void SG12864A::bufferDrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { |
shintamainjp | 1:aacd73a4e7ee | 70 | /* |
shintamainjp | 1:aacd73a4e7ee | 71 | * Bresenham's line algorithm |
shintamainjp | 1:aacd73a4e7ee | 72 | */ |
shintamainjp | 1:aacd73a4e7ee | 73 | bool steep = abs(y2 - y1) > abs(x2 - x1); |
shintamainjp | 1:aacd73a4e7ee | 74 | if (steep) { |
shintamainjp | 1:aacd73a4e7ee | 75 | swap(x1, y1); |
shintamainjp | 1:aacd73a4e7ee | 76 | swap(x2, y2); |
shintamainjp | 1:aacd73a4e7ee | 77 | } |
shintamainjp | 1:aacd73a4e7ee | 78 | if (x1 > x2) { |
shintamainjp | 1:aacd73a4e7ee | 79 | swap(x1, x2); |
shintamainjp | 1:aacd73a4e7ee | 80 | swap(y1, y2); |
shintamainjp | 1:aacd73a4e7ee | 81 | } |
shintamainjp | 1:aacd73a4e7ee | 82 | int deltax = x2 - x1; |
shintamainjp | 1:aacd73a4e7ee | 83 | int deltay = abs(y2 - y1); |
shintamainjp | 1:aacd73a4e7ee | 84 | int error = deltax / 2; |
shintamainjp | 1:aacd73a4e7ee | 85 | int ystep; |
shintamainjp | 1:aacd73a4e7ee | 86 | int y = y1; |
shintamainjp | 1:aacd73a4e7ee | 87 | if (y1 < y2) { |
shintamainjp | 1:aacd73a4e7ee | 88 | ystep = 1; |
shintamainjp | 1:aacd73a4e7ee | 89 | } else { |
shintamainjp | 1:aacd73a4e7ee | 90 | ystep = -1; |
shintamainjp | 1:aacd73a4e7ee | 91 | } |
shintamainjp | 1:aacd73a4e7ee | 92 | for (int x = x1; x <= x2; x++) { |
shintamainjp | 1:aacd73a4e7ee | 93 | if (steep) { |
shintamainjp | 1:aacd73a4e7ee | 94 | setPixel(y,x); |
shintamainjp | 1:aacd73a4e7ee | 95 | } else { |
shintamainjp | 1:aacd73a4e7ee | 96 | setPixel(x,y); |
shintamainjp | 1:aacd73a4e7ee | 97 | } |
shintamainjp | 1:aacd73a4e7ee | 98 | error = error - deltay; |
shintamainjp | 1:aacd73a4e7ee | 99 | if (error < 0) { |
shintamainjp | 1:aacd73a4e7ee | 100 | y = y + ystep; |
shintamainjp | 1:aacd73a4e7ee | 101 | error = error + deltax; |
shintamainjp | 1:aacd73a4e7ee | 102 | } |
shintamainjp | 1:aacd73a4e7ee | 103 | } |
shintamainjp | 1:aacd73a4e7ee | 104 | } |
shintamainjp | 1:aacd73a4e7ee | 105 | |
shintamainjp | 1:aacd73a4e7ee | 106 | void SG12864A::bufferDrawBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { |
shintamainjp | 1:aacd73a4e7ee | 107 | for (int x = x1; x <= x2; x++) { |
shintamainjp | 1:aacd73a4e7ee | 108 | setPixel(x, y1); |
shintamainjp | 1:aacd73a4e7ee | 109 | setPixel(x, y2); |
shintamainjp | 1:aacd73a4e7ee | 110 | } |
shintamainjp | 1:aacd73a4e7ee | 111 | for (int y = y1; y <= y2; y++) { |
shintamainjp | 1:aacd73a4e7ee | 112 | setPixel(x1, y); |
shintamainjp | 1:aacd73a4e7ee | 113 | setPixel(x2, y); |
shintamainjp | 1:aacd73a4e7ee | 114 | } |
shintamainjp | 1:aacd73a4e7ee | 115 | } |
shintamainjp | 1:aacd73a4e7ee | 116 | |
shintamainjp | 1:aacd73a4e7ee | 117 | void SG12864A::bufferFillBox(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) { |
shintamainjp | 1:aacd73a4e7ee | 118 | for (int x = x1; x <= x2; x++) { |
shintamainjp | 1:aacd73a4e7ee | 119 | for (int y = y1; y <= y2; y++) { |
shintamainjp | 1:aacd73a4e7ee | 120 | setPixel(x, y); |
shintamainjp | 1:aacd73a4e7ee | 121 | } |
shintamainjp | 1:aacd73a4e7ee | 122 | } |
shintamainjp | 1:aacd73a4e7ee | 123 | } |
shintamainjp | 1:aacd73a4e7ee | 124 | |
shintamainjp | 0:238f2d048222 | 125 | /** |
shintamainjp | 0:238f2d048222 | 126 | * High Level Interface. |
shintamainjp | 0:238f2d048222 | 127 | * |
shintamainjp | 0:238f2d048222 | 128 | * Reset display module. |
shintamainjp | 0:238f2d048222 | 129 | */ |
shintamainjp | 0:238f2d048222 | 130 | void SG12864A::reset(void) { |
shintamainjp | 0:238f2d048222 | 131 | reset(true); |
shintamainjp | 0:238f2d048222 | 132 | wait_ms(200); |
shintamainjp | 0:238f2d048222 | 133 | reset(false); |
shintamainjp | 0:238f2d048222 | 134 | wait_ms(200); |
shintamainjp | 0:238f2d048222 | 135 | |
shintamainjp | 0:238f2d048222 | 136 | setDisplayOnOff(SG12864A::CS1, true); |
shintamainjp | 0:238f2d048222 | 137 | setDisplayOnOff(SG12864A::CS2, true); |
shintamainjp | 0:238f2d048222 | 138 | setDisplayStartLine(SG12864A::CS1, 0); |
shintamainjp | 0:238f2d048222 | 139 | setDisplayStartLine(SG12864A::CS2, 0); |
shintamainjp | 0:238f2d048222 | 140 | setPageAddress(SG12864A::CS1, 0); |
shintamainjp | 0:238f2d048222 | 141 | setPageAddress(SG12864A::CS2, 0); |
shintamainjp | 0:238f2d048222 | 142 | setColumnAddress(SG12864A::CS1, 0); |
shintamainjp | 0:238f2d048222 | 143 | setColumnAddress(SG12864A::CS2, 0); |
shintamainjp | 0:238f2d048222 | 144 | } |
shintamainjp | 0:238f2d048222 | 145 | |
shintamainjp | 0:238f2d048222 | 146 | /** |
shintamainjp | 0:238f2d048222 | 147 | * High Level Interface. |
shintamainjp | 0:238f2d048222 | 148 | * |
shintamainjp | 0:238f2d048222 | 149 | * Clear display module. |
shintamainjp | 0:238f2d048222 | 150 | */ |
shintamainjp | 0:238f2d048222 | 151 | void SG12864A::clear(void) { |
shintamainjp | 0:238f2d048222 | 152 | for (uint8_t page = 0; page < PAGES; page++) { |
shintamainjp | 0:238f2d048222 | 153 | for (uint8_t column = 0; column < COLUMNS; column++) { |
shintamainjp | 0:238f2d048222 | 154 | // CS1 |
shintamainjp | 0:238f2d048222 | 155 | setPageAddress(SG12864A::CS1, page); |
shintamainjp | 0:238f2d048222 | 156 | setColumnAddress(SG12864A::CS1, column); |
shintamainjp | 0:238f2d048222 | 157 | writeData(CS1, 0x00); |
shintamainjp | 0:238f2d048222 | 158 | // CS2 |
shintamainjp | 0:238f2d048222 | 159 | setPageAddress(SG12864A::CS2, page); |
shintamainjp | 0:238f2d048222 | 160 | setColumnAddress(SG12864A::CS2, column); |
shintamainjp | 0:238f2d048222 | 161 | writeData(CS2, 0x00); |
shintamainjp | 0:238f2d048222 | 162 | } |
shintamainjp | 0:238f2d048222 | 163 | } |
shintamainjp | 0:238f2d048222 | 164 | // CS1 |
shintamainjp | 0:238f2d048222 | 165 | setPageAddress(SG12864A::CS1, 0); |
shintamainjp | 0:238f2d048222 | 166 | setColumnAddress(SG12864A::CS1, 0); |
shintamainjp | 0:238f2d048222 | 167 | writeData(CS1, 0x00); |
shintamainjp | 0:238f2d048222 | 168 | // CS2 |
shintamainjp | 0:238f2d048222 | 169 | setPageAddress(SG12864A::CS2, 0); |
shintamainjp | 0:238f2d048222 | 170 | setColumnAddress(SG12864A::CS2, 0); |
shintamainjp | 0:238f2d048222 | 171 | writeData(CS2, 0x00); |
shintamainjp | 0:238f2d048222 | 172 | } |
shintamainjp | 0:238f2d048222 | 173 | |
shintamainjp | 0:238f2d048222 | 174 | /** |
shintamainjp | 0:238f2d048222 | 175 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 176 | * |
shintamainjp | 0:238f2d048222 | 177 | * Set display on/off. |
shintamainjp | 0:238f2d048222 | 178 | * |
shintamainjp | 0:238f2d048222 | 179 | * @param t Target (CS1, CS2). |
shintamainjp | 0:238f2d048222 | 180 | * @param on ON/OFF (true, false). |
shintamainjp | 0:238f2d048222 | 181 | */ |
shintamainjp | 0:238f2d048222 | 182 | void SG12864A::setDisplayOnOff(Target t, bool on) { |
shintamainjp | 0:238f2d048222 | 183 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 184 | uint8_t c = 0x3e | (on ? 0x01 : 0x00); |
shintamainjp | 0:238f2d048222 | 185 | write(t, SG12864A::Instruction, c); |
shintamainjp | 0:238f2d048222 | 186 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 187 | } |
shintamainjp | 0:238f2d048222 | 188 | |
shintamainjp | 0:238f2d048222 | 189 | /** |
shintamainjp | 0:238f2d048222 | 190 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 191 | * |
shintamainjp | 0:238f2d048222 | 192 | * Set display start line. |
shintamainjp | 0:238f2d048222 | 193 | * |
shintamainjp | 0:238f2d048222 | 194 | * @param t Target (CS1, CS2). |
shintamainjp | 0:238f2d048222 | 195 | * @param addr Display start line (0-63). |
shintamainjp | 0:238f2d048222 | 196 | */ |
shintamainjp | 0:238f2d048222 | 197 | void SG12864A::setDisplayStartLine(Target t, uint8_t addr) { |
shintamainjp | 0:238f2d048222 | 198 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 199 | uint8_t c = 0xc0 | (addr & 0x3f); |
shintamainjp | 0:238f2d048222 | 200 | write(t, SG12864A::Instruction, c); |
shintamainjp | 0:238f2d048222 | 201 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 202 | } |
shintamainjp | 0:238f2d048222 | 203 | |
shintamainjp | 0:238f2d048222 | 204 | /** |
shintamainjp | 0:238f2d048222 | 205 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 206 | * |
shintamainjp | 0:238f2d048222 | 207 | * Set page address. |
shintamainjp | 0:238f2d048222 | 208 | * |
shintamainjp | 0:238f2d048222 | 209 | * @param t Target (CS1, CS2). |
shintamainjp | 0:238f2d048222 | 210 | * @param addr Page address(0-7). |
shintamainjp | 0:238f2d048222 | 211 | */ |
shintamainjp | 0:238f2d048222 | 212 | void SG12864A::setPageAddress(Target t, uint8_t addr) { |
shintamainjp | 0:238f2d048222 | 213 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 214 | uint8_t c = 0xb8 | (addr & 0x07); |
shintamainjp | 0:238f2d048222 | 215 | write(t, SG12864A::Instruction, c); |
shintamainjp | 0:238f2d048222 | 216 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 217 | } |
shintamainjp | 0:238f2d048222 | 218 | |
shintamainjp | 0:238f2d048222 | 219 | /** |
shintamainjp | 0:238f2d048222 | 220 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 221 | * |
shintamainjp | 0:238f2d048222 | 222 | * Set column address. |
shintamainjp | 0:238f2d048222 | 223 | * |
shintamainjp | 0:238f2d048222 | 224 | * @param t Target. (CS1, CS2) |
shintamainjp | 0:238f2d048222 | 225 | * @param addr Column address (0-63). |
shintamainjp | 0:238f2d048222 | 226 | */ |
shintamainjp | 0:238f2d048222 | 227 | void SG12864A::setColumnAddress(Target t, uint8_t addr) { |
shintamainjp | 0:238f2d048222 | 228 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 229 | uint8_t c = 0x40 | (addr & 0x3f); |
shintamainjp | 0:238f2d048222 | 230 | write(t, SG12864A::Instruction, c); |
shintamainjp | 0:238f2d048222 | 231 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 232 | } |
shintamainjp | 0:238f2d048222 | 233 | |
shintamainjp | 0:238f2d048222 | 234 | /** |
shintamainjp | 0:238f2d048222 | 235 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 236 | */ |
shintamainjp | 0:238f2d048222 | 237 | void SG12864A::readStatus(Target t, uint8_t *c) { |
shintamainjp | 0:238f2d048222 | 238 | setDirectionToRead(); |
shintamainjp | 0:238f2d048222 | 239 | read(t, SG12864A::Instruction, c); |
shintamainjp | 0:238f2d048222 | 240 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 241 | } |
shintamainjp | 0:238f2d048222 | 242 | |
shintamainjp | 0:238f2d048222 | 243 | /** |
shintamainjp | 0:238f2d048222 | 244 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 245 | */ |
shintamainjp | 0:238f2d048222 | 246 | void SG12864A::writeData(Target t, uint8_t c) { |
shintamainjp | 0:238f2d048222 | 247 | setDirectionToWrite(); |
shintamainjp | 0:238f2d048222 | 248 | write(t, SG12864A::Data, c); |
shintamainjp | 0:238f2d048222 | 249 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 250 | } |
shintamainjp | 0:238f2d048222 | 251 | |
shintamainjp | 0:238f2d048222 | 252 | /** |
shintamainjp | 0:238f2d048222 | 253 | * Middle Level Interface. |
shintamainjp | 0:238f2d048222 | 254 | */ |
shintamainjp | 0:238f2d048222 | 255 | void SG12864A::readData(Target t, uint8_t *c) { |
shintamainjp | 0:238f2d048222 | 256 | setDirectionToRead(); |
shintamainjp | 0:238f2d048222 | 257 | read(t, SG12864A::Data, c); |
shintamainjp | 0:238f2d048222 | 258 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 259 | } |
shintamainjp | 0:238f2d048222 | 260 | |
shintamainjp | 0:238f2d048222 | 261 | /** |
shintamainjp | 0:238f2d048222 | 262 | * Low Level Interface. |
shintamainjp | 0:238f2d048222 | 263 | */ |
shintamainjp | 0:238f2d048222 | 264 | void SG12864A::setDirectionToRead() { |
shintamainjp | 0:238f2d048222 | 265 | ioDB.input(); |
shintamainjp | 0:238f2d048222 | 266 | ioRW = 1; |
shintamainjp | 0:238f2d048222 | 267 | } |
shintamainjp | 0:238f2d048222 | 268 | |
shintamainjp | 0:238f2d048222 | 269 | /** |
shintamainjp | 0:238f2d048222 | 270 | * Low Level Interface. |
shintamainjp | 0:238f2d048222 | 271 | */ |
shintamainjp | 0:238f2d048222 | 272 | void SG12864A::setDirectionToWrite() { |
shintamainjp | 0:238f2d048222 | 273 | ioDB.output(); |
shintamainjp | 0:238f2d048222 | 274 | ioRW = 0; |
shintamainjp | 0:238f2d048222 | 275 | } |
shintamainjp | 0:238f2d048222 | 276 | |
shintamainjp | 0:238f2d048222 | 277 | /** |
shintamainjp | 0:238f2d048222 | 278 | * Low Level Interface. |
shintamainjp | 0:238f2d048222 | 279 | */ |
shintamainjp | 0:238f2d048222 | 280 | void SG12864A::write(Target t, Mode m, uint8_t c) { |
shintamainjp | 0:238f2d048222 | 281 | switch (t) { |
shintamainjp | 0:238f2d048222 | 282 | case CS1: |
shintamainjp | 0:238f2d048222 | 283 | ioCS1 = 1; |
shintamainjp | 0:238f2d048222 | 284 | ioCS2 = 0; |
shintamainjp | 0:238f2d048222 | 285 | break; |
shintamainjp | 0:238f2d048222 | 286 | case CS2: |
shintamainjp | 0:238f2d048222 | 287 | ioCS1 = 0; |
shintamainjp | 0:238f2d048222 | 288 | ioCS2 = 1; |
shintamainjp | 0:238f2d048222 | 289 | break; |
shintamainjp | 0:238f2d048222 | 290 | } |
shintamainjp | 0:238f2d048222 | 291 | switch (m) { |
shintamainjp | 0:238f2d048222 | 292 | case Data: |
shintamainjp | 0:238f2d048222 | 293 | ioDI = 1; |
shintamainjp | 0:238f2d048222 | 294 | break; |
shintamainjp | 0:238f2d048222 | 295 | case Instruction: |
shintamainjp | 0:238f2d048222 | 296 | ioDI = 0; |
shintamainjp | 0:238f2d048222 | 297 | break; |
shintamainjp | 0:238f2d048222 | 298 | } |
shintamainjp | 0:238f2d048222 | 299 | ioDB = c; |
shintamainjp | 0:238f2d048222 | 300 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 301 | ioEN = 1; |
shintamainjp | 0:238f2d048222 | 302 | wait_us(1); |
shintamainjp | 0:238f2d048222 | 303 | ioEN = 0; |
shintamainjp | 0:238f2d048222 | 304 | wait_us(5); |
shintamainjp | 0:238f2d048222 | 305 | } |
shintamainjp | 0:238f2d048222 | 306 | |
shintamainjp | 0:238f2d048222 | 307 | /** |
shintamainjp | 0:238f2d048222 | 308 | * Low Level Interface. |
shintamainjp | 0:238f2d048222 | 309 | */ |
shintamainjp | 0:238f2d048222 | 310 | void SG12864A::read(Target t, Mode m, uint8_t *c) { |
shintamainjp | 0:238f2d048222 | 311 | // TODO |
shintamainjp | 0:238f2d048222 | 312 | } |
shintamainjp | 0:238f2d048222 | 313 | |
shintamainjp | 0:238f2d048222 | 314 | /** |
shintamainjp | 0:238f2d048222 | 315 | * Low Level Interface. |
shintamainjp | 0:238f2d048222 | 316 | */ |
shintamainjp | 0:238f2d048222 | 317 | void SG12864A::reset(bool b) { |
shintamainjp | 0:238f2d048222 | 318 | if (b) { |
shintamainjp | 0:238f2d048222 | 319 | ioRES = 0; |
shintamainjp | 0:238f2d048222 | 320 | } else { |
shintamainjp | 0:238f2d048222 | 321 | ioRES = 1; |
shintamainjp | 0:238f2d048222 | 322 | } |
shintamainjp | 0:238f2d048222 | 323 | } |