Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.11.2008, 08:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
[quote="ua_gruzin"]Кодим "на лету"
[quote="ua_gruzin"]
Это ж пипец.... ну хто ВАС так учил?...
на лету кодим так!!!!..
код за 11 команд + 2 перехода при вызове и возврате.
[code]
recoderus:
cpi temp,$A0
brcs endrecoderus
ldi zl,low(tabrecoderus*2)
ldi zh,high(tabrecoderus*2)
subi temp,$A0
add zl,temp
brcc pc+2
inc zh
lpm
mov temp,tem
endrecoderus: ret
tabrecoderus: .db $00,$00 ;A0h
.db $00,$00
.db $00,$00
.db $00,$00
.db $A3,$00 ;Ё
.db $00,$00
.db $00,$00
.db $00,$00
.db $00,$00
.db $00,$00
.db $00,$00
.db $00,$00
.db $B5,$00 ;ё
.db $00,$00
.db $00,$00
.db $00,$00
.DB "A",$A0 ;АБ
.DB "B",$A1 ;ВГ
.DB $E0,"E" ;ДЕ
.DB $A3,$A4 ;ЖЗ
.db $A5,$A6 ;ИЙ
.db "K",$A7 ;КЛ
.db "M","H" ;МН
.db "O",$A8 ;ОП
.db "P","C" ;РС
.db "T",$A9 ;ТУ
.db $AA,"X" ;ФХ
.db $E1,$AB ;ЦЧ
.db $AC,$E2 ;ШЩ
.db $AD,$AE ;ЪЫ
.db $AD,$AF ;ЬЭ
.db $B0,$B1 ;ЮЯ
.db "a",$B2 ;аб
.db $B3,$B4 ;вг
.db $E3,"e" ;де
.db $B6,$B7 ;жз
.db $B8,$B9 ;ий
.db $BA,$BB ;кл
.db $BC,$BD ;мн
.db "o",$BE ;оп
.db "p","c" ;рс
.db $BF,"y" ;ту
.db $E4,"x" ;фх
.db $E5,$C0 ;цч
.db $C1,$E6 ;шщ
.db $C2,$C3 ;ъы
.db $C4,$C5 ;ьэ
.db $C6,$C7 ;юя
[code]
|
|
|
|
09.11.2008, 11:18
|
|
Вид на жительство
Регистрация: 11.12.2006
Сообщений: 317
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Да ну...
У меня щас явно проще.
Код:
|
;************************************************* ********************
; перекодируем с WIN в кодировку индикатора
;************************************************* ********************
convert_from_win_to_44780:
push ZL
push ZH
;-----------------------------------
cpi TEMP_A, 192
brlo shift_from_win_to_44780_exit
subi TEMP_A, 192
load_p Z,(2*LCD_Sybols)
add_to_word Z, TEMP_A
lpm TEMP_A, Z
;-----------------------------------
shift_from_win_to_44780_exit:
pop ZH
pop ZL
ret |
и
Код:
|
LCD_Sybols: ;192
.db 65,160,66,161,224,69,163,164,165,166,75,167,77,72,
79,168,80,67,84,169,228,88,225,171,172,226,173,174 ,
98,175,176,177,97,178,179,180,227,101,182,183,184, 185,
186,187,188,189,111,190,112,99,191,121,228,120,229 ,192,
193,230,194,195,196,197,198,199 |
Сколько тактов занимает... не щитал, но незаметно на 8Мгц вообще.
P.S. Код всегда можна написать лучше. Главное - идея
|
|
|
|
10.11.2008, 03:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от ua_gruzin
|
Да ну...
У меня щас явно проще.
|
практически одно и то же...
Отличия.
1) вместо brcc использовано brlo
2) команда грузит в Z регистр адрес таблицы (2 байта)
load_p Z,(2*LCD_Sybols)
такой асемблерной нет,и я так думаю, такая команда компилится в две асемблерных
ldi zl,low(2*LCD_Sybols)
ldi zh,high(2*LCD_Sybols)
3) команда добавляет содержимое регистра к паре регистров ZL,ZH.
add_to_word Z, TEMP_A
такой асемблерной нет. и я так думаю, такая команда компилится в три асемблерных
add zl,temp
brcc pc+2
inc zh
так что длина кода и работа идентичные. Только длина текста в програме меньше из за использования специфичных команд, которые компилируются в несколько кодовых.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Нужна сводная таблица PICов
|
tim18 |
Микроконтроллеры, АЦП, память и т.д |
4 |
25.03.2008 05:39 |
LCD на контроллере HD44780
|
yga |
Микроконтроллеры, АЦП, память и т.д |
8 |
03.12.2007 16:50 |
PIC16F84A и LCD HD44780
|
I_0 |
Микроконтроллеры, АЦП, память и т.д |
16 |
20.09.2006 12:06 |
вОПРРОС ПРО HD44780
|
sergunrussia |
Микроконтроллеры, АЦП, память и т.д |
7 |
26.08.2006 00:25 |
инициализация KS0066U (или HD44780).
|
xelos |
Микроконтроллеры, АЦП, память и т.д |
9 |
21.11.2004 13:06 |
Часовой пояс GMT +4, время: 12:22.
|
|