Отговори на тема  [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща
ASCII to Binary 16F628A MPLAB 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение ASCII to Binary 16F628A MPLAB
През UART MOVF RCREG,W на PIC16F628A зареждам клетките със съответно 123 или :

MOVWF B0 ;1
MOVWF B1 ;2
MOVWF B2 ;3

Клетка C1 да е .123

Да получа съответно 123 но ми трябва да го мина в бинари B’10000000’
Примерно MOVLW C1 ; да е B’10000000’ или съответно при резултат 001 да е B’00000001’
Нещо зациклих и незнам как да го направя.
Моля за помощ.


Вто Юни 10, 2014 1:21 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: ASCII to Binary 16F628A MPLAB
Ти доста си зациклил , щото и аз нищо не ти разбрах.
Ако искаш да получиш три ASCI цифри '1','2','3' и да ги сведеш до еднобайтовото число 123 в променлива X
ram1='1';ram2='2';ram3='3'; ;АААА
ram1=ram1 - '0' ;ram2=ram2-'0'; ram3=ram3-'0' ;ББББ
ram1=ram1 * 100; ram2=ram2*10;
x=ram1+ram2+ram3.
Това е в твоя частен случай.

Или си е - преобразуване на стринг (АААА) или непакетиран BCD (ББББ) в интежер.
Което на асемблер за ПИК си е мъка, разбира се.


Вто Юни 10, 2014 6:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Правилно си ме разбрал но ми трябва на асеблер за пик и после да го мина в бинари.
Изясни ми се принципа за което благодаря. Наистина на асемблер за пик си е мъка. Не съм се занимавал с други езици но май е вече крайно време да го направя.


Вто Юни 10, 2014 11:08 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: ASCII to Binary 16F628A MPLAB
Цитат:
Не съм се занимавал с други езици но май е вече крайно време да го направя.

направи го, докато е време :-).

Ако ще го правиш на асемблер - търси из форумите за ПИК. Има ценни неща.
Иначе на Ц си е предполагам тривиално.

Ако си мислиш да предадеш '1','2','3' от компютърна клавиатура през терминална програма - помисли си пак, как точно ще го правиш. Трябва да имаш някакъв уникален байт за начало на пакет, вторият байт да показва какво ще се предава- команда за светване 'А', команда за угасяне 'В', сила/стойност на нещо си 'С' . Следват символи. например '1','2','3' - в зависимост от байта но командата. После е добре да има някакъв символ за контролна сума. Накрая някакъв уникален байт за край на пакета.


Вто Юни 10, 2014 11:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Ако си мислиш да предадеш '1','2','3'

Точно това правя за да заредя клетките но немога да го обединя в една клетка като стойност C1 ; да е 123


Вто Юни 10, 2014 2:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: ASCII to Binary 16F628A MPLAB
Ако не е някаква курсова задача, купи си от ebay едно ардуино и пробвай с него да го направиш.

_________________
Warriors of the Night, ASSEMBLER!!!


Вто Юни 10, 2014 2:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Не е курсов проект и най гадното е че съм го правил и сега не се сещам как ставаше, и къде съм го дянал да го видя.
нещо от този род беше:
MOVF B0,B1
MOVF B1,B2
MOVF B2,PByte
movwf PByte


Вто Юни 10, 2014 3:25 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Май 27, 2011 8:25 am
Мнения: 134
Местоположение: Силистра
Мнение Re: ASCII to Binary 16F628A MPLAB
http://www.piclist.com/techref/piclist/cheapic/shotmr0.htm

http://www.piclist.com/techref/microchip/routines.htm

заповядай :))))))

_________________
Изображение


Вто Юни 10, 2014 6:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: ASCII to Binary 16F628A MPLAB
timt написа:
Ако си мислиш да предадеш '1','2','3'

Точно това правя за да заредя клетките но немога да го обединя в една клетка като стойност C1 ; да е 123

Няма какво толкоз да се чудиш. Ей ти на псевдо код написано какво трябва да направиш
Код:
byte B0 = 1
byte B1 = 2
byte B2 = 3


byte C1 = B0 * 100 + B1 * 10 + B2



Имай в предвид, че това ще работи за числа до 255.


Вто Юни 10, 2014 7:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Мерси но на линка е организирано с таблица а именно това е замисъла да избягам от таблицата и да ги подавам директно понеже има много комбинации.
Просто ми трябва от 3 клетки с отделни числа да ги обединя в едно число.
Стефан63 много точно го написа но нещо не мога да го мина на асемблер за пик.
Иначе идеята ми е реализирана почти до края но запецнах тука а именно това са 15 бр. 74HC594 резделени на групи и когато се извика определена група да се включи желаната комбинация на пиновете, а тя е от 0 до 255 за всяка група. Умишлено съм избягал от матрици в случай че някой ми предложи. :)


Вто Юни 10, 2014 7:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: ASCII to Binary 16F628A MPLAB
Eй ти най старшия символ , сведен до цифра 0..9 и умножен по 100

movfw B1
sublw '0'
movwf B1
rlf B1,f ;x2 ; ротация , без да се ползва флага за пренос, ако няма- bsf STATUS,C
rlf B1,w ;x4
movwf X
movwf B1
rlf B1,f ;x8
rlf B1,f ;x16
rlf B1,f ;x32
movfw B1
addwf X,f ;x==B1*4+B1*32
rlf B1,w ;x64
addwf X,f ;X=B1*4+B1*32+B1*64==b1*100

;десетиците
movfw B2
sublw '0'
movwf B2
rlf B2,f ;x2
movfw B2
addwf X,f ;X=B1*100+b2*2
rlf B2,f ;*4
rlf B2,w ;*8
addwf X,f ;X=b1*100+b2*2+b2*8=b1*100+b2*10

;единиците
movfw B3
sublw '0'
addwf X ;x=x+b3
==============
SUBLW '0' e изваждане на 0х30 от W, Може и да се бъркам и коректното да е
movlw '0'
subwf B1,f.

Под RLF се разбира ротация без да участва C флага. Ако няма такава инструкция, а само ротация през флага - преди RLF трябва да има инструкция
за нулиране на флага. Мнемониките са за 12ф509, колкото си ги спомням.

Това е най калпавата програма , която съм писал , ак не изобщо- поне днес.

:-)


Вто Юни 10, 2014 8:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Незнам къде бъркам но нещо не ми се получава. Направих го на отделен проект и си поиграх но пак не ми се получава.Луднах 8O


Сря Юни 11, 2014 1:12 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: ASCII to Binary 16F628A MPLAB
stefan63, що вадиш '0' от числата? Нали трябва да се получи бинарно число? Входните му данни до колкото разбирам са бинарни числа, записани в 3 отделни байта..
timt, ако пуснеш код, вероятно ще имаш по - голям шанс някой да отгатне къде е сгрешено :)


Сря Юни 11, 2014 2:00 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: ASCII to Binary 16F628A MPLAB
Предположих че числата идват от обикновена терминална програма,
на клавиатурата нулата е =='0'. timt да пусне кода.


Сря Юни 11, 2014 6:51 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: ASCII to Binary 16F628A MPLAB
Махнах повечето работи но това ми е проблемният момент.
Не знам защо не ми се получава пробвах каквото намерих в нета и все тая. :cry:


Прикачени файлове:
forum.rar [22.14 KiB]
222 пъти
Сря Юни 11, 2014 10:18 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни