BayEOS-Arduino  1.8.0_0.0.4
HW_PIC32MX340F512H.h
1 // *** Hardwarespecific functions ***
3 {
4 }
5 
6 void UTFT::LCD_Writ_Bus(char VH,char VL, byte mode)
7 {
8  switch (mode)
9  {
10  case 1:
11  if (display_serial_mode==SERIAL_4PIN)
12  {
13  if (VH==1)
14  sbi(P_SDA, B_SDA);
15  else
16  cbi(P_SDA, B_SDA);
17  pulse_low(P_SCL, B_SCL);
18  }
19  else
20  {
21  if (VH==1)
22  sbi(P_RS, B_RS);
23  else
24  cbi(P_RS, B_RS);
25  }
26 
27  if (VL & 0x80)
28  sbi(P_SDA, B_SDA);
29  else
30  cbi(P_SDA, B_SDA);
31  pulse_low(P_SCL, B_SCL);
32  if (VL & 0x40)
33  sbi(P_SDA, B_SDA);
34  else
35  cbi(P_SDA, B_SDA);
36  pulse_low(P_SCL, B_SCL);
37  if (VL & 0x20)
38  sbi(P_SDA, B_SDA);
39  else
40  cbi(P_SDA, B_SDA);
41  pulse_low(P_SCL, B_SCL);
42  if (VL & 0x10)
43  sbi(P_SDA, B_SDA);
44  else
45  cbi(P_SDA, B_SDA);
46  pulse_low(P_SCL, B_SCL);
47  if (VL & 0x08)
48  sbi(P_SDA, B_SDA);
49  else
50  cbi(P_SDA, B_SDA);
51  pulse_low(P_SCL, B_SCL);
52  if (VL & 0x04)
53  sbi(P_SDA, B_SDA);
54  else
55  cbi(P_SDA, B_SDA);
56  pulse_low(P_SCL, B_SCL);
57  if (VL & 0x02)
58  sbi(P_SDA, B_SDA);
59  else
60  cbi(P_SDA, B_SDA);
61  pulse_low(P_SCL, B_SCL);
62  if (VL & 0x01)
63  sbi(P_SDA, B_SDA);
64  else
65  cbi(P_SDA, B_SDA);
66  pulse_low(P_SCL, B_SCL);
67  break;
68  case 8:
69  LATECLR = 0xFF;
70  LATESET = VH;
71  *P_WR &= ~B_WR;
72  *P_WR |= B_WR;
73  LATECLR = 0xFF;
74  LATESET = VL;
75  *P_WR &= ~B_WR;
76  *P_WR |= B_WR;
77  break;
78  case 16:
79  LATDCLR = 0xFF;
80  LATDSET = VL & 0xFF;
81  LATECLR = 0xFF;
82  LATESET = VH & 0xFF;
83  *P_WR &= ~B_WR;
84  *P_WR |= B_WR;
85  break;
86  case LATCHED_16:
87  asm("nop"); // Mode is unsupported
88  break;
89  }
90 }
91 
92 void UTFT::_set_direction_registers(byte mode)
93 {
94  if (mode!=LATCHED_16)
95  {
96  TRISE=0;
97  if (mode==16)
98  TRISD=0;
99  }
100  else
101  {
102  asm("nop"); // Mode is unsupported
103  }
104 }
105 
106 void UTFT::_fast_fill_16(int ch, int cl, long pix)
107 {
108  long blocks;
109 
110  LATDCLR = 0xFF;
111  LATDSET = cl & 0xFF;
112  LATECLR = 0xFF;
113  LATESET = ch & 0xFF;
114 
115  blocks = pix/16;
116  for (int i=0; i<blocks; i++)
117  {
118  *P_WR &= ~B_WR; *P_WR |= B_WR;
119  *P_WR &= ~B_WR; *P_WR |= B_WR;
120  *P_WR &= ~B_WR; *P_WR |= B_WR;
121  *P_WR &= ~B_WR; *P_WR |= B_WR;
122  *P_WR &= ~B_WR; *P_WR |= B_WR;
123  *P_WR &= ~B_WR; *P_WR |= B_WR;
124  *P_WR &= ~B_WR; *P_WR |= B_WR;
125  *P_WR &= ~B_WR; *P_WR |= B_WR;
126  *P_WR &= ~B_WR; *P_WR |= B_WR;
127  *P_WR &= ~B_WR; *P_WR |= B_WR;
128  *P_WR &= ~B_WR; *P_WR |= B_WR;
129  *P_WR &= ~B_WR; *P_WR |= B_WR;
130  *P_WR &= ~B_WR; *P_WR |= B_WR;
131  *P_WR &= ~B_WR; *P_WR |= B_WR;
132  *P_WR &= ~B_WR; *P_WR |= B_WR;
133  *P_WR &= ~B_WR; *P_WR |= B_WR;
134  }
135  if ((pix % 16) != 0)
136  for (int i=0; i<(pix % 16)+1; i++)
137  {
138  *P_WR &= ~B_WR; *P_WR |= B_WR;
139  }
140 }
141 
142 void UTFT::_fast_fill_8(int ch, long pix)
143 {
144  long blocks;
145 
146  LATECLR = 0xFF;
147  LATESET = ch;
148 
149  blocks = pix/16;
150  for (int i=0; i<blocks; i++)
151  {
152  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
153  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
154  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
155  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
156  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
157  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
158  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
159  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
160  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
161  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
162  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
163  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
164  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
165  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
166  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
167  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
168  }
169  if ((pix % 16) != 0)
170  for (int i=0; i<(pix % 16)+1; i++)
171  {
172  *P_WR &= ~B_WR; *P_WR |= B_WR; *P_WR &= ~B_WR; *P_WR |= B_WR;
173  }
174 }
void _hw_special_init()
Definition: HW_CC3200.h:2