Для одной стендовой конструкции, при написании программы пришлось задействовать Т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, так как мне нужен русский на индикаторе.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения