18.03.2011, 22:49
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от omercury
|
Можно же менять SP-2.
|
То есть оно на стеке так и останется ?
Сообщение от omercury
|
Да стек сразу и предложил - никто же не слушает. Думал глупость сморозил - удалил сообщение.
|
Предложил передавать в функцию через стек.
Здесь то нафига ? Компиллер и так передает через аккумулятор .
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 18.03.2011 в 22:53.
|
|
|
|
18.03.2011, 22:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
После выхода вынимать. Или указатель.
|
|
|
|
18.03.2011, 22:54
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от omercury
|
После выхода вынимать. Или указатель.
|
Именно здесь лишние телодвижения -› падает скорость.
__________________
Осторожно , злой кот
|
|
|
|
18.03.2011, 23:00
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от omercury
|
Или указатель
|
Указатель и не через стек можно передать :
Код:
|
lcd_putstr("Hello World!");
extern unsigned char * _lcd_putstr(unsigned char *str); |
;
Код:
|
функция вывода на экран Z-строки со смещением курсора
; параметры: адрес выводимой строки (слово) - через X
; изменяет регистры A, X, CC
; возвращает в X-адрес байта=0 в строке
; unsigned int _lcd_putstr(unsigned char *s)
xdef __lcd_putstr
__lcd_putstr:
ld A,(X) ; берем очередной символ строки
tnz A ; ноль?
jreq _lcd_putstr_1 ; да - на выход
call __lcd_putchar ; выводим символ
incw X ; смещаем указатель к следующему символу
jra __lcd_putstr ; продолжение цикла вывода
_lcd_putstr_1:
ret |
__________________
Осторожно , злой кот
|
|
|
|
18.03.2011, 23:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от Bill
|
Наверное, можно чуток код упростить
Код:
|
PUSH #8
1$: SLA A
BCCM PORTC,#6
BSET PORTC,#5
BRES PORTC,#5
DEC (1,SP)
JRNE 1$
POP A |
Или нет?
|
А в чём разница-то. Не пойму что-то...
Сообщение от dosikus
|
Указатель и не через стек можно передать :
|
И где я предлагал указатель передавать через стек?
Сообщение от omercury
|
А может имеет смысл передавать глобальную переменную-указатель на данные?
|
Последний раз редактировалось omercury; 18.03.2011 в 23:04.
|
|
|
|
18.03.2011, 23:05
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
omercury, Вы говорите о передаче параметров через стек из модуля в модуль .
Здесь операция со стеком внутри функции .
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 18.03.2011 в 23:07.
|
|
|
|
18.03.2011, 23:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
dosikus, зачем такие телодвижения? Есть специальная команда для этой цели. Автоматом сдвигает.
Да какая разница, до или после в стек забрасывать? PUSH/POP одинаковое количество тактов едят в любом месте.
Последний раз редактировалось omercury; 18.03.2011 в 23:09.
|
|
|
|
18.03.2011, 23:09
|
|
Гражданин KAZUS.RU
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 341 раз(а) в 202 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от dosikus
|
Код:
|
ld A,(X) ; берем очередной символ строки
tnz A ; ноль? |
|
Ну так, опять же, лишние телодвижения. Вторая инструкция здесь явно лишняя. Или нет?
|
|
|
|
18.03.2011, 23:13
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
omercury, Гы ...
Так это не то . Вы привели пример сдвига строки на HD44780, уже записаной в него .
А в том примере вывод строки .
Сообщение от Bill
|
Ну так, опять же, лишние телодвижения. Вторая инструкция здесь явно лишняя. Или нет?
|
Эт не мое . Тупо скопипастил чужой исходник.
Вы как всегда правы..
__________________
Осторожно , злой кот
|
|
|
|
18.03.2011, 23:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от dosikus
|
Вы
|
вроде же договорились.
Сообщение от dosikus
|
пример сдвига строки на HD44780, уже записаной в него .
|
Нет. Это сдвиг адреса курсора/знакоместа при обращении к памяти.
Последний раз редактировалось omercury; 19.03.2011 в 00:20.
Причина: файлик забыл.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:53.
|
|