| Микроконтролери и електроника 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 | ||||||||||||||||||
Няма какво толкоз да се чудиш. Ей ти на псевдо код написано какво трябва да направиш
Имай в предвид, че това ще работи за числа до 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 |
Незнам къде бъркам но нещо не ми се получава. Направих го на отделен проект и си поиграх но пак не ми се получава.Луднах |
|
| Автор: | 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 | ||
Махнах повечето работи но това ми е проблемният момент. Не знам защо не ми се получава пробвах каквото намерих в нета и все тая.
|
|||
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|