Для одной стендовой конструкции, при написании программы пришлось задействовать Т0, Т1 и Т2. На ATmega8 подключить индикатор проблем не составила, но для Tiny2313 применить стандартную библиотеку не получается, так как порты PB используются как выхода сигналов определённых частот и индикатор надо подключать к порту PD, а там не 8 выходов, а семь. Открыл библиотеку, посмотрел как баран на неё и закрыл. Помогите или подскажите, как в стандартной библиотеке сместить порт, т.е. чтобы D4 индикатора подключался не к PD4 контроллера и далее по порядку, а к PD3 и следующие по порядку со смещением на один порт по сравнению со стандартной библиотекой.
CodeVisionAVR. LCD 16х2 подключается с помощью библиотеки <lcd.h>. #asm .equ __lcd_port=0x12;PORTD #endasm 12, 15 и 18 указывают подключение к портам D, С и В. Дальше инициализация lcd_init(16) и всё, пиши что хочешь выводить.
#include <alcd.h> вот так подключается библиотека лсд в кодевижн авр.
Открываем инструкцию по пользованию программой CodeVision п.5.15.1 и охреневаем, там библиотека lcd.h и буквы "а" впереди никакой нет. И как подключить библиотеку, мне объяснять не надо.
Открываем ссылку на моё последнее .... и оно работает у других на симуляторе...
Значит кто то подправил кривую библиотеку кодевижн , под нужды людей !
Добавлено after 2 minutes 12 seconds: Я тоже исправлял какуюто библиотеку под русский язык, но это было для пик ссс
Никто эту библиотеку LCD не правил. Она существует с версии 1.24, ниже у меня нет и до версии 3.14. Под русский язык библиотеку в CodeVision править нет смысла, так как перевод на русский там прописывается в экзешнике программы и русский заканчивается на версии 1.24, в которой перед написанием русского текста необходимо прописать #pragma rl+ и закрыть написание #pragma rl- . В последующих версиях русский отсутствует.
Пояснения проще и полезней всего смотреть в справке.
Цитата:
The following LCD formats are supported in alcd.h: 1x8, 2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 and 2x40 characters.
Причём здесь смотреть? Или не понятно я написал что надо? Могу больше сказать, что я препалагаю, что изменить библиотеку нельзя, так это подключение прописано в компиляторе. Но, а вдруг у кого-то есть решение.
Могу больше сказать, что я препалагаю, что изменить библиотеку нельзя, так это подключение прописано в компиляторе.
Предположения ваши неверны. Подключения прописаны не в компиляторе, а в самой библиотеке. Не ясно зачем лезть в библиотеку, исходников которой нету в открытом доступе. Библиотеку, если нет исходников, изменить сложнее(т.е. никто не запрещает ее изменить, если автор не в счет), чем написать библиотеку индикатора самому.
Alex_ka писал(а):
Или не понятно я написал что надо?
Может это вы не понимаете, что вам советуют не лезть в библиотеку, если то что вы хотите, можно сделать на С, а точнее просто сконфигурировать в визарде и использовать на С.
Предположения ваши неверны. Подключения прописаны не в компиляторе, а в самой библиотеке. Не ясно зачем лезть в библиотеку, исходников которой нету в открытом доступе. Библиотеку, если нет исходников, изменить сложнее(т.е. никто не запрещает ее изменить, если автор не в счет), чем написать библиотеку индикатора самому.
Алло гараж. Библиотека выложена в первом сообщении. Вы там на какой волне находитесь? Открой этот файл и толкни умную мысль глядя на данные ассемблера.
Создай визардом проект, назначь пины какие хочешь на лсд, и не ипи мозги себе и людям !
Ты в адеквате или на своей волне. Тебе по названию темы не понятно, что речь идёт о CodeVision? Догадайся с первого раза куда я тебе посоветую заткнуть свой визард. Что ты мне посоветуешь в своём визарде с выводом русского на индикатор, умник. Может совет дашь, что бы я ещё хренью занимался в программе и недостающие буквы русского языка моделировал? Версия 1.24.
Так а PD7 у вас где то ещё используется? Как вход, или как выход? Спойлер
Код:
/* LCD driver routines
CodeVisionAVR C Compiler (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L. */ /* подскажите, как в стандартной библиотеке сместить порт, т.е. чтобы D4 индикатора подключался не к PD4 контроллера и далее по порядку, а к PD3 и следующие по порядку со смещением на один порт по сравнению со стандартной библиотекой. */ #asm .equ __lcd_direction=__lcd_port-1 .equ __lcd_pin=__lcd_port-2 .equ __lcd_rs=0 .equ __lcd_rd=1 .equ __lcd_enable=2 .equ __lcd_busy_flag=6 #endasm
/* read a byte from the LCD character generator or display RAM */ unsigned char lcd_read_byte(unsigned char addr) { _lcd_ready(); _lcd_write_data(addr); _lcd_ready(); #asm in r26,__lcd_direction andi r26,0b00000111 ;set as input out __lcd_direction,r26 sbi __lcd_port,__lcd_rs ;RS=1 #endasm return lcd_read_byte0(); }
/* set the LCD display position x=0..39 y=0..3 */ void lcd_gotoxy(unsigned char x, unsigned char y) { _lcd_ready(); // RS=0 _lcd_write_data(_base_y[y]+x); _lcd_x=x; _lcd_y=y; }
// clear the LCD void lcd_clear(void) { _lcd_ready(); // RS=0 _lcd_write_data(2); // cursor home _lcd_ready(); _lcd_write_data(0xc); // cursor off _lcd_ready(); _lcd_write_data(1); // clear _lcd_x=_lcd_y=0; }
#pragma keep+ void lcd_putchar(char c) { #asm push r30 push r31 ld r26,y set cpi r26,10 breq __lcd_putchar1 clt #endasm ++_lcd_x; if (_lcd_x>_lcd_maxx) { #asm("__lcd_putchar1:") ++_lcd_y; lcd_gotoxy(0,_lcd_y); #asm("brts __lcd_putchar0") }; #asm rcall __lcd_ready sbi __lcd_port,__lcd_rs ;RS=1 ld r26,y st -y,r26 rcall __lcd_write_data __lcd_putchar0: pop r31 pop r30 #endasm } #pragma keep-
// write the string str located in SRAM to the LCD void lcd_puts(char *str) { char k; while (k = *str++) lcd_putchar(k); }
// write the string str located in FLASH to the LCD void lcd_putsf(char flash *str) { char k; while (k = *str++) lcd_putchar(k); }
Мне надо LCD 16x2 на PB0-PB6 подключить к тине 2313, а PD, это я в качестве примера привёл. Но библиотека с версии 1.24, так как мне нужен русский на индикаторе.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения