|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:19 am
PIC как да сравня по голямо число с асемблер
| Автор |
Съобщение |
|
traqn_savov
Ранг: Новодошъл
Регистриран на: Чет Окт 01, 2009 8:50 am Мнения: 125 Местоположение: Varna
|
Всъщнос го разбрах, благодаря на онова генераторче на код мн ми помогна..
иначе кода е прост
Добре само остана да изведа и някакви числа..
Посъветвайте ме какво да ползвам за графично извеждане, лсд дисплей аз съм намислил нещо но все пак ще се падвам да чуя и вашите мнения..
_________________http://truna.freehosting.bg/
форум за механици..
"Любителска електроника" не означава скапана а означава с много любов правена..
Ако можеше да се съберат техническият отдел на atmel и маркетинговият отдел на microchip, ще се получи нещо велико.
|
| Чет Ное 11, 2010 10:40 am |
|
 |
|
optron
Ранг: Ориентиран
Регистриран на: Чет Ное 20, 2008 1:49 pm Мнения: 276 Местоположение: Бургас
|
Обичайно е добра идея да сложиш подпрограмка, която да бърбори с дисплея. За всеки тип дисплей си правиш отделна подпрограма, като на всичките имаш унифициран вход. По този начин, когато смениш дисплея, само сменяш подпрограмата и си готов.
_________________ Digitally yours: Optron
|
| Чет Ное 11, 2010 1:33 pm |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
не мога да разбера какъв е проблема за сравняването. няма инструкция, но пък може резултата от ваденето да остава в работния регистър, което е същото
|
| Чет Ное 11, 2010 6:28 pm |
|
 |
|
traqn_savov
Ранг: Новодошъл
Регистриран на: Чет Окт 01, 2009 8:50 am Мнения: 125 Местоположение: Varna
|
балшой проблем...
Не мога да обърна бинарната стойност която е в една клетка  в десетична, понеже десетичната стойност заема 2 или повече клетки.....
незнам дали ме разбрахте, може и аз да не го обеснявам добре...
Имам в клетка Н стойност 10110101 което е десетично число 181 тоест то е съставено от три числа
1 00000001
8 00001000
1 00000001
в буфера на графичното устройство трябва да запиша тези числа за да мога да ги изведа..
колеги хелп... 
_________________http://truna.freehosting.bg/
форум за механици..
"Любителска електроника" не означава скапана а означава с много любов правена..
Ако можеше да се съберат техническият отдел на atmel и маркетинговият отдел на microchip, ще се получи нещо велико.
|
| Нед Ное 21, 2010 11:09 am |
|
 |
|
CarBeta
Ранг: Форумен бог
Регистриран на: Пет Май 01, 2009 4:01 pm Мнения: 1438
|
Трябва ти функция, с която да конвертираш стойностите преди да ги пратиш на дисплея. Ето ти готов пример:
 |  |  |  | Код: ;******************************** ;binary_to_bcd - 8-bits ; ;Input ; bin - 8-bit binary number ; A1*16+A0 ;Outputs ; hundreds - the hundreds digit of the BCD conversion ; tens_and_ones - the tens and ones digits of the BCD conversion binary_to_bcd:
CLRF hundreds SWAPF bin, W ; swap the nibbles ADDWF bin, W ; so we can add the upper to the lower ANDLW B'00001111' ; lose the upper nibble (W is in BCD from now on) SKPNDC ; if we carried a one (upper + lower > 16) ADDLW 0x16 ; add 16 (the place value) (1s + 16 * 10s) SKPNDC ; did that cause a carry from the 1's place? ADDLW 0x06 ; if so, add the missing 6 (carry is only worth 10) ADDLW 0x06 ; fix max digit value by adding 6 SKPDC ; if was greater than 9, DC will be set ADDLW -0x06 ; if if it wasn't, get rid of that extra 6 BTFSC bin,4 ; 16's place ADDLW 0x16 - 1 + 0x6 ; add 16 - 1 and check for digit carry SKPDC ADDLW -0x06 ; if nothing carried, get rid of that 6 BTFSC bin, 5 ; 32nd's place ADDLW 0x30 ; add 32 - 2 BTFSC bin, 6 ; 64th's place ADDLW 0x60 ; add 64 - 4 BTFSC bin, 7 ; 128th's place ADDLW 0x20 ; add 128 - 8 % 100 ADDLW 0x60 ; has the 10's place overflowed? RLF hundreds, F ; pop carry in hundreds' LSB BTFSS hundreds, 0 ; if it hasn't ADDLW -0x60 ; get rid of that extra 60 MOVWF tens_and_ones ; save result BTFSC bin,7 ; remeber adding 28 - 8 for 128? INCF hundreds, F ; add the missing 100 if bit 7 is set RETURN ; all done! |  |  |  |  |
|
| Нед Ное 21, 2010 1:05 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|