Fumio Hirose
/
DDS-VFO
First Programm.HF Lo Band VFO with LPC1114 and AD9851 module.Built in ELEKEY.Using ACM1602NI.
main.cpp@0:5cdf1a556e60, 2016-11-13 (annotated)
- Committer:
- jp1nom
- Date:
- Sun Nov 13 14:54:43 2016 +0000
- Revision:
- 0:5cdf1a556e60
- Child:
- 1:ee890adf56ea
DDS VFO for HF Lo BAND with LPC1114FN28 and AD9851 .using Shuttle Dial.Built in ELEKEY.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jp1nom | 0:5cdf1a556e60 | 1 | #include "mbed.h" |
jp1nom | 0:5cdf1a556e60 | 2 | #include "I2cLCD.h" |
jp1nom | 0:5cdf1a556e60 | 3 | |
jp1nom | 0:5cdf1a556e60 | 4 | DigitalOut DATA(dp9); |
jp1nom | 0:5cdf1a556e60 | 5 | DigitalOut W_CLK(dp17); |
jp1nom | 0:5cdf1a556e60 | 6 | DigitalOut FQ_UD(dp11); |
jp1nom | 0:5cdf1a556e60 | 7 | DigitalOut RESET(dp26); //previously known as dp26 |
jp1nom | 0:5cdf1a556e60 | 8 | DigitalOut LED(dp14); |
jp1nom | 0:5cdf1a556e60 | 9 | DigitalOut PTT_OUT(dp18); |
jp1nom | 0:5cdf1a556e60 | 10 | DigitalIn PTT_ON(dp1); |
jp1nom | 0:5cdf1a556e60 | 11 | DigitalIn DOT(dp4); |
jp1nom | 0:5cdf1a556e60 | 12 | DigitalIn BAR(dp6); |
jp1nom | 0:5cdf1a556e60 | 13 | DigitalOut KEY(dp13); |
jp1nom | 0:5cdf1a556e60 | 14 | DigitalIn BAND_SW(dp10); |
jp1nom | 0:5cdf1a556e60 | 15 | DigitalIn JOG_1(dp2); |
jp1nom | 0:5cdf1a556e60 | 16 | DigitalIn JOG_2(dp28); //previously known as dp28 |
jp1nom | 0:5cdf1a556e60 | 17 | DigitalIn JOG_3(dp25); |
jp1nom | 0:5cdf1a556e60 | 18 | DigitalIn JOG_4(dp16); |
jp1nom | 0:5cdf1a556e60 | 19 | |
jp1nom | 0:5cdf1a556e60 | 20 | double FQX; |
jp1nom | 0:5cdf1a556e60 | 21 | double FQD; |
jp1nom | 0:5cdf1a556e60 | 22 | |
jp1nom | 0:5cdf1a556e60 | 23 | double FQD_18 = 1810000; |
jp1nom | 0:5cdf1a556e60 | 24 | double FQD_19 = 1907500; |
jp1nom | 0:5cdf1a556e60 | 25 | double FQD_351 = 3500000; |
jp1nom | 0:5cdf1a556e60 | 26 | double FQD_352 = 3599000; |
jp1nom | 0:5cdf1a556e60 | 27 | double FQD_353 = 3680000; |
jp1nom | 0:5cdf1a556e60 | 28 | double FQD_381 = 3702000; |
jp1nom | 0:5cdf1a556e60 | 29 | double FQD_382 = 3745000; |
jp1nom | 0:5cdf1a556e60 | 30 | double FQD_383 = 3791000; |
jp1nom | 0:5cdf1a556e60 | 31 | double FQD_4 = 4630000; |
jp1nom | 0:5cdf1a556e60 | 32 | double FQD_7 = 7000000; |
jp1nom | 0:5cdf1a556e60 | 33 | double FQD_10 = 10100000; |
jp1nom | 0:5cdf1a556e60 | 34 | |
jp1nom | 0:5cdf1a556e60 | 35 | double FQ; |
jp1nom | 0:5cdf1a556e60 | 36 | |
jp1nom | 0:5cdf1a556e60 | 37 | double FQ_18 = 43191352; |
jp1nom | 0:5cdf1a556e60 | 38 | double FQ_19 = 45517913; |
jp1nom | 0:5cdf1a556e60 | 39 | double FQ_351 = 83519190.5; |
jp1nom | 0:5cdf1a556e60 | 40 | double FQ_352 = 85881750; |
jp1nom | 0:5cdf1a556e60 | 41 | double FQ_353 = 87814470; |
jp1nom | 0:5cdf1a556e60 | 42 | double FQ_381 = 88339811; |
jp1nom | 0:5cdf1a556e60 | 43 | double FQ_382 = 89365820; |
jp1nom | 0:5cdf1a556e60 | 44 | double FQ_383 = 90463357; |
jp1nom | 0:5cdf1a556e60 | 45 | double FQ_4 = 110484088; |
jp1nom | 0:5cdf1a556e60 | 46 | double FQ_7 = 167038250; |
jp1nom | 0:5cdf1a556e60 | 47 | double FQ_10 = 241012230; |
jp1nom | 0:5cdf1a556e60 | 48 | |
jp1nom | 0:5cdf1a556e60 | 49 | double f1 = 7000000; |
jp1nom | 0:5cdf1a556e60 | 50 | double f2 = 7200000; |
jp1nom | 0:5cdf1a556e60 | 51 | double f1_CW = 7000000; |
jp1nom | 0:5cdf1a556e60 | 52 | double f2_CW = 7045000; |
jp1nom | 0:5cdf1a556e60 | 53 | int BAND; |
jp1nom | 0:5cdf1a556e60 | 54 | double IF; |
jp1nom | 0:5cdf1a556e60 | 55 | double STEPD; |
jp1nom | 0:5cdf1a556e60 | 56 | double STEP = 2.386; |
jp1nom | 0:5cdf1a556e60 | 57 | float wt = 0.1; |
jp1nom | 0:5cdf1a556e60 | 58 | const int a=1; |
jp1nom | 0:5cdf1a556e60 | 59 | int s; |
jp1nom | 0:5cdf1a556e60 | 60 | |
jp1nom | 0:5cdf1a556e60 | 61 | Ticker deley; |
jp1nom | 0:5cdf1a556e60 | 62 | float del = 0.1; |
jp1nom | 0:5cdf1a556e60 | 63 | |
jp1nom | 0:5cdf1a556e60 | 64 | void DDS(void); |
jp1nom | 0:5cdf1a556e60 | 65 | void DDS_U(void); |
jp1nom | 0:5cdf1a556e60 | 66 | void DDS_D(void); |
jp1nom | 0:5cdf1a556e60 | 67 | void DDS_T(void); |
jp1nom | 0:5cdf1a556e60 | 68 | void GET_LCD_DATA(void); |
jp1nom | 0:5cdf1a556e60 | 69 | void STEPS(void); |
jp1nom | 0:5cdf1a556e60 | 70 | void QSY(void); |
jp1nom | 0:5cdf1a556e60 | 71 | void STEPSS(void); |
jp1nom | 0:5cdf1a556e60 | 72 | void JOG(void); |
jp1nom | 0:5cdf1a556e60 | 73 | void DDS_CW(void); |
jp1nom | 0:5cdf1a556e60 | 74 | void PTT_OFF(void); |
jp1nom | 0:5cdf1a556e60 | 75 | |
jp1nom | 0:5cdf1a556e60 | 76 | I2cLCD lcd(dp5, dp27); |
jp1nom | 0:5cdf1a556e60 | 77 | |
jp1nom | 0:5cdf1a556e60 | 78 | int main() { |
jp1nom | 0:5cdf1a556e60 | 79 | |
jp1nom | 0:5cdf1a556e60 | 80 | KEY = 0; |
jp1nom | 0:5cdf1a556e60 | 81 | STEPD = 10; |
jp1nom | 0:5cdf1a556e60 | 82 | BAND = 7; |
jp1nom | 0:5cdf1a556e60 | 83 | FQD = FQD_7; |
jp1nom | 0:5cdf1a556e60 | 84 | FQ = FQ_7; |
jp1nom | 0:5cdf1a556e60 | 85 | |
jp1nom | 0:5cdf1a556e60 | 86 | IF = 10857458;//IF 455KHz |
jp1nom | 0:5cdf1a556e60 | 87 | // IF = 255329316.50856;// IF 10.7MHz |
jp1nom | 0:5cdf1a556e60 | 88 | // lcd.locate(1,1); |
jp1nom | 0:5cdf1a556e60 | 89 | // lcd.printf("455K"); |
jp1nom | 0:5cdf1a556e60 | 90 | // lcd.locate(0,1); |
jp1nom | 0:5cdf1a556e60 | 91 | // lcd.printf("10.7M"); |
jp1nom | 0:5cdf1a556e60 | 92 | |
jp1nom | 0:5cdf1a556e60 | 93 | |
jp1nom | 0:5cdf1a556e60 | 94 | LED = 0; |
jp1nom | 0:5cdf1a556e60 | 95 | s = 1; |
jp1nom | 0:5cdf1a556e60 | 96 | |
jp1nom | 0:5cdf1a556e60 | 97 | RESET=0; |
jp1nom | 0:5cdf1a556e60 | 98 | RESET=1; |
jp1nom | 0:5cdf1a556e60 | 99 | wait_us(100); |
jp1nom | 0:5cdf1a556e60 | 100 | RESET=0; |
jp1nom | 0:5cdf1a556e60 | 101 | DATA=0; |
jp1nom | 0:5cdf1a556e60 | 102 | FQ_UD=0; |
jp1nom | 0:5cdf1a556e60 | 103 | W_CLK=0; |
jp1nom | 0:5cdf1a556e60 | 104 | |
jp1nom | 0:5cdf1a556e60 | 105 | W_CLK=1; |
jp1nom | 0:5cdf1a556e60 | 106 | wait_us(100); |
jp1nom | 0:5cdf1a556e60 | 107 | W_CLK=0; |
jp1nom | 0:5cdf1a556e60 | 108 | FQ_UD=1; |
jp1nom | 0:5cdf1a556e60 | 109 | wait_us(100); |
jp1nom | 0:5cdf1a556e60 | 110 | FQ_UD=0; |
jp1nom | 0:5cdf1a556e60 | 111 | wait_us(100); |
jp1nom | 0:5cdf1a556e60 | 112 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 113 | |
jp1nom | 0:5cdf1a556e60 | 114 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 115 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 116 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 117 | lcd.locate(8,0); |
jp1nom | 0:5cdf1a556e60 | 118 | lcd.printf("0MHz"); |
jp1nom | 0:5cdf1a556e60 | 119 | lcd.locate(12,1); |
jp1nom | 0:5cdf1a556e60 | 120 | lcd.printf("1KHz"); |
jp1nom | 0:5cdf1a556e60 | 121 | lcd.locate(14,0); |
jp1nom | 0:5cdf1a556e60 | 122 | lcd.printf("RX"); |
jp1nom | 0:5cdf1a556e60 | 123 | lcd.locate(0,1); |
jp1nom | 0:5cdf1a556e60 | 124 | lcd.printf("Mode:"); |
jp1nom | 0:5cdf1a556e60 | 125 | |
jp1nom | 0:5cdf1a556e60 | 126 | while(1) { |
jp1nom | 0:5cdf1a556e60 | 127 | if (PTT_ON==0) {DDS_T();} |
jp1nom | 0:5cdf1a556e60 | 128 | // if (FQ_UP==0) {DDS_U();} |
jp1nom | 0:5cdf1a556e60 | 129 | // if (FQ_DOWN==0) {DDS_D();} |
jp1nom | 0:5cdf1a556e60 | 130 | // if (FSTEP==0) {STEPS();} |
jp1nom | 0:5cdf1a556e60 | 131 | if (DOT==0) {DDS_CW();} |
jp1nom | 0:5cdf1a556e60 | 132 | if (BAR==0) {DDS_CW();} |
jp1nom | 0:5cdf1a556e60 | 133 | if (BAND_SW==0) {QSY();} |
jp1nom | 0:5cdf1a556e60 | 134 | if (JOG_1==1) {JOG();} |
jp1nom | 0:5cdf1a556e60 | 135 | } |
jp1nom | 0:5cdf1a556e60 | 136 | } |
jp1nom | 0:5cdf1a556e60 | 137 | |
jp1nom | 0:5cdf1a556e60 | 138 | void DDS(void) { |
jp1nom | 0:5cdf1a556e60 | 139 | |
jp1nom | 0:5cdf1a556e60 | 140 | unsigned long int DDS_DATA; |
jp1nom | 0:5cdf1a556e60 | 141 | unsigned long int BIT_DATA; |
jp1nom | 0:5cdf1a556e60 | 142 | |
jp1nom | 0:5cdf1a556e60 | 143 | int i = 0; |
jp1nom | 0:5cdf1a556e60 | 144 | |
jp1nom | 0:5cdf1a556e60 | 145 | DDS_DATA = FQX; |
jp1nom | 0:5cdf1a556e60 | 146 | |
jp1nom | 0:5cdf1a556e60 | 147 | for (i=0; i<32; i++) { |
jp1nom | 0:5cdf1a556e60 | 148 | BIT_DATA = DDS_DATA & 1; |
jp1nom | 0:5cdf1a556e60 | 149 | if(BIT_DATA==1) { |
jp1nom | 0:5cdf1a556e60 | 150 | DATA = 1; |
jp1nom | 0:5cdf1a556e60 | 151 | } else { |
jp1nom | 0:5cdf1a556e60 | 152 | DATA = 0; |
jp1nom | 0:5cdf1a556e60 | 153 | } |
jp1nom | 0:5cdf1a556e60 | 154 | W_CLK = 1; |
jp1nom | 0:5cdf1a556e60 | 155 | DDS_DATA = DDS_DATA >> 1; |
jp1nom | 0:5cdf1a556e60 | 156 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 157 | W_CLK = 0; |
jp1nom | 0:5cdf1a556e60 | 158 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 159 | } |
jp1nom | 0:5cdf1a556e60 | 160 | |
jp1nom | 0:5cdf1a556e60 | 161 | DDS_DATA = a; |
jp1nom | 0:5cdf1a556e60 | 162 | |
jp1nom | 0:5cdf1a556e60 | 163 | for (i=0; i<8; i++) { |
jp1nom | 0:5cdf1a556e60 | 164 | BIT_DATA = DDS_DATA & 1; |
jp1nom | 0:5cdf1a556e60 | 165 | if(BIT_DATA==1) { |
jp1nom | 0:5cdf1a556e60 | 166 | DATA = 1; |
jp1nom | 0:5cdf1a556e60 | 167 | } else { |
jp1nom | 0:5cdf1a556e60 | 168 | DATA = 0; |
jp1nom | 0:5cdf1a556e60 | 169 | } |
jp1nom | 0:5cdf1a556e60 | 170 | W_CLK = 1; |
jp1nom | 0:5cdf1a556e60 | 171 | DDS_DATA = DDS_DATA >> 1; |
jp1nom | 0:5cdf1a556e60 | 172 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 173 | W_CLK = 0; |
jp1nom | 0:5cdf1a556e60 | 174 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 175 | } |
jp1nom | 0:5cdf1a556e60 | 176 | FQ_UD = 1; |
jp1nom | 0:5cdf1a556e60 | 177 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 178 | FQ_UD = 0; |
jp1nom | 0:5cdf1a556e60 | 179 | wait_us(10); |
jp1nom | 0:5cdf1a556e60 | 180 | } |
jp1nom | 0:5cdf1a556e60 | 181 | |
jp1nom | 0:5cdf1a556e60 | 182 | void DDS_U(void) { |
jp1nom | 0:5cdf1a556e60 | 183 | |
jp1nom | 0:5cdf1a556e60 | 184 | // if (FQD <= f1 && FQD <= f2) { |
jp1nom | 0:5cdf1a556e60 | 185 | if (s==0) { |
jp1nom | 0:5cdf1a556e60 | 186 | if ((FQD + STEPD) <= f2) { |
jp1nom | 0:5cdf1a556e60 | 187 | FQD = FQD + STEPD; |
jp1nom | 0:5cdf1a556e60 | 188 | FQ = FQ + STEP * 100; |
jp1nom | 0:5cdf1a556e60 | 189 | } |
jp1nom | 0:5cdf1a556e60 | 190 | }else{ |
jp1nom | 0:5cdf1a556e60 | 191 | if ((FQD + STEPD * 100) <= f2) { |
jp1nom | 0:5cdf1a556e60 | 192 | FQD = FQD + STEPD * 100; |
jp1nom | 0:5cdf1a556e60 | 193 | FQ = FQ + STEP * 10000; |
jp1nom | 0:5cdf1a556e60 | 194 | } |
jp1nom | 0:5cdf1a556e60 | 195 | } |
jp1nom | 0:5cdf1a556e60 | 196 | // } |
jp1nom | 0:5cdf1a556e60 | 197 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 198 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 199 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 200 | wait(wt); |
jp1nom | 0:5cdf1a556e60 | 201 | } |
jp1nom | 0:5cdf1a556e60 | 202 | |
jp1nom | 0:5cdf1a556e60 | 203 | void DDS_D(void) { |
jp1nom | 0:5cdf1a556e60 | 204 | |
jp1nom | 0:5cdf1a556e60 | 205 | // if (FQD <= f1 && FQD <= f2) { |
jp1nom | 0:5cdf1a556e60 | 206 | if (s==0) { |
jp1nom | 0:5cdf1a556e60 | 207 | if ((FQD - STEPD) >= f1) { |
jp1nom | 0:5cdf1a556e60 | 208 | FQD = FQD - STEPD; |
jp1nom | 0:5cdf1a556e60 | 209 | FQ = FQ - STEP * 100; |
jp1nom | 0:5cdf1a556e60 | 210 | } |
jp1nom | 0:5cdf1a556e60 | 211 | }else{ |
jp1nom | 0:5cdf1a556e60 | 212 | if ((FQD - STEPD * 100) >= f1) { |
jp1nom | 0:5cdf1a556e60 | 213 | FQD = FQD - STEPD * 100; |
jp1nom | 0:5cdf1a556e60 | 214 | FQ = FQ - STEP * 10000; |
jp1nom | 0:5cdf1a556e60 | 215 | } |
jp1nom | 0:5cdf1a556e60 | 216 | } |
jp1nom | 0:5cdf1a556e60 | 217 | // } |
jp1nom | 0:5cdf1a556e60 | 218 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 219 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 220 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 221 | wait(wt); |
jp1nom | 0:5cdf1a556e60 | 222 | } |
jp1nom | 0:5cdf1a556e60 | 223 | |
jp1nom | 0:5cdf1a556e60 | 224 | void DDS_T(void) { |
jp1nom | 0:5cdf1a556e60 | 225 | |
jp1nom | 0:5cdf1a556e60 | 226 | deley.detach(); |
jp1nom | 0:5cdf1a556e60 | 227 | |
jp1nom | 0:5cdf1a556e60 | 228 | if (FQD > f1 && FQD < f2) { |
jp1nom | 0:5cdf1a556e60 | 229 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 230 | lcd.locate( 14, 0 ); |
jp1nom | 0:5cdf1a556e60 | 231 | lcd.printf( "T" ); |
jp1nom | 0:5cdf1a556e60 | 232 | |
jp1nom | 0:5cdf1a556e60 | 233 | FQX = FQ; |
jp1nom | 0:5cdf1a556e60 | 234 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 235 | LED = 1; |
jp1nom | 0:5cdf1a556e60 | 236 | PTT_OUT = 1; |
jp1nom | 0:5cdf1a556e60 | 237 | while( PTT_ON == 0) {} |
jp1nom | 0:5cdf1a556e60 | 238 | PTT_OUT = 0; |
jp1nom | 0:5cdf1a556e60 | 239 | LED = 0; |
jp1nom | 0:5cdf1a556e60 | 240 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 241 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 242 | }else{ |
jp1nom | 0:5cdf1a556e60 | 243 | LED=1; |
jp1nom | 0:5cdf1a556e60 | 244 | wait(0.2); |
jp1nom | 0:5cdf1a556e60 | 245 | LED=0; |
jp1nom | 0:5cdf1a556e60 | 246 | wait(0.2); |
jp1nom | 0:5cdf1a556e60 | 247 | } |
jp1nom | 0:5cdf1a556e60 | 248 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 249 | lcd.locate( 14,0 ); |
jp1nom | 0:5cdf1a556e60 | 250 | lcd.printf( "R" ); |
jp1nom | 0:5cdf1a556e60 | 251 | } |
jp1nom | 0:5cdf1a556e60 | 252 | |
jp1nom | 0:5cdf1a556e60 | 253 | void GET_LCD_DATA(void) { |
jp1nom | 0:5cdf1a556e60 | 254 | |
jp1nom | 0:5cdf1a556e60 | 255 | char f[9]; |
jp1nom | 0:5cdf1a556e60 | 256 | |
jp1nom | 0:5cdf1a556e60 | 257 | sprintf(f,"%8.5lf",FQD / 1000000); |
jp1nom | 0:5cdf1a556e60 | 258 | lcd.locate( 0,0 ); |
jp1nom | 0:5cdf1a556e60 | 259 | lcd.printf( f ); |
jp1nom | 0:5cdf1a556e60 | 260 | if (FQD >= f1_CW && FQD < f2_CW) { |
jp1nom | 0:5cdf1a556e60 | 261 | lcd.locate( 5,1 ); |
jp1nom | 0:5cdf1a556e60 | 262 | lcd.printf("CW "); |
jp1nom | 0:5cdf1a556e60 | 263 | }else{ |
jp1nom | 0:5cdf1a556e60 | 264 | if(FQD >= f2_CW && FQD < f2 ) { |
jp1nom | 0:5cdf1a556e60 | 265 | lcd.locate( 5,1 ); |
jp1nom | 0:5cdf1a556e60 | 266 | lcd.printf("Phone"); |
jp1nom | 0:5cdf1a556e60 | 267 | }else{ |
jp1nom | 0:5cdf1a556e60 | 268 | lcd.locate( 5,1 ); |
jp1nom | 0:5cdf1a556e60 | 269 | lcd.printf("none "); |
jp1nom | 0:5cdf1a556e60 | 270 | } |
jp1nom | 0:5cdf1a556e60 | 271 | } |
jp1nom | 0:5cdf1a556e60 | 272 | } |
jp1nom | 0:5cdf1a556e60 | 273 | |
jp1nom | 0:5cdf1a556e60 | 274 | void STEPS( void ) { |
jp1nom | 0:5cdf1a556e60 | 275 | if (s==1) { |
jp1nom | 0:5cdf1a556e60 | 276 | s = 0; |
jp1nom | 0:5cdf1a556e60 | 277 | lcd.locate(13,1); |
jp1nom | 0:5cdf1a556e60 | 278 | lcd.printf("0"); |
jp1nom | 0:5cdf1a556e60 | 279 | }else{ |
jp1nom | 0:5cdf1a556e60 | 280 | s = 1; |
jp1nom | 0:5cdf1a556e60 | 281 | lcd.locate(13,1); |
jp1nom | 0:5cdf1a556e60 | 282 | lcd.printf("K"); |
jp1nom | 0:5cdf1a556e60 | 283 | } |
jp1nom | 0:5cdf1a556e60 | 284 | wait(0.3); |
jp1nom | 0:5cdf1a556e60 | 285 | } |
jp1nom | 0:5cdf1a556e60 | 286 | |
jp1nom | 0:5cdf1a556e60 | 287 | void QSY(void) { |
jp1nom | 0:5cdf1a556e60 | 288 | switch (BAND) { |
jp1nom | 0:5cdf1a556e60 | 289 | case 7: |
jp1nom | 0:5cdf1a556e60 | 290 | BAND = 10; |
jp1nom | 0:5cdf1a556e60 | 291 | FQD_7 = FQD; |
jp1nom | 0:5cdf1a556e60 | 292 | FQD = FQD_10; |
jp1nom | 0:5cdf1a556e60 | 293 | FQ_7 = FQ; |
jp1nom | 0:5cdf1a556e60 | 294 | FQ = FQ_10; |
jp1nom | 0:5cdf1a556e60 | 295 | f1 = 10100000; |
jp1nom | 0:5cdf1a556e60 | 296 | f2 = 10150000; |
jp1nom | 0:5cdf1a556e60 | 297 | f1_CW = 10100000; |
jp1nom | 0:5cdf1a556e60 | 298 | f2_CW = 10150000; |
jp1nom | 0:5cdf1a556e60 | 299 | break; |
jp1nom | 0:5cdf1a556e60 | 300 | |
jp1nom | 0:5cdf1a556e60 | 301 | case 10: |
jp1nom | 0:5cdf1a556e60 | 302 | BAND = 18; |
jp1nom | 0:5cdf1a556e60 | 303 | FQD_10 = FQD; |
jp1nom | 0:5cdf1a556e60 | 304 | FQD = FQD_18; |
jp1nom | 0:5cdf1a556e60 | 305 | FQ_10 = FQ; |
jp1nom | 0:5cdf1a556e60 | 306 | FQ = FQ_18; |
jp1nom | 0:5cdf1a556e60 | 307 | f1 = 1810000; |
jp1nom | 0:5cdf1a556e60 | 308 | f2 = 1825000; |
jp1nom | 0:5cdf1a556e60 | 309 | f1_CW = 1810000; |
jp1nom | 0:5cdf1a556e60 | 310 | f2_CW = 1825000; |
jp1nom | 0:5cdf1a556e60 | 311 | break; |
jp1nom | 0:5cdf1a556e60 | 312 | |
jp1nom | 0:5cdf1a556e60 | 313 | case 18: |
jp1nom | 0:5cdf1a556e60 | 314 | BAND = 19; |
jp1nom | 0:5cdf1a556e60 | 315 | FQD_18 = FQD; |
jp1nom | 0:5cdf1a556e60 | 316 | FQD = FQD_19; |
jp1nom | 0:5cdf1a556e60 | 317 | FQ_18 = FQ; |
jp1nom | 0:5cdf1a556e60 | 318 | FQ = FQ_19; |
jp1nom | 0:5cdf1a556e60 | 319 | f1 = 1907500; |
jp1nom | 0:5cdf1a556e60 | 320 | f2 = 1912500; |
jp1nom | 0:5cdf1a556e60 | 321 | f1_CW = 1907500; |
jp1nom | 0:5cdf1a556e60 | 322 | f2_CW = 1912500; |
jp1nom | 0:5cdf1a556e60 | 323 | break; |
jp1nom | 0:5cdf1a556e60 | 324 | |
jp1nom | 0:5cdf1a556e60 | 325 | case 19: |
jp1nom | 0:5cdf1a556e60 | 326 | BAND = 351; |
jp1nom | 0:5cdf1a556e60 | 327 | FQD_19 = FQD; |
jp1nom | 0:5cdf1a556e60 | 328 | FQD = FQD_351; |
jp1nom | 0:5cdf1a556e60 | 329 | FQ_19 = FQ; |
jp1nom | 0:5cdf1a556e60 | 330 | FQ = FQ_351; |
jp1nom | 0:5cdf1a556e60 | 331 | f1 = 3500000; |
jp1nom | 0:5cdf1a556e60 | 332 | f2 = 3575000; |
jp1nom | 0:5cdf1a556e60 | 333 | f1_CW = 3500000; |
jp1nom | 0:5cdf1a556e60 | 334 | f2_CW = 3535000; |
jp1nom | 0:5cdf1a556e60 | 335 | break; |
jp1nom | 0:5cdf1a556e60 | 336 | |
jp1nom | 0:5cdf1a556e60 | 337 | case 351: |
jp1nom | 0:5cdf1a556e60 | 338 | BAND = 352; |
jp1nom | 0:5cdf1a556e60 | 339 | FQD_351 = FQD; |
jp1nom | 0:5cdf1a556e60 | 340 | FQD = FQD_352; |
jp1nom | 0:5cdf1a556e60 | 341 | FQ_351 = FQ; |
jp1nom | 0:5cdf1a556e60 | 342 | FQ = FQ_352; |
jp1nom | 0:5cdf1a556e60 | 343 | f1 = 3599000; |
jp1nom | 0:5cdf1a556e60 | 344 | f2 = 3612000; |
jp1nom | 0:5cdf1a556e60 | 345 | f1_CW = 3599000; |
jp1nom | 0:5cdf1a556e60 | 346 | f2_CW = 3599000; |
jp1nom | 0:5cdf1a556e60 | 347 | break; |
jp1nom | 0:5cdf1a556e60 | 348 | |
jp1nom | 0:5cdf1a556e60 | 349 | case 352: |
jp1nom | 0:5cdf1a556e60 | 350 | BAND = 353; |
jp1nom | 0:5cdf1a556e60 | 351 | FQD_352 = FQD; |
jp1nom | 0:5cdf1a556e60 | 352 | FQD = FQD_353; |
jp1nom | 0:5cdf1a556e60 | 353 | FQ_352 = FQ; |
jp1nom | 0:5cdf1a556e60 | 354 | FQ = FQ_353; |
jp1nom | 0:5cdf1a556e60 | 355 | f1 = 3680000; |
jp1nom | 0:5cdf1a556e60 | 356 | f2 = 3687000; |
jp1nom | 0:5cdf1a556e60 | 357 | f1_CW = 3680000; |
jp1nom | 0:5cdf1a556e60 | 358 | f2_CW = 3680000; |
jp1nom | 0:5cdf1a556e60 | 359 | break; |
jp1nom | 0:5cdf1a556e60 | 360 | |
jp1nom | 0:5cdf1a556e60 | 361 | case 353: |
jp1nom | 0:5cdf1a556e60 | 362 | BAND = 381; |
jp1nom | 0:5cdf1a556e60 | 363 | FQD_353 = FQD; |
jp1nom | 0:5cdf1a556e60 | 364 | FQD = FQD_381; |
jp1nom | 0:5cdf1a556e60 | 365 | FQ_353 = FQ; |
jp1nom | 0:5cdf1a556e60 | 366 | FQ = FQ_381; |
jp1nom | 0:5cdf1a556e60 | 367 | f1 = 3702000; |
jp1nom | 0:5cdf1a556e60 | 368 | f2 = 3716000; |
jp1nom | 0:5cdf1a556e60 | 369 | f1_CW = 3702000; |
jp1nom | 0:5cdf1a556e60 | 370 | f2_CW = 3702000; |
jp1nom | 0:5cdf1a556e60 | 371 | break; |
jp1nom | 0:5cdf1a556e60 | 372 | |
jp1nom | 0:5cdf1a556e60 | 373 | case 381: |
jp1nom | 0:5cdf1a556e60 | 374 | BAND = 382; |
jp1nom | 0:5cdf1a556e60 | 375 | FQD_381 = FQD; |
jp1nom | 0:5cdf1a556e60 | 376 | FQD = FQD_382; |
jp1nom | 0:5cdf1a556e60 | 377 | FQ_381 = FQ; |
jp1nom | 0:5cdf1a556e60 | 378 | FQ = FQ_382; |
jp1nom | 0:5cdf1a556e60 | 379 | f1 = 3745000; |
jp1nom | 0:5cdf1a556e60 | 380 | f2 = 3770000; |
jp1nom | 0:5cdf1a556e60 | 381 | f1_CW = 3745000; |
jp1nom | 0:5cdf1a556e60 | 382 | f2_CW = 3745000; |
jp1nom | 0:5cdf1a556e60 | 383 | break; |
jp1nom | 0:5cdf1a556e60 | 384 | |
jp1nom | 0:5cdf1a556e60 | 385 | case 382: |
jp1nom | 0:5cdf1a556e60 | 386 | BAND = 383; |
jp1nom | 0:5cdf1a556e60 | 387 | FQD_382 = FQD; |
jp1nom | 0:5cdf1a556e60 | 388 | FQD = FQD_383; |
jp1nom | 0:5cdf1a556e60 | 389 | FQ_382 = FQ; |
jp1nom | 0:5cdf1a556e60 | 390 | FQ = FQ_383; |
jp1nom | 0:5cdf1a556e60 | 391 | f1 = 3791000; |
jp1nom | 0:5cdf1a556e60 | 392 | f2 = 3805000; |
jp1nom | 0:5cdf1a556e60 | 393 | f1_CW = 3791000; |
jp1nom | 0:5cdf1a556e60 | 394 | f2_CW = 3791000; |
jp1nom | 0:5cdf1a556e60 | 395 | break; |
jp1nom | 0:5cdf1a556e60 | 396 | |
jp1nom | 0:5cdf1a556e60 | 397 | case 383: |
jp1nom | 0:5cdf1a556e60 | 398 | BAND = 4; |
jp1nom | 0:5cdf1a556e60 | 399 | FQD_383 = FQD; |
jp1nom | 0:5cdf1a556e60 | 400 | FQD = FQD_4; |
jp1nom | 0:5cdf1a556e60 | 401 | FQ_383 = FQ; |
jp1nom | 0:5cdf1a556e60 | 402 | FQ = FQ_4; |
jp1nom | 0:5cdf1a556e60 | 403 | f1 = 4629999; |
jp1nom | 0:5cdf1a556e60 | 404 | f2 = 4630001; |
jp1nom | 0:5cdf1a556e60 | 405 | f1_CW = 4630000; |
jp1nom | 0:5cdf1a556e60 | 406 | f2_CW = 4630001; |
jp1nom | 0:5cdf1a556e60 | 407 | break; |
jp1nom | 0:5cdf1a556e60 | 408 | |
jp1nom | 0:5cdf1a556e60 | 409 | case 4: |
jp1nom | 0:5cdf1a556e60 | 410 | BAND = 7; |
jp1nom | 0:5cdf1a556e60 | 411 | FQD_4 = FQD; |
jp1nom | 0:5cdf1a556e60 | 412 | FQD = FQD_7; |
jp1nom | 0:5cdf1a556e60 | 413 | FQ_4 = FQ; |
jp1nom | 0:5cdf1a556e60 | 414 | FQ = FQ_7; |
jp1nom | 0:5cdf1a556e60 | 415 | f1 = 7000000; |
jp1nom | 0:5cdf1a556e60 | 416 | f2 = 7200000; |
jp1nom | 0:5cdf1a556e60 | 417 | f1_CW = 7000000; |
jp1nom | 0:5cdf1a556e60 | 418 | f2_CW = 7045000; |
jp1nom | 0:5cdf1a556e60 | 419 | break; |
jp1nom | 0:5cdf1a556e60 | 420 | |
jp1nom | 0:5cdf1a556e60 | 421 | default: |
jp1nom | 0:5cdf1a556e60 | 422 | BAND = 7; |
jp1nom | 0:5cdf1a556e60 | 423 | FQD = FQD_7; |
jp1nom | 0:5cdf1a556e60 | 424 | FQ = FQ_7; |
jp1nom | 0:5cdf1a556e60 | 425 | break; |
jp1nom | 0:5cdf1a556e60 | 426 | } |
jp1nom | 0:5cdf1a556e60 | 427 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 428 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 429 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 430 | wait(0.3); |
jp1nom | 0:5cdf1a556e60 | 431 | } |
jp1nom | 0:5cdf1a556e60 | 432 | |
jp1nom | 0:5cdf1a556e60 | 433 | void STEPSS( void ) { |
jp1nom | 0:5cdf1a556e60 | 434 | if (s==0) { |
jp1nom | 0:5cdf1a556e60 | 435 | lcd.locate(13,1); |
jp1nom | 0:5cdf1a556e60 | 436 | lcd.printf("0"); |
jp1nom | 0:5cdf1a556e60 | 437 | }else{ |
jp1nom | 0:5cdf1a556e60 | 438 | lcd.locate(13,1); |
jp1nom | 0:5cdf1a556e60 | 439 | lcd.printf("K"); |
jp1nom | 0:5cdf1a556e60 | 440 | } |
jp1nom | 0:5cdf1a556e60 | 441 | // wait(0.3); |
jp1nom | 0:5cdf1a556e60 | 442 | } |
jp1nom | 0:5cdf1a556e60 | 443 | |
jp1nom | 0:5cdf1a556e60 | 444 | void JOG( void ) { |
jp1nom | 0:5cdf1a556e60 | 445 | |
jp1nom | 0:5cdf1a556e60 | 446 | int jog; |
jp1nom | 0:5cdf1a556e60 | 447 | deley.detach(); |
jp1nom | 0:5cdf1a556e60 | 448 | |
jp1nom | 0:5cdf1a556e60 | 449 | jog = JOG_2 * 4 +JOG_3 * 2 + JOG_4 * 1; |
jp1nom | 0:5cdf1a556e60 | 450 | |
jp1nom | 0:5cdf1a556e60 | 451 | switch( jog ) { |
jp1nom | 0:5cdf1a556e60 | 452 | |
jp1nom | 0:5cdf1a556e60 | 453 | case 2: |
jp1nom | 0:5cdf1a556e60 | 454 | wt = 0.3; |
jp1nom | 0:5cdf1a556e60 | 455 | s = 0; |
jp1nom | 0:5cdf1a556e60 | 456 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 457 | lcd.printf("> "); |
jp1nom | 0:5cdf1a556e60 | 458 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 459 | DDS_U(); |
jp1nom | 0:5cdf1a556e60 | 460 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 461 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 462 | break; |
jp1nom | 0:5cdf1a556e60 | 463 | |
jp1nom | 0:5cdf1a556e60 | 464 | case 6: |
jp1nom | 0:5cdf1a556e60 | 465 | wt = 0.05; |
jp1nom | 0:5cdf1a556e60 | 466 | s = 0; |
jp1nom | 0:5cdf1a556e60 | 467 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 468 | lcd.printf(">>"); |
jp1nom | 0:5cdf1a556e60 | 469 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 470 | DDS_U(); |
jp1nom | 0:5cdf1a556e60 | 471 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 472 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 473 | break; |
jp1nom | 0:5cdf1a556e60 | 474 | |
jp1nom | 0:5cdf1a556e60 | 475 | case 4: |
jp1nom | 0:5cdf1a556e60 | 476 | wt = 0.3; |
jp1nom | 0:5cdf1a556e60 | 477 | s =1; |
jp1nom | 0:5cdf1a556e60 | 478 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 479 | lcd.printf("> "); |
jp1nom | 0:5cdf1a556e60 | 480 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 481 | DDS_U(); |
jp1nom | 0:5cdf1a556e60 | 482 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 483 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 484 | break; |
jp1nom | 0:5cdf1a556e60 | 485 | |
jp1nom | 0:5cdf1a556e60 | 486 | case 0: |
jp1nom | 0:5cdf1a556e60 | 487 | wt = 0.05; |
jp1nom | 0:5cdf1a556e60 | 488 | s =1; |
jp1nom | 0:5cdf1a556e60 | 489 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 490 | lcd.printf(">>"); |
jp1nom | 0:5cdf1a556e60 | 491 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 492 | DDS_U(); |
jp1nom | 0:5cdf1a556e60 | 493 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 494 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 495 | break; |
jp1nom | 0:5cdf1a556e60 | 496 | |
jp1nom | 0:5cdf1a556e60 | 497 | |
jp1nom | 0:5cdf1a556e60 | 498 | case 3: |
jp1nom | 0:5cdf1a556e60 | 499 | wt = 0.3; |
jp1nom | 0:5cdf1a556e60 | 500 | s = 0; |
jp1nom | 0:5cdf1a556e60 | 501 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 502 | lcd.printf(" <"); |
jp1nom | 0:5cdf1a556e60 | 503 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 504 | DDS_D(); |
jp1nom | 0:5cdf1a556e60 | 505 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 506 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 507 | break; |
jp1nom | 0:5cdf1a556e60 | 508 | |
jp1nom | 0:5cdf1a556e60 | 509 | case 7: |
jp1nom | 0:5cdf1a556e60 | 510 | wt = 0.05; |
jp1nom | 0:5cdf1a556e60 | 511 | s = 0; |
jp1nom | 0:5cdf1a556e60 | 512 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 513 | lcd.printf("<<"); |
jp1nom | 0:5cdf1a556e60 | 514 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 515 | DDS_D(); |
jp1nom | 0:5cdf1a556e60 | 516 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 517 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 518 | break; |
jp1nom | 0:5cdf1a556e60 | 519 | |
jp1nom | 0:5cdf1a556e60 | 520 | case 5: |
jp1nom | 0:5cdf1a556e60 | 521 | wt = 0.3; |
jp1nom | 0:5cdf1a556e60 | 522 | s =1; |
jp1nom | 0:5cdf1a556e60 | 523 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 524 | lcd.printf(" <"); |
jp1nom | 0:5cdf1a556e60 | 525 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 526 | DDS_D(); |
jp1nom | 0:5cdf1a556e60 | 527 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 528 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 529 | break; |
jp1nom | 0:5cdf1a556e60 | 530 | |
jp1nom | 0:5cdf1a556e60 | 531 | case 1: |
jp1nom | 0:5cdf1a556e60 | 532 | wt = 0.05; |
jp1nom | 0:5cdf1a556e60 | 533 | s =1; |
jp1nom | 0:5cdf1a556e60 | 534 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 535 | lcd.printf("<<"); |
jp1nom | 0:5cdf1a556e60 | 536 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 537 | DDS_D(); |
jp1nom | 0:5cdf1a556e60 | 538 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 539 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 540 | break; |
jp1nom | 0:5cdf1a556e60 | 541 | |
jp1nom | 0:5cdf1a556e60 | 542 | |
jp1nom | 0:5cdf1a556e60 | 543 | default: |
jp1nom | 0:5cdf1a556e60 | 544 | wt = 0.05; |
jp1nom | 0:5cdf1a556e60 | 545 | s =1; |
jp1nom | 0:5cdf1a556e60 | 546 | STEPSS(); |
jp1nom | 0:5cdf1a556e60 | 547 | DDS_D(); |
jp1nom | 0:5cdf1a556e60 | 548 | lcd.locate(12,0); |
jp1nom | 0:5cdf1a556e60 | 549 | lcd.printf(" "); |
jp1nom | 0:5cdf1a556e60 | 550 | break; |
jp1nom | 0:5cdf1a556e60 | 551 | } |
jp1nom | 0:5cdf1a556e60 | 552 | } |
jp1nom | 0:5cdf1a556e60 | 553 | |
jp1nom | 0:5cdf1a556e60 | 554 | void DDS_CW(void) { |
jp1nom | 0:5cdf1a556e60 | 555 | if (FQD > f1 && FQD < f2) { |
jp1nom | 0:5cdf1a556e60 | 556 | deley.detach(); |
jp1nom | 0:5cdf1a556e60 | 557 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 558 | lcd.locate( 14, 0 ); |
jp1nom | 0:5cdf1a556e60 | 559 | lcd.printf( "T" ); |
jp1nom | 0:5cdf1a556e60 | 560 | |
jp1nom | 0:5cdf1a556e60 | 561 | FQX = FQ; |
jp1nom | 0:5cdf1a556e60 | 562 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 563 | LED = 1; |
jp1nom | 0:5cdf1a556e60 | 564 | PTT_OUT = 1; |
jp1nom | 0:5cdf1a556e60 | 565 | KEY = 1; |
jp1nom | 0:5cdf1a556e60 | 566 | if (BAR==0) { |
jp1nom | 0:5cdf1a556e60 | 567 | wait(3.5*del); |
jp1nom | 0:5cdf1a556e60 | 568 | KEY = 0; |
jp1nom | 0:5cdf1a556e60 | 569 | wait(del); |
jp1nom | 0:5cdf1a556e60 | 570 | }else{ |
jp1nom | 0:5cdf1a556e60 | 571 | if (DOT==0) { |
jp1nom | 0:5cdf1a556e60 | 572 | wait(del); |
jp1nom | 0:5cdf1a556e60 | 573 | KEY = 0; |
jp1nom | 0:5cdf1a556e60 | 574 | wait(del); |
jp1nom | 0:5cdf1a556e60 | 575 | } |
jp1nom | 0:5cdf1a556e60 | 576 | } |
jp1nom | 0:5cdf1a556e60 | 577 | deley.attach(&PTT_OFF,4*del); |
jp1nom | 0:5cdf1a556e60 | 578 | }else{ |
jp1nom | 0:5cdf1a556e60 | 579 | LED=1; |
jp1nom | 0:5cdf1a556e60 | 580 | wait(0.2); |
jp1nom | 0:5cdf1a556e60 | 581 | LED=0; |
jp1nom | 0:5cdf1a556e60 | 582 | wait(0.2); |
jp1nom | 0:5cdf1a556e60 | 583 | } |
jp1nom | 0:5cdf1a556e60 | 584 | |
jp1nom | 0:5cdf1a556e60 | 585 | } |
jp1nom | 0:5cdf1a556e60 | 586 | |
jp1nom | 0:5cdf1a556e60 | 587 | void PTT_OFF(void) { |
jp1nom | 0:5cdf1a556e60 | 588 | PTT_OUT = 0; |
jp1nom | 0:5cdf1a556e60 | 589 | LED = 0; |
jp1nom | 0:5cdf1a556e60 | 590 | KEY = 0; |
jp1nom | 0:5cdf1a556e60 | 591 | FQX = FQ + IF; |
jp1nom | 0:5cdf1a556e60 | 592 | DDS(); |
jp1nom | 0:5cdf1a556e60 | 593 | GET_LCD_DATA(); |
jp1nom | 0:5cdf1a556e60 | 594 | lcd.locate( 14,0 ); |
jp1nom | 0:5cdf1a556e60 | 595 | lcd.printf( "R" ); |
jp1nom | 0:5cdf1a556e60 | 596 | } |