Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

ASCII to Binary 16F628A MPLAB
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=12988
Страница 1 от 4

Автор:  timt [ Вто Юни 10, 2014 1:21 am ]
Заглавие:  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’
Нещо зациклих и незнам как да го направя.
Моля за помощ.

Автор:  stefan63 [ Вто Юни 10, 2014 6:46 am ]
Заглавие:  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 (ББББ) в интежер.
Което на асемблер за ПИК си е мъка, разбира се.

Автор:  timt [ Вто Юни 10, 2014 11:08 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Правилно си ме разбрал но ми трябва на асеблер за пик и после да го мина в бинари.
Изясни ми се принципа за което благодаря. Наистина на асемблер за пик си е мъка. Не съм се занимавал с други езици но май е вече крайно време да го направя.

Автор:  stefan63 [ Вто Юни 10, 2014 11:48 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Цитат:
Не съм се занимавал с други езици но май е вече крайно време да го направя.

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

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

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

Автор:  timt [ Вто Юни 10, 2014 2:23 pm ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Ако си мислиш да предадеш '1','2','3'

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

Автор:  ike [ Вто Юни 10, 2014 2:41 pm ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Ако не е някаква курсова задача, купи си от ebay едно ардуино и пробвай с него да го направиш.

Автор:  timt [ Вто Юни 10, 2014 3:25 pm ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Не е курсов проект и най гадното е че съм го правил и сега не се сещам как ставаше, и къде съм го дянал да го видя.
нещо от този род беше:
MOVF B0,B1
MOVF B1,B2
MOVF B2,PByte
movwf PByte

Автор:  Бай Ставри [ Вто Юни 10, 2014 6:58 pm ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

http://www.piclist.com/techref/piclist/cheapic/shotmr0.htm

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

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

Автор:  michev [ Вто Юни 10, 2014 7:46 pm ]
Заглавие:  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.

Автор:  timt [ Вто Юни 10, 2014 7:59 pm ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Мерси но на линка е организирано с таблица а именно това е замисъла да избягам от таблицата и да ги подавам директно понеже има много комбинации.
Просто ми трябва от 3 клетки с отделни числа да ги обединя в едно число.
Стефан63 много точно го написа но нещо не мога да го мина на асемблер за пик.
Иначе идеята ми е реализирана почти до края но запецнах тука а именно това са 15 бр. 74HC594 резделени на групи и когато се извика определена група да се включи желаната комбинация на пиновете, а тя е от 0 до 255 за всяка група. Умишлено съм избягал от матрици в случай че някой ми предложи. :)

Автор:  stefan63 [ Вто Юни 10, 2014 8:50 pm ]
Заглавие:  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, колкото си ги спомням.

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

:-)

Автор:  timt [ Сря Юни 11, 2014 1:12 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Незнам къде бъркам но нещо не ми се получава. Направих го на отделен проект и си поиграх но пак не ми се получава.Луднах 8O

Автор:  michev [ Сря Юни 11, 2014 2:00 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

stefan63, що вадиш '0' от числата? Нали трябва да се получи бинарно число? Входните му данни до колкото разбирам са бинарни числа, записани в 3 отделни байта..
timt, ако пуснеш код, вероятно ще имаш по - голям шанс някой да отгатне къде е сгрешено :)

Автор:  stefan63 [ Сря Юни 11, 2014 6:51 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Предположих че числата идват от обикновена терминална програма,
на клавиатурата нулата е =='0'. timt да пусне кода.

Автор:  timt [ Сря Юни 11, 2014 10:18 am ]
Заглавие:  Re: ASCII to Binary 16F628A MPLAB

Махнах повечето работи но това ми е проблемният момент.
Не знам защо не ми се получава пробвах каквото намерих в нета и все тая. :cry:

Прикачени файлове:
forum.rar [22.14 KiB]
222 пъти

Страница 1 от 4 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/