Subversion Repositories svnkaklik

Compare Revisions

No changes between revisions

Ignore whitespace Rev 506 → Rev 507

/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