HTEB1
User manual
LCD_DATA_CTRL = LCD_IN; SET_LCD_EN;
status = LCD_DATA_PORT; CLEAR_LCD_EN; LCD_DATA_CTRL = LCD_OUT;
return status;
} |
|
void LCDInit(void) | // inits the LCD |
{ |
|
u16 cnt=0; |
|
CLEAR_LCD_RS; |
|
CLEAR_LCD_RW; |
|
CLEAR_LCD_EN; |
|
PCR7 = 0x30; | // Set RS+RW = Output |
PCR2 = 0x01; | // Set EN = Output |
LCD_DATA_CTRL = LCD_OUT; | // Set DDR to Output |
// required 3 times pls. ref. data sheet | |
LCDWriteCmd(0x38); // | Lines, 5x7 character font |
| |
LCDWriteCmd(0x38); // | Lines, 5x7 character font |
| |
LCDWriteCmd(0x38); // | Lines, 5x7 character font |
| |
LCDWriteCmd(0x38); // | Lines, 5x7 character font |
| |
LCDWriteCmd(0x0c); // DisplayOn, | CursorOff, BlinkingOff |
LCDReadStatus(); |
|
LCDWriteCmd(0x06); // Enter Mode, AutoIncrement | |
LCDReadStatus(); |
|
LCDWriteCmd(0x14); // MoveCursor | right |
LCDReadStatus(); |
|
LCDWriteCmd(0x80); // Set DD RAM | Address = 0x00 |
LCDReadStatus(); |
|
}
// writesomedata from 1st position in #line (0/1) void LCDWriteLine(u8 line, u8 *data)
{ |
|
LCDWriteCmd(0x80 + line*0x40); | // select line |
while (*data) |
|
{ |
|
LCDWriteData(*data); |
|
data++; |
|
} |
|
} |
|
#define ADDR_A (*(volatile unsigned short *)(0xFFB0)) #define ADDR_B (*(volatile unsigned short *)(0xFFB2))
u16 Read_AD(u8 channel)
{ |
|
u8 dummy; |
|
u16 adval; |
|
dummy = ADCSR; | // dummy read |
ADCSR = 0x00; | // reset A/D |
ADCSR = (0x20 + (channel &0x01)); | // start A/D, channel 0 or 1 |
| while (!(ADCSR & 0x80)); | // wait conversion end |
| |
| if (channel & 0x01) | adval = ADDR_B; | // read | |
| else adval = ADDR_A; |
|
| |
| return adval>>6; |
|
| |
} |
|
|
|
|
u8 | Line0[] | = " A/D#0=P1=0x | \0"; |
|
u8 | Line1[] | = " A/D#1=P2=0x | \0"; |
|
// convert int to
void ShowHexValue(u16 code, u8 line)
Issue 0.2 | Page 42 | 07/2002 |