/programy/C/avr/LCD/Makefile |
---|
0,0 → 1,55 |
# makefile, written by kaklik |
MCU=atmega128 |
CC=avr-gcc |
OBJCOPY=avr-objcopy |
# optimize for size: |
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues |
#------------------- |
all: lcd_hd44780_test.hex |
#------------------- |
lcd_hd44780_test.hex : lcd_hd44780_test.out |
$(OBJCOPY) -R .eeprom -O ihex lcd_hd44780_test.out lcd_hd44780_test.hex |
lcd_hd44780_test.out : lcd_hd44780_test.o |
$(CC) $(CFLAGS) -o lcd_hd44780_test.out -Wl,-Map,lcd_hd44780_test.map lcd_hd44780_test.o |
lcd_hd44780_test.o : lcd_hd44780_test.c |
$(CC) $(CFLAGS) -Os -c lcd_hd44780_test.c |
#------------------ |
load: $(FILE).hex |
./prg_load_uc $(FILE).hex |
# here is a pre-compiled version in case you have trouble with |
# your development environment |
load_pre: $(FILE).hex |
./prg_load_uc $(FILE)_pre.hex |
# |
loaduisp: $(FILE).hex |
./prg_load_uc -u $(FILE).hex |
# here is a pre-compiled version in case you have trouble with |
# your development environment |
load_preuisp: $(FILE)_pre.hex |
./prg_load_uc -u avrm8ledtest.hex |
#------------------- |
# fuse byte settings: |
# Atmel AVR ATmega8 |
# Fuse Low Byte = 0xe1 (1MHz internal), 0xe3 (4MHz internal), 0xe4 (8MHz internal) |
# Fuse High Byte = 0xd9 |
# Factory default is 0xe1 for low byte and 0xd9 for high byte |
# Check this with make rdfuses |
rdfuses: |
./prg_fusebit_uc -r |
# use internal RC oscillator 1 Mhz |
wrfuse1mhz: |
./prg_fusebit_uc -w 1 |
# use internal RC oscillator 4 Mhz |
wrfuse4mhz: |
./prg_fusebit_uc -w 4 |
# use external 3-8 Mhz crystal |
# Warning: you can not reset this to intenal unless you connect a crystal!! |
wrfusecrystal: |
@echo "Warning: The external crystal setting can not be changed back without a working crystal" |
@echo " You have 3 seconds to abort this with crtl-c" |
@sleep 3 |
./prg_fusebit_uc -w 0 |
#------------------- |
clean: |
rm -f *.o *.map *.out *.hex |
#------------------- |
/programy/C/avr/LCD/lcd_hd44780.h |
---|
0,0 → 1,602 |
/* --------------------------------------------------------------------------- |
* AVR_MLIB - HD 44780 LCD Display Driver |
* www.mlab.cz miho 2008 |
* --------------------------------------------------------------------------- |
* LCD display driver for standard Hitachi 1/2/4 line character LCD modules |
* for AVR processors. It uses 4 or 8 bit interface without readback. |
* In the Examples section there is a demo application for this library. |
* --------------------------------------------------------------------------- |
* 00.00 2008/03/28 First Version |
* --------------------------------------------------------------------------- |
*/ |
// What should be set and done before here |
// --------------------------------------- |
// |
// #include <stdio.h> // If you want to use printf, ... |
// |
// #define LCD_DATA B // 4 or 8 bits field (lsb bit of the port) |
// #define LCD_DATA_BIT 4 |
// |
// #define LCD_RS D // Register Select (port and bit) |
// #define LCD_RS_BIT 4 |
// |
// #define LCD_E D // Enable (port and bit) |
// #define LCD_E_BIT 3 |
// |
// |
// // LCD Display Parameters |
// #define LCD_INTERFACE_BITS 4 // 4 or 8 bit interface |
// #define LCD_LINES 1 // 1 or 2 or 4 lines |
// #define LCD_CHARS 20 // usualy 16 or 20, important for 4 line display only |
// |
// #include "lcd_hd44780.h" // Use LCD Library |
// |
// |
// How to use the library |
// ---------------------- |
// |
// void lcd_init(void) // Init LCD Display |
// |
// void lcd_home() // Goto Home |
// |
// void lcd_clear() // Clear Display |
// |
// void lcd_clear_home() // Clear Display and Goto Home with no Cursor |
// |
// void lcd_cursor_on() // Switch Cursor On |
// |
// void lcd_cursor_off() // Switch Cursor Off |
// |
// void lcd_cursor_left() // Move Cursor Left |
// |
// void lcd_cursor_right() // Move Cursor Right |
// |
// void lcd_gotoxy(uint8_t x, uint8_t y) // Move to Position (1,1 is the first position) |
// |
// int lcd_putc(char c) // LCD Char Output |
// |
// int lcd_putc_stream(char c, FILE *unused) // LCD Char Output (for Stream Library) |
// |
// |
// How to use printf |
// ----------------- |
// |
// 1) Define FILE structure |
// |
// static FILE lcd_stream = FDEV_SETUP_STREAM(lcd_putc_stream, NULL, _FDEV_SETUP_WRITE); |
// |
// 2) Connect it with standard output |
// |
// stdout = &lcd_stream; // Connect stdout to LCD Stream |
// |
// 3) Use printf |
// |
// printf("\fHello World!\n------------"); |
// |
// 4) Use special chars |
// |
// \f - clear display and goto home |
// \n - goto the beginning of the next line |
// \r - goto to the beginning of curent line |
// \b - backspace |
// \v - start and end definition of user defined char |
// |
// |
// How to use User Defined symbols |
// ------------------------------- |
// |
// That is easy. Just print the definition to lcd. Look at the example |
// |
// printf("\v" "\x10" LCD_CHAR_BAT50 "\v"); // definition (redefines CGRAM content of the LCD) |
// printf("Battery Status \x10"); // usage |
// |
// \v starts the definition |
// \x10 first (of eight) user defined char |
// LCD_CHAR_BAT50 half battery symbol, you can define more symbols here (up to 8) |
// \v end of definition |
// |
// Check Defined Values and use Default Values if possible |
// ------------------------------------------------------- |
// 1 / 2 / 4 Line |
#ifndef LCD_CHARS |
#if LCD_LINES > 2 |
#error "LCD: Undefined LCD_CHARS" |
#else |
// Dafault Value |
#define LCD_CHARS 20 |
#endif |
#endif |
#ifndef LCD_LINE_1 |
// Address of the 1st char on the 1st line |
#define LCD_LINE_1 0 |
#endif |
#ifndef LCD_LINE_2 |
// Address of the 1st char on the 2nd line |
#define LCD_LINE_2 64 |
#endif |
#ifndef LCD_LINE_3 |
// Address of the 1st char on the 3rd line |
#define LCD_LINE_3 LCD_CHARS |
#endif |
#ifndef LCD_LINE_4 |
// Address of the 1st char on the 4th line |
#define LCD_LINE_4 (LCD_LINE_2 + LCD_CHARS) |
#endif |
// Data Interface |
#if LCD_INTERFACE_BITS == 4 |
#define LCD_DATA_MASK (0x0F << LCD_DATA_BIT) |
#elif LCD_INTERFACE_BITS==8 |
#define LCD_DATA_MASK (0xFF << LCD_DATA_BIT) |
#else |
#error "LCD: Wrong Value: LCD_INTERFACE_BITS" |
#endif |
#if LCD_DATA_MASK > 0xFF |
#error "LCD: Value too Big: LCD_DATA_BIT" |
#endif |
// Need Delay Library |
// ------------------ |
#ifndef F_CPU |
#error "LCD: Undefined F_CPU" |
#endif |
#include <util/delay.h> // Delay Routines |
// Need IO Pins |
// ------------ |
#include <avr/io.h> // Device Specific Defines |
#define GLUE(a,b) a##b |
#define PORT(a) GLUE(PORT,a) |
#define PIN(a) GLUE(PIN,a) |
#define DDR(a) GLUE(DDR,a) |
#define LCD_E_PORT PORT(LCD_E) |
#define LCD_E_DDR DDR(LCD_E) |
#define LCD_RS_PORT PORT(LCD_RS) |
#define LCD_RS_DDR DDR(LCD_RS) |
#define LCD_DATA_PORT PORT(LCD_DATA) |
#define LCD_DATA_DDR DDR(LCD_DATA) |
#ifdef LCD_RW |
#define LCD_RW_PORT PORT(LCD_RW) |
#define LCD_RW_DDR DDR(LCD_RW) |
#endif |
// LCD Chip Commands |
// ----------------- |
// Comand Clear LCD Display |
#define LCD_HD44780_CLR 0x01 |
// Command Home Cursor |
#define LCD_HD44780_HOME 0x02 |
// Command Entry Mode (increment/decrement, shift/no shift) |
#define LCD_HD44780_ENTMODE(inc, shift) \ |
(0x04 | ((inc)? 0x02: 0) | ((shift)? 1: 0)) |
#define LCD_HD44780_ENTMODE_DEF LCD_HD44780_ENTMODE(1,0) // Increment Position, No Shift |
// Command Display Controll (display on/off, cursor on/off, cursor blinking on/off) |
#define LCD_HD44780_DISPCTL(disp, cursor, blink) \ |
(0x08 | ((disp)? 0x04: 0) | ((cursor)? 0x02: 0) | ((blink)? 1: 0)) |
#define LCD_HD44780_CURSORON LCD_HD44780_DISPCTL(1,1,0) // on, cursor on, |
#define LCD_HD44780_CURSOROFF LCD_HD44780_DISPCTL(1,0,0) // on, cursor off |
// Command Cursor or Display Shift (shift display/cursor, left/right) |
#define LCD_HD44780_SHIFT(shift, right) \ |
(0x10 | ((shift)? 0x08: 0) | ((right)? 0x04: 0)) |
#define LCD_HD44780_CURSORLEFT LCD_HD44780_SHIFT(0,0) |
#define LCD_HD44780_CURSORRIGHT LCD_HD44780_SHIFT(0,1) |
// Command Function Set ( 4/8-bit interface / 1 or 2 lines ) |
#define LCD_HD44780_4BIT1LINE 0x20 // 4-bit 1-line font 5x7 |
#define LCD_HD44780_4BIT2LINES 0x28 // 4-bit 2-lines font 5x7 |
#define LCD_HD44780_8BIT1LINE 0x30 // 8-bit 1-line font 5x7 |
#define LCD_HD44780_8BIT2LINES 0x38 // 8-bit 2-lines font 5x7 |
// Select Apropriate Mode |
#if LCD_INTERFACE_BITS==4 |
#if LCD_LINES == 1 |
#define LCD_HD44780_FNSET LCD_HD44780_4BIT1LINE // 4-bit 1-line |
#else |
#define LCD_HD44780_FNSET LCD_HD44780_4BIT2LINES // 4-bit 2-lines |
#endif |
#elif LCD_INTERFACE_BITS==8 |
#if LCD_LINES == 1 |
#define LCD_HD44780_FNSET LCD_HD44780_8BIT1LINE // 8-bit 1-line |
#else |
#define LCD_HD44780_FNSET LCD_HD44780_8BIT2LINES // 8-bit 2-lines |
#endif |
#endif |
// User Defined Chars |
// ------------------ |
// Definitions only. |
// Because these definitions may be sent to lcd via printf, |
// it is impossible to contain 0 bytes (end of string in C) |
// so we ored 0x80 to each byte |
#define LCD_CHAR_SPACE "\x80\x80\x80\x80\x80\x80\x80\x80" /* space (blank char) */ |
#define LCD_CHAR_BAT100 "\x8E\x9F\x9F\x9F\x9F\x9F\x9F\x1F" /* symbol battery full */ |
#define LCD_CHAR_BAT50 "\x8E\x9F\x91\x91\x93\x97\x9F\x1F" /* symbol baterry half */ |
#define LCD_CHAR_BAT0 "\x8E\x9F\x91\x91\x91\x91\x91\x1F" /* symbol baterry empty */ |
#define LCD_CHAR_UP "\x80\x84\x8E\x95\x84\x84\x84\x80" /* symbol arrow up */ |
#define LCD_CHAR_DOWN "\x80\x84\x84\x84\x95\x8E\x84\x80" /* symbol arrow down */ |
#define LCD_CHAR_LUA "\x84\x8E\x91\x91\x9F\x91\x91\x80" /* A s carkou */ |
#define LCD_CHAR_LLA "\x81\x82\x8E\x81\x9F\x91\x8F\x80" /* a s carkou */ |
#define LCD_CHAR_HUC "\x8A\x8E\x91\x90\x90\x91\x8E\x80" /* C s hackem */ |
#define LCD_CHAR_HLC "\x8A\x84\x8E\x90\x90\x91\x8E\x80" /* c s hackem */ |
#define LCD_CHAR_HUD "\x8A\x9C\x92\x91\x91\x92\x9C\x80" /* D s hackem */ |
#define LCD_CHAR_HLD "\x85\x83\x8D\x93\x91\x91\x8F\x80" /* d s hackem */ |
#define LCD_CHAR_LUE "\x84\x9F\x90\x90\x9E\x90\x9F\x80" /* E s carkou */ |
#define LCD_CHAR_LLE "\x81\x82\x8E\x91\x9F\x90\x8E\x80" /* e s carkou */ |
#define LCD_CHAR_HUE "\x8A\x9F\x90\x9E\x90\x90\x9F\x80" /* E s hackem */ |
#define LCD_CHAR_HLE "\x8A\x84\x8E\x91\x9F\x90\x8E\x80" /* e s hackem */ |
#define LCD_CHAR_LUI "\x84\x8E\x84\x84\x84\x84\x8E\x80" /* I s carkou */ |
#define LCD_CHAR_LLI "\x82\x84\x80\x8C\x84\x84\x8E\x80" /* i s carkou */ |
#define LCD_CHAR_HUN "\x8A\x95\x91\x99\x95\x93\x91\x80" /* N s hackem */ |
#define LCD_CHAR_HLN "\x8A\x84\x96\x99\x91\x91\x91\x80" /* n s hackem */ |
#define LCD_CHAR_LUO "\x84\x8E\x91\x91\x91\x91\x8E\x80" /* O s carkou */ |
#define LCD_CHAR_LLO "\x82\x84\x8E\x91\x91\x91\x8E\x80" /* o s carkou */ |
#define LCD_CHAR_HUR "\x8A\x9E\x91\x9E\x94\x92\x91\x80" /* R s hackem */ |
#define LCD_CHAR_HLR "\x8A\x84\x96\x99\x90\x90\x90\x80" /* r s hackem */ |
#define LCD_CHAR_HUS "\x8A\x8F\x90\x8E\x81\x81\x9E\x80" /* S s hackem */ |
#define LCD_CHAR_HLS "\x8A\x84\x8E\x90\x8E\x81\x9E\x80" /* s s hackem */ |
#define LCD_CHAR_HUT "\x8A\x9F\x84\x84\x84\x84\x84\x80" /* T s hackem */ |
#define LCD_CHAR_HLT "\x8A\x8C\x9C\x88\x88\x89\x86\x80" /* t s hackem */ |
#define LCD_CHAR_LUU "\x82\x95\x91\x91\x91\x91\x8E\x80" /* U s carkou */ |
#define LCD_CHAR_LLU "\x82\x84\x91\x91\x91\x93\x8D\x80" /* u s carkou */ |
#define LCD_CHAR_CUU "\x86\x97\x91\x91\x91\x91\x8E\x80" /* U s krouzkem */ |
#define LCD_CHAR_CLU "\x86\x86\x91\x91\x91\x91\x8E\x80" /* u s krouzkem */ |
#define LCD_CHAR_LUY "\x82\x95\x91\x8A\x84\x84\x84\x80" /* Y s carkou */ |
#define LCD_CHAR_LLY "\x82\x84\x91\x91\x8F\x81\x8E\x80" /* y s carkou */ |
#define LCD_CHAR_HUZ "\x8A\x9F\x81\x82\x84\x88\x9F\x80" /* Z s hackem */ |
#define LCD_CHAR_HLZ "\x8A\x84\x9F\x82\x84\x88\x9F\x80" /* z s hackem */ |
// Program |
// ------- |
static int8_t lcd_posx; // Mirror Register with Position X (1..LCD_CHARS) |
#if LCD_LINES > 1 |
static int8_t lcd_posy; // Mirror Register with Position Y (1..LCD_LINES) |
#endif |
// Send a Nibble or Byte to the LCD COntroller |
static void |
lcd_send_nibble(uint8_t rs, uint8_t data) |
{ |
// Select Register or Data |
if (rs) |
LCD_RS_PORT |= (1<<LCD_RS_BIT); |
else |
LCD_RS_PORT &= ~(1<<LCD_RS_BIT); |
// Put 4bit/8bit data |
LCD_DATA_PORT = (LCD_DATA_PORT & ~LCD_DATA_MASK) | ((data<<LCD_DATA_BIT)&LCD_DATA_MASK); |
_delay_us(1); // Data Setup Time |
// Click Enable on and off |
LCD_E_PORT |= 1<<LCD_E_BIT; |
_delay_us(1); |
LCD_E_PORT &= ~(1<<LCD_E_BIT); |
_delay_us(40); |
} |
// Send a Byte to the LCD Controller |
#if LCD_INTERFACE_BITS == 4 |
static void |
lcd_send_byte(uint8_t rs, uint8_t data) |
{ |
lcd_send_nibble(rs, data >> 4); // High Order Data |
lcd_send_nibble(rs, data); // Low Order Data |
} |
#else |
#define lcd_send_byte lcd_send_nibble |
#endif |
// Send a Command to the LCD Controller (RS=0) |
#define lcd_send_cmd(n) lcd_send_byte(0, (n)) |
// Send a Data Byte to the LCD Controller (RS=1) |
#define lcd_send_data(n) lcd_send_byte(1, (n)) |
// Goto Home |
void |
lcd_home() |
{ |
lcd_send_cmd(LCD_HD44780_HOME); // Zero Cursor Position and Offset |
#if LCD_LINES > 1 |
lcd_posx=lcd_posy=1; |
#else |
lcd_posx=1; |
#endif |
_delay_ms(2); |
} |
// Clear Display |
void |
lcd_clear() |
{ |
lcd_send_cmd(LCD_HD44780_CLR); // Clear Memory |
_delay_ms(2); |
} |
// Switch Cursor On |
void |
lcd_cursor_on() |
{ |
lcd_send_cmd(LCD_HD44780_CURSORON); |
} |
// Switch Cursor Off |
void |
lcd_cursor_off() |
{ |
lcd_send_cmd(LCD_HD44780_CURSOROFF); |
} |
// Clear Display and Goto Home with no Cursor |
void |
lcd_clear_home() |
{ |
lcd_clear(); // Clear Memory |
lcd_home(); // Zero Cursor Position and Offset |
lcd_cursor_off(); // No Cursor |
} |
// Move to Position (1,1 is the first position) |
void lcd_gotoxy(uint8_t x, uint8_t y) |
{ |
uint8_t Adr; |
Adr=x-1; |
#if LCD_LINES > 1 |
switch (y) |
{ |
case 2: |
Adr+=LCD_LINE_2; |
break; |
#if LCD_LINES > 2 |
case 3: |
Adr+=LCD_LINE_3; |
break; |
case 4: |
Adr+=LCD_LINE_4; |
break; |
#endif |
} |
#endif |
lcd_send_cmd(0x80 | (Adr & 0x7F) ); |
lcd_posx=x; |
#if LCD_LINES > 1 |
lcd_posy=y; |
#endif |
} |
// Increment Position |
void |
lcd_inc_pos() |
{ |
// Next Position |
lcd_posx++; |
// Correct End of Line |
#if LCD_LINES == 1 |
if (lcd_posx > 40) |
lcd_posx = 1; |
#elif LCD_LINES == 2 |
if (lcd_posx > 40) |
{ |
lcd_posx = 1; |
lcd_posy++; // on the Next Line |
} |
#elif LCD_LINES > 2 |
if ( ((lcd_posy & 1) && (lcd_posx > LCD_CHARS)) // Odd Lines are Short |
|| (lcd_posx > 40-LCD_CHARS) ) // Memory is up to 40 Bytes |
{ |
lcd_posx = 1; // Position 1 |
lcd_posy++; // on the Next Line |
} |
#endif |
// Correct End of Last Line |
#if LCD_LINES > 1 |
if (lcd_posy > LCD_LINES) |
{ |
lcd_posy = 1; |
} |
#endif |
} |
// Decrement Position |
void |
lcd_dec_pos() |
{ |
// Correct Beginning of Line |
if (--lcd_posx==0) // Step Left |
{ // If Beginning of the Line |
#if LCD_LINES > 1 |
if(--lcd_posy==0); // Step Up |
lcd_posy = LCD_LINES; // If we are on Top Go to the Bottom |
#endif |
#if LCD_LINES <= 2 |
lcd_posx = 40; |
#else |
if(lcd_posy & 1) // If Odd Line (the Short One) |
lcd_posx = LCD_CHARS; // Set End of the Short Line |
else // Else |
lcd_posx = 40-LCD_CHARS; // Set End of Long Line |
#endif |
} |
} |
// Move Cursor Left |
void |
lcd_cursor_left() |
{ |
lcd_send_cmd(LCD_HD44780_CURSORLEFT); |
lcd_dec_pos(); |
} |
// Move Cursor Right |
void |
lcd_cursor_right() |
{ |
lcd_send_cmd(LCD_HD44780_CURSORRIGHT); |
lcd_inc_pos(); |
} |
// Init LCD Display |
void |
lcd_init(void) |
{ |
// Port Init Direction |
LCD_E_PORT &= ~_BV(LCD_E_BIT); // Enable off |
LCD_E_DDR |= _BV(LCD_E_BIT); // Enable as Output |
LCD_RS_DDR |= _BV(LCD_RS_BIT); // Register Select as Output |
#ifdef LCD_RW |
LCD_RW_DDR |= _BV(LCD_RW_BIT); // Read Write as Output |
#endif |
LCD_DATA_DDR |= LCD_DATA_MASK; // Data as Output |
// Initial Delay |
_delay_ms(40); // Delay for Vcc |
// Sync 8/4 bit Interface |
#if LCD_INTERFACE_BITS == 4 |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE >> 4); // 8 bit mode - sync nibble/byte |
_delay_ms(4.1); |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE >> 4); |
_delay_us(100); |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE >> 4); |
// Set 4 bit mode |
lcd_send_nibble(0, LCD_HD44780_FNSET >> 4); |
#elif LCD_INTERFACE_BITS == 8 |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE); // 8 bit mode - sync nibble/byte |
_delay_ms(4.1); |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE); |
_delay_us(100); |
lcd_send_nibble(0, LCD_HD44780_8BIT1LINE); |
#endif |
// Set and Init |
lcd_send_cmd(LCD_HD44780_FNSET); // 4/8 bits 1/2 lines |
lcd_send_cmd(LCD_HD44780_ENTMODE_DEF); // increment/decrement, shift/no shift |
lcd_clear_home(); // display on, no cursor, clear and home |
} |
// LCD Char Output |
int |
lcd_putc(char c) |
{ |
static uint8_t mode=0; |
switch (c) |
{ |
case '\f': |
lcd_clear_home(); // Clear Display |
break; |
case '\n': |
#if LCD_LINES > 1 |
if (lcd_posy <= LCD_LINES) // Go to the Next Line |
lcd_posy++; |
#endif |
case '\r': |
#if LCD_LINES > 1 |
lcd_gotoxy(1,lcd_posy); // Go to the Beginning of the Line |
#else |
lcd_home(); |
#endif |
break; |
case '\b': |
lcd_cursor_left(); // Cursor (Position) Move Back |
break; |
default: |
if (mode==0 && c=='\v') // Startr of Definition String |
{ |
mode=1; // Mode Next Char will be Defined Char |
break; |
} |
if (mode==1) // First Char is Position Number |
{ |
lcd_send_cmd(0x40 | ((c & 0x07)<<3) ); // Set CGRAM Address |
mode++; // Mode Define Char Patern |
break; |
} |
if (mode==2 && c=='\v') // End of Definition String |
{ |
mode=0; |
#if LCD_LINES > 1 |
lcd_gotoxy(lcd_posx,lcd_posy); |
#else |
lcd_gotoxy(lcd_posx,1); |
#endif |
break; |
} |
if (mode != 2) // Ordinary Chars |
{ |
if (c<0x20) // Remap User Defind Char |
c &= 0x07; // from rage 0x10-0x1F to 0x00-0x0f |
lcd_inc_pos(); // Next Position |
} |
lcd_send_data(c); // Send Byte to LCD |
break; |
} |
return 0; // Success |
} |
// LCD Char Output (for Stream Library) |
#ifdef _STDIO_H_ |
static int |
lcd_putc_stream(char c, FILE *unused) |
{ |
return lcd_putc(c); |
} |
#endif |
/programy/C/avr/LCD/lcd_hd44780_test.c |
---|
0,0 → 1,95 |
/* --------------------------------------------------------------------------- |
* AVR_MLIB - HD 44780 LCD Display Driver Test Application |
* www.mlab.cz miho 2008 |
* --------------------------------------------------------------------------- |
* Simple test application for lcd_hd44780.h LCD library. This code ilustates |
* how to use and configure the library functions. |
* --------------------------------------------------------------------------- |
* 00.00 2008/03/28 First Version |
* 00.01 2008/04/19 Improved |
* --------------------------------------------------------------------------- |
*/ |
// Required Libraries |
// ------------------ |
// Delay |
#define F_CPU 1000000UL // CPU Frequency |
#include <util/delay.h> // Delay Routines |
// Standard Output Library |
#include <stdio.h> // For printf |
// LCD Display Interface |
// --------------------- |
// LCD Port Settings |
#define LCD_DATA B // 4 or 8 bits field (lsb port) |
#define LCD_DATA_BIT 0 |
#define LCD_RS D // Register Select |
#define LCD_RS_BIT 4 |
#define LCD_E D // Enable |
#define LCD_E_BIT 3 |
// LCD Display Parameters |
#define LCD_INTERFACE_BITS 4 // 4 or 8 bit interface |
#define LCD_LINES 2 // 1 or 2 or 4 lines |
#define LCD_CHARS 16 // usualy 16 or 20, important for 4 line display only |
// LCD Library |
#include "lcd_hd44780.h" |
// Test Application |
// ---------------- |
// Define Output Stream to LCD |
static FILE lcd_stream = FDEV_SETUP_STREAM(lcd_putc_stream, NULL, _FDEV_SETUP_WRITE); |
// Main Program |
int main () |
{ |
int i; |
DDRB|= (1<<DDB6); |
DDRB|= (1<<DDB7); |
PORTB &= ~(1<<PB6); |
stdout = &lcd_stream; // Connect stdout to LCD Stream |
lcd_init(); // Init LCD (interface and display module) |
lcd_gotoxy(1,1); |
printf("stavebnice MLAB"); |
_delay_ms(1000); |
while(1) |
{ |
lcd_gotoxy(2,2); |
printf("demo aplikace"); |
_delay_ms(1000); |
lcd_gotoxy(2,2); |
printf(" "); |
PORTB|= (1<<PB6); |
_delay_ms(500); |
PORTB &= ~(1<<PB6); |
_delay_ms(5000); |
PORTB|= (1<<PB7); |
_delay_ms(500); |
PORTB &= ~(1<<PB7); |
_delay_ms(5000); |
} |
} |
/programy/C/avr/LCD/lcd_hd44780_test.hex |
---|
0,0 → 1,174 |
:100000000C9446000C9465000C9465000C946500FB |
:100010000C9465000C9465000C9465000C946500CC |
:100020000C9465000C9465000C9465000C946500BC |
:100030000C9465000C9465000C9465000C946500AC |
:100040000C9465000C9465000C9465000C9465009C |
:100050000C9465000C9465000C9465000C9465008C |
:100060000C9465000C9465000C9465000C9465007C |
:100070000C9465000C9465000C9465000C9465006C |
:100080000C9465000C9465000C94650011241FBE4F |
:10009000CFEFD0E1DEBFCDBF11E0A0E0B1E0E6E8F8 |
:1000A000FAE000E00BBF02C007900D92AC33B1073D |
:1000B000D9F711E0ACE3B1E001C01D92A534B1075E |
:1000C000E1F70E9480010C9442050C940000882303 |
:1000D00011F0949A01C0949888B36F70807F862B3A |
:1000E00088BB81E0982F9A95F1F7939A8A95F1F75A |
:1000F00093988DE08A95F1F708950F931F93082F39 |
:10010000162F62956F700E946700612F802F0E94EA |
:1001100067001F910F91089562E080E00E947D00CA |
:1001200081E080933E0180933D0184EF91E001974F |
:10013000F1F7089561E080E00E947D0084EF91E096 |
:100140000197F1F708956EE080E00E947D00089528 |
:100150006CE080E00E947D0008950E949A000E9459 |
:100160008C000E94A80008950F931F93182F062F4C |
:10017000682F6150023009F4605C606880E00E9482 |
:100180007D0010933D0100933E011F910F91089552 |
:1001900080913D018F5F80933D01893244F081E081 |
:1001A00080933D0180913E018F5F80933E0180915D |
:1001B0003E0183301CF081E080933E0108958091E0 |
:1001C0003D01815080933D01882331F482E080938A |
:1001D0003E0188E280933D01089560E180E00E9445 |
:1001E0007D000E94DF00089564E180E00E947D00B0 |
:1001F0000E94C800089593988B9A8C9A87B38F6059 |
:1002000087BB80E197E20197F1F763E080E00E940D |
:10021000670081E094E00197F1F763E080E00E94DD |
:10022000670081E28A95F1F763E080E00E94670051 |
:1002300062E080E00E94670068E280E00E947D004A |
:1002400066E080E00E947D000E94AD0008951F934B |
:10025000182F8A3069F08B301CF48830B9F413C041 |
:100260008C3019F08D3091F40AC00E94AD0041C06D |
:1002700080913E0183301CF48F5F80933E0160913A |
:100280003E0181E02AC00E94ED0033C080913C0114 |
:10029000882321F41B3021F581E012C0813099F4CC |
:1002A000612F772767FD70956770707083E0660F28 |
:1002B000771F8A95E1F7606480E00E947D0082E00C |
:1002C00080933C0116C0823059F41B3071F41092B7 |
:1002D0003C0160913E0180913D010E94B40009C043 |
:1002E00010320CF417700E94C800612F81E00E9448 |
:1002F0007D0080E090E01F9108950E9427010895FD |
:10030000CFEFD0E1DEBFCDBFBE9ABF9AC6988DE2D7 |
:1003100091E090934201809341010E94FB0061E0D3 |
:1003200081E00E94B40080E091E09F938F930E944F |
:10033000EE0120E137E20F900F9089E190E0019704 |
:10034000F1F721503040C9F700E111E0CEE1D1E0F2 |
:1003500062E082E00E94B4001F930F930E94EE01BE |
:1003600020E137E20F900F9089E190E00197F1F7DB |
:1003700021503040C9F762E082E00E94B400DF9370 |
:10038000CF930E94EE01C69A28E833E10F900F90B8 |
:1003900089E190E00197F1F721503040C9F7C69804 |
:1003A00020E533EC89E190E00197F1F721503040EE |
:1003B000C9F7C79A28E833E189E190E00197F1F79E |
:1003C00021503040C9F7C79820E533EC89E190E02F |
:1003D0000197F1F721503040C9F7BACFA2E0B0E061 |
:1003E000E4EFF1E00C941B05FE01379661917191E9 |
:1003F000FA83E983AF0180914101909142010E940B |
:100400000502E2E022960C943705A7E1B0E0EBE0AC |
:10041000F2E00C940B058824992454012C017C8B68 |
:100420006B8B3A01FC0117821682838181FD03C028 |
:100430008FEF9FEF7EC2CC24DD249E012F5F3F4FC4 |
:100440003F8B2E8B65C2C0FE48C2832D80538A30FD |
:10045000D8F430E3331641F48D85882329F4C3FCA6 |
:1004600003C0E0E0F1E073C08AE0FD85F802C0015E |
:1004700011248053830D8D8787FF02C02FE72D87BE |
:10048000C3FC40C22D843EC2960128703070C3FE6A |
:1004900005C08D85882311F491E09D87E7E6E3157B |
:1004A0006CF1F5E63F160CF068C083E5381609F4E8 |
:1004B00089C08315BCF09BE2391609F442C093153C |
:1004C0004CF0E0E23E1609F440C0F3E23F1609F0BA |
:1004D000FCC143C02DE23216E9F13EE2331609F0C9 |
:1004E000F4C140C083E6381609F44DC083150CF4FE |
:1004F00081C098E5391609F0E8C120C0E0E73E1652 |
:1005000009F4A2C0E3155CF0FCE63F1689F12FE682 |
:10051000321689F039E6331609F0D7C16BC085E78A |
:10052000381609F499C098E7391641F0E3E73E160A |
:1005300009F0CBC130C0F8E0F88B8EC020E1288BE9 |
:100540008BC080E190E0C82AD92AE0E2F0E0CE2A10 |
:10055000DF2AD8C120E830E00DC080E490E0C82A4E |
:10056000D92AD0C1E8E0F0E0CE2ADF2A1D86CAC130 |
:1005700024E030E0C22AD32AC5C13FE3832E2A9467 |
:1005800023E6322E30C1F30180802A9422E030E04D |
:10059000620E731E28C1F301A081B1814D01232B8E |
:1005A00049F0FD856F2F772767FD7095CD010E947B |
:1005B000B10418C0FD0101900020E9F73197EA1B52 |
:1005C000E88B11C0F301808191814C01232B41F014 |
:1005D000FD856F2F772767FD70950E94A60402C0E6 |
:1005E0000E949D04888B22E030E0620E731E3889E1 |
:1005F000231AF9C0C2FE08C0F30180819181A28153 |
:10060000B38124E030E009C0F30180819181AA2701 |
:1006100097FDA095BA2F22E030E0620E731E4C01C8 |
:100620005D01B7FF0CC082E090E0C82AD92AB094DF |
:10063000A09490948094811C911CA11CB11CEFEBA0 |
:10064000FFEFCE22DF2221C020E430E0C22AD32AED |
:1006500098E7392E30E1388BC2FE08C0F301808163 |
:100660009181A281B38124E030E007C0F301808151 |
:100670009181AA27BB2722E030E0620E731E4C0155 |
:100680005D018FEC9FEFC822D92285017401FE0124 |
:100690003196FF87EE87F8898F2E9924AA24BB24F0 |
:1006A000232D21522D8BC801B701A50194010E9471 |
:1006B000E9046A301CF03D89630F01C0605DEE857E |
:1006C000FF856193FF87EE87C801B701A5019401FB |
:1006D0000E94E90479018A0121153105410551057E |
:1006E00011F78824992454014E85FE894F1B842ECE |
:1006F000C60182739070892B09F02A94C6FE07C048 |
:100700002889203111F482E001C081E0281AC3FE5B |
:1007100012C08D85282F332727FD3095842F9927E8 |
:10072000821793072CF0E7EFFFEFCE22DF2203C002 |
:10073000FD85F41BFD87860108701070C3FE03C0A1 |
:100740002D85221A01C0241AC60180789170892B48 |
:1007500031F00AC0B20180E290E00E94BC042A9409 |
:10076000822D8F5F1816B4F3C1FE04C0B2018DE272 |
:1007700090E00BC0C4FE04C0B2018BE290E005C063 |
:10078000C5FE05C0B20180E290E00E94BC04C6FE36 |
:100790000FC0B20180E390E00E94BC043889303180 |
:1007A00039F4B201832D992787FD90950E94BC04EE |
:1007B000D0FC06C00AC0B20180E390E00E94BC04F5 |
:1007C0002A94822D8F5F1816B4F3012B31F40BC0DD |
:1007D000B20180E390E00E94BC048D8581508D873A |
:1007E0008F5F1816ACF3F601E078F070FA8BE98BA6 |
:1007F000C7FE06C00AC0B20180E290E00E94BC04BD |
:100800002A94822D8F5F1816B4F3F3E63F1641F455 |
:10081000B201882D992787FD90950E94BC0445C0A0 |
:1008200023E73216B1F464017401188909C0F70195 |
:1008300081917F01B201992787FD90950E94BC04A8 |
:100840001150A8F74601F8898F0E911C2FEF288BC5 |
:100850002CC033E5331619F00E851F851FC06401C7 |
:100860008401F88808C0F8018491B20199270E9498 |
:10087000BC040F5F1F4FFA94FFEFFF16A1F746016C |
:100880002889820E911CF88B10C0F80182918F018B |
:10089000B201992787FD90950E94BC042E893F895B |
:1008A0000217130791F71F870E8789899A89892B69 |
:1008B00031F426C0B20180E290E00E94BC042A9488 |
:1008C000822D8F5F1816B4F31BC0B201832D9927B8 |
:1008D00087FD90950E94BC0413C095E2391641F43F |
:1008E000EAE0E88B22241D8681E0C82ED12C0AC0C4 |
:1008F000B201832D992787FD90950E94BC0402C008 |
:10090000CC24DD242B893C892F5F3F4F3C8B2B8BE4 |
:10091000F201838183FF04C0EB89FC89349003C01A |
:10092000EB89FC893080332009F08DCDF20186817E |
:100930009781E2E167960C942705FC010590002061 |
:10094000E9F7809590958E0F9F1F0895FC01059003 |
:10095000615070400110D8F7809590958E0F9F1FC1 |
:100960000895FC016150704001900110D8F7809506 |
:1009700090958E0F9F1F08950F931F93CF93DF9332 |
:100980008C01EB018B81992781FF1BC082FF0DC079 |
:100990002E813F818C819D812817390764F4E8817D |
:1009A000F9810193F983E88306C0E885F985802FF2 |
:1009B0000995892B31F48E819F8101969F838E83C7 |
:1009C00002C00FEF1FEFC801DF91CF911F910F9170 |
:1009D0000895A1E21A2EAA1BBB1BFD010DC0AA1F80 |
:1009E000BB1FEE1FFF1FA217B307E407F50720F098 |
:1009F000A21BB30BE40BF50B661F771F881F991F13 |
:100A00001A9469F760957095809590959B01AC015B |
:100A1000BD01CF0108952F923F924F925F926F9246 |
:100A20007F928F929F92AF92BF92CF92DF92EF927E |
:100A3000FF920F931F93CF93DF93CDB7DEB7CA1BFF |
:100A4000DB0B0FB6F894DEBF0FBECDBF09942A882A |
:100A5000398848885F846E847D848C849B84AA84D2 |
:100A6000B984C884DF80EE80FD800C811B81AA815F |
:100A7000B981CE0FD11D0FB6F894DEBF0FBECDBF2A |
:060A8000ED010895FFCF17 |
:100A86007374617665626E696365204D4C41420000 |
:100A960064656D6F2061706C696B61636500202011 |
:100AA60020202020202020202020202000000000C0 |
:0C0AB60002000000007D010000000000B4 |
:00000001FF |
/programy/C/avr/LCD/lcd_hd44780_test.map |
---|
0,0 → 1,456 |
Archive member included because of file (symbol) |
/usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o (exit) |
/usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
lcd_hd44780_test.o (__do_clear_bss) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
lcd_hd44780_test.o (__iob) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) |
lcd_hd44780_test.o (printf) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) (vfprintf) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strlen_P.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strlen_P) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen_P.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen_P) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(fputc.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (fputc) |
/usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_udivmodsi4.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (__udivmodsi4) |
/usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_prologue.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) (__prologue_saves__) |
/usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_epilogue.o) |
/usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) (__epilogue_restores__) |
Allocating common symbols |
Common symbol size file |
__iob 0x6 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
Memory Configuration |
Name Origin Length Attributes |
text 0x00000000 0x00020000 xr |
data 0x00800060 0x0000ffa0 rw !x |
eeprom 0x00810000 0x00010000 rw !x |
fuse 0x00820000 0x00000400 rw !x |
lock 0x00830000 0x00000400 rw !x |
signature 0x00840000 0x00000400 rw !x |
*default* 0x00000000 0xffffffff |
Linker script and memory map |
Address of section .data set to 0x800100 |
LOAD /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
LOAD lcd_hd44780_test.o |
LOAD /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a |
LOAD /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a |
LOAD /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a |
.hash |
*(.hash) |
.dynsym |
*(.dynsym) |
.dynstr |
*(.dynstr) |
.gnu.version |
*(.gnu.version) |
.gnu.version_d |
*(.gnu.version_d) |
.gnu.version_r |
*(.gnu.version_r) |
.rel.init |
*(.rel.init) |
.rela.init |
*(.rela.init) |
.rel.text |
*(.rel.text) |
*(.rel.text.*) |
*(.rel.gnu.linkonce.t*) |
.rela.text |
*(.rela.text) |
*(.rela.text.*) |
*(.rela.gnu.linkonce.t*) |
.rel.fini |
*(.rel.fini) |
.rela.fini |
*(.rela.fini) |
.rel.rodata |
*(.rel.rodata) |
*(.rel.rodata.*) |
*(.rel.gnu.linkonce.r*) |
.rela.rodata |
*(.rela.rodata) |
*(.rela.rodata.*) |
*(.rela.gnu.linkonce.r*) |
.rel.data |
*(.rel.data) |
*(.rel.data.*) |
*(.rel.gnu.linkonce.d*) |
.rela.data |
*(.rela.data) |
*(.rela.data.*) |
*(.rela.gnu.linkonce.d*) |
.rel.ctors |
*(.rel.ctors) |
.rela.ctors |
*(.rela.ctors) |
.rel.dtors |
*(.rel.dtors) |
.rela.dtors |
*(.rela.dtors) |
.rel.got |
*(.rel.got) |
.rela.got |
*(.rela.got) |
.rel.bss |
*(.rel.bss) |
.rela.bss |
*(.rela.bss) |
.rel.plt |
*(.rel.plt) |
.rela.plt |
*(.rela.plt) |
.text 0x00000000 0xa86 |
*(.vectors) |
.vectors 0x00000000 0x8c /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
0x00000000 __vectors |
0x00000000 __vector_default |
*(.vectors) |
*(.progmem.gcc*) |
*(.progmem*) |
0x0000008c . = ALIGN (0x2) |
0x0000008c __trampolines_start = . |
*(.trampolines) |
.trampolines 0x0000008c 0x0 linker stubs |
*(.trampolines*) |
0x0000008c __trampolines_end = . |
*(.jumptables) |
*(.jumptables*) |
*(.lowtext) |
*(.lowtext*) |
0x0000008c __ctors_start = . |
*(.ctors) |
0x0000008c __ctors_end = . |
0x0000008c __dtors_start = . |
*(.dtors) |
0x0000008c __dtors_end = . |
SORT(*)(.ctors) |
SORT(*)(.dtors) |
*(.init0) |
.init0 0x0000008c 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
0x0000008c __init |
*(.init0) |
*(.init1) |
*(.init1) |
*(.init2) |
.init2 0x0000008c 0xc /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
*(.init2) |
*(.init3) |
*(.init3) |
*(.init4) |
.init4 0x00000098 0x1a /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
0x00000098 __do_copy_data |
.init4 0x000000b2 0x10 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
0x000000b2 __do_clear_bss |
*(.init4) |
*(.init5) |
*(.init5) |
*(.init6) |
*(.init6) |
*(.init7) |
*(.init7) |
*(.init8) |
*(.init8) |
*(.init9) |
.init9 0x000000c2 0x8 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
*(.init9) |
*(.text) |
.text 0x000000ca 0x4 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
0x000000ca __vector_22 |
0x000000ca __vector_28 |
0x000000ca __vector_1 |
0x000000ca __vector_32 |
0x000000ca __vector_34 |
0x000000ca __vector_24 |
0x000000ca __vector_12 |
0x000000ca __bad_interrupt |
0x000000ca __vector_6 |
0x000000ca __vector_31 |
0x000000ca __vector_3 |
0x000000ca __vector_23 |
0x000000ca __vector_30 |
0x000000ca __vector_25 |
0x000000ca __vector_11 |
0x000000ca __vector_13 |
0x000000ca __vector_17 |
0x000000ca __vector_19 |
0x000000ca __vector_7 |
0x000000ca __vector_27 |
0x000000ca __vector_5 |
0x000000ca __vector_33 |
0x000000ca __vector_4 |
0x000000ca __vector_9 |
0x000000ca __vector_2 |
0x000000ca __vector_21 |
0x000000ca __vector_15 |
0x000000ca __vector_29 |
0x000000ca __vector_8 |
0x000000ca __vector_26 |
0x000000ca __vector_14 |
0x000000ca __vector_10 |
0x000000ca __vector_16 |
0x000000ca __vector_18 |
0x000000ca __vector_20 |
.text 0x000000ce 0x30e lcd_hd44780_test.o |
0x0000015a lcd_clear_home |
0x00000168 lcd_gotoxy |
0x0000024e lcd_putc |
0x000001be lcd_dec_pos |
0x00000146 lcd_cursor_on |
0x00000134 lcd_clear |
0x00000118 lcd_home |
0x000001f6 lcd_init |
0x00000300 main |
0x00000190 lcd_inc_pos |
0x000001da lcd_cursor_left |
0x000001e8 lcd_cursor_right |
0x00000150 lcd_cursor_off |
.text 0x000003dc 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
.text 0x000003dc 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
.text 0x000003dc 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
.text 0x000003dc 0x2e /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) |
0x000003dc printf |
.text 0x0000040a 0x530 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) |
0x0000040a vfprintf |
.text 0x0000093a 0x12 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strlen_P.o) |
0x0000093a strlen_P |
.text 0x0000094c 0x16 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen_P.o) |
0x0000094c strnlen_P |
.text 0x00000962 0x16 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen.o) |
0x00000962 strnlen |
.text 0x00000978 0x5a /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(fputc.o) |
0x00000978 fputc |
.text 0x000009d2 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_udivmodsi4.o) |
.text 0x000009d2 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_prologue.o) |
.text 0x000009d2 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_epilogue.o) |
0x000009d2 . = ALIGN (0x2) |
*(.text.*) |
.text.libgcc 0x000009d2 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
.text.libgcc 0x000009d2 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
.text.libgcc 0x000009d2 0x44 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_udivmodsi4.o) |
0x000009d2 __udivmodsi4 |
.text.libgcc 0x00000a16 0x38 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_prologue.o) |
0x00000a16 __prologue_saves__ |
.text.libgcc 0x00000a4e 0x36 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_epilogue.o) |
0x00000a4e __epilogue_restores__ |
0x00000a84 . = ALIGN (0x2) |
*(.fini9) |
.fini9 0x00000a84 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
0x00000a84 exit |
0x00000a84 _exit |
*(.fini9) |
*(.fini8) |
*(.fini8) |
*(.fini7) |
*(.fini7) |
*(.fini6) |
*(.fini6) |
*(.fini5) |
*(.fini5) |
*(.fini4) |
*(.fini4) |
*(.fini3) |
*(.fini3) |
*(.fini2) |
*(.fini2) |
*(.fini1) |
*(.fini1) |
*(.fini0) |
.fini0 0x00000a84 0x2 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
*(.fini0) |
0x00000a86 _etext = . |
.data 0x00800100 0x3c load address 0x00000a86 |
0x00800100 PROVIDE (__data_start, .) |
*(.data) |
.data 0x00800100 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
.data 0x00800100 0x3b lcd_hd44780_test.o |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strlen_P.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen_P.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(fputc.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_udivmodsi4.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_prologue.o) |
.data 0x0080013b 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_epilogue.o) |
*(.data*) |
*(.rodata) |
*(.rodata*) |
*(.gnu.linkonce.d*) |
0x0080013c . = ALIGN (0x2) |
*fill* 0x0080013b 0x1 00 |
0x0080013c _edata = . |
0x0080013c PROVIDE (__data_end, .) |
.bss 0x0080013c 0x9 load address 0x00000ac2 |
0x0080013c PROVIDE (__bss_start, .) |
*(.bss) |
.bss 0x0080013c 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
.bss 0x0080013c 0x3 lcd_hd44780_test.o |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_exit.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_clear_bss.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strlen_P.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen_P.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(fputc.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_udivmodsi4.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_prologue.o) |
.bss 0x0080013f 0x0 /usr/lib/gcc/avr/4.2.2/avr5/libgcc.a(_epilogue.o) |
*(.bss*) |
*(COMMON) |
COMMON 0x0080013f 0x6 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
0x0080013f __iob |
0x00800145 PROVIDE (__bss_end, .) |
0x00000a86 __data_load_start = LOADADDR (.data) |
0x00000ac2 __data_load_end = (__data_load_start + SIZEOF (.data)) |
.noinit 0x00800145 0x0 |
0x00800145 PROVIDE (__noinit_start, .) |
*(.noinit*) |
0x00800145 PROVIDE (__noinit_end, .) |
0x00800145 _end = . |
0x00800145 PROVIDE (__heap_start, .) |
.eeprom 0x00810000 0x0 |
*(.eeprom*) |
0x00810000 __eeprom_end = . |
.fuse |
*(.fuse) |
*(.lfuse) |
*(.hfuse) |
*(.efuse) |
.lock |
*(.lock*) |
.signature |
*(.signature*) |
.stab 0x00000000 0x2598 |
*(.stab) |
.stab 0x00000000 0x414 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
.stab 0x00000414 0x11a0 lcd_hd44780_test.o |
0x11ac (size before relaxing) |
.stab 0x000015b4 0x2c4 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(iob.o) |
0x30c (size before relaxing) |
.stab 0x00001878 0x1b0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(printf.o) |
0x390 (size before relaxing) |
.stab 0x00001a28 0x7e0 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) |
0x9c0 (size before relaxing) |
.stab 0x00002208 0x84 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strlen_P.o) |
0x90 (size before relaxing) |
.stab 0x0000228c 0x9c /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen_P.o) |
0xa8 (size before relaxing) |
.stab 0x00002328 0x9c /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(strnlen.o) |
0xa8 (size before relaxing) |
.stab 0x000023c4 0x1d4 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/libc.a(fputc.o) |
0x3b4 (size before relaxing) |
.stabstr 0x00000000 0x14c9 |
*(.stabstr) |
.stabstr 0x00000000 0x14c9 /usr/lib/gcc/avr/4.2.2/../../../../avr/lib/avr5/crtm128.o |
.stab.excl |
*(.stab.excl) |
.stab.exclstr |
*(.stab.exclstr) |
.stab.index |
*(.stab.index) |
.stab.indexstr |
*(.stab.indexstr) |
.comment |
*(.comment) |
.debug |
*(.debug) |
.line |
*(.line) |
.debug_srcinfo |
*(.debug_srcinfo) |
.debug_sfnames |
*(.debug_sfnames) |
.debug_aranges |
*(.debug_aranges) |
.debug_pubnames |
*(.debug_pubnames) |
.debug_info |
*(.debug_info) |
*(.gnu.linkonce.wi.*) |
.debug_abbrev |
*(.debug_abbrev) |
.debug_line |
*(.debug_line) |
.debug_frame |
*(.debug_frame) |
.debug_str |
*(.debug_str) |
.debug_loc |
*(.debug_loc) |
.debug_macinfo |
*(.debug_macinfo) |
OUTPUT(lcd_hd44780_test.out elf32-avr) |
LOAD linker stubs |
/programy/C/avr/LCD/lcd_hd44780_test.out |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |