|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:37 am
ASCII to Binary 16F628A MPLAB
| Автор |
Съобщение |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 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 |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 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 |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: ASCII to Binary 16F628A MPLAB
Правилно си ме разбрал но ми трябва на асеблер за пик и после да го мина в бинари. Изясни ми се принципа за което благодаря. Наистина на асемблер за пик си е мъка. Не съм се занимавал с други езици но май е вече крайно време да го направя.
|
| Вто Юни 10, 2014 11:08 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: ASCII to Binary 16F628A MPLAB
направи го, докато е време  . Ако ще го правиш на асемблер - търси из форумите за ПИК. Има ценни неща. Иначе на Ц си е предполагам тривиално. Ако си мислиш да предадеш '1','2','3' от компютърна клавиатура през терминална програма - помисли си пак, как точно ще го правиш. Трябва да имаш някакъв уникален байт за начало на пакет, вторият байт да показва какво ще се предава- команда за светване 'А', команда за угасяне 'В', сила/стойност на нещо си 'С' . Следват символи. например '1','2','3' - в зависимост от байта но командата. После е добре да има някакъв символ за контролна сума. Накрая някакъв уникален байт за край на пакета.
|
| Вто Юни 10, 2014 11:48 am |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: ASCII to Binary 16F628A MPLAB
Ако си мислиш да предадеш '1','2','3'
Точно това правя за да заредя клетките но немога да го обединя в една клетка като стойност C1 ; да е 123
|
| Вто Юни 10, 2014 2:23 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: ASCII to Binary 16F628A MPLAB
Ако не е някаква курсова задача, купи си от ebay едно ардуино и пробвай с него да го направиш.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Юни 10, 2014 2:41 pm |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 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
_________________
|
| Вто Юни 10, 2014 6:58 pm |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 Re: ASCII to Binary 16F628A MPLAB
Няма какво толкоз да се чудиш. Ей ти на псевдо код написано какво трябва да направиш Имай в предвид, че това ще работи за числа до 255.
|
| Вто Юни 10, 2014 7:46 pm |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: ASCII to Binary 16F628A MPLAB
Мерси но на линка е организирано с таблица а именно това е замисъла да избягам от таблицата и да ги подавам директно понеже има много комбинации. Просто ми трябва от 3 клетки с отделни числа да ги обединя в едно число. Стефан63 много точно го написа но нещо не мога да го мина на асемблер за пик. Иначе идеята ми е реализирана почти до края но запецнах тука а именно това са 15 бр. 74HC594 резделени на групи и когато се извика определена група да се включи желаната комбинация на пиновете, а тя е от 0 до 255 за всяка група. Умишлено съм избягал от матрици в случай че някой ми предложи. 
|
| Вто Юни 10, 2014 7:59 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 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 |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: ASCII to Binary 16F628A MPLAB
Незнам къде бъркам но нещо не ми се получава. Направих го на отделен проект и си поиграх но пак не ми се получава.Луднах 
|
| Сря Юни 11, 2014 1:12 am |
|
 |
|
michev
Ранг: Форумен бог
Регистриран на: Сря Юли 11, 2007 10:16 am Мнения: 1730
|
 Re: ASCII to Binary 16F628A MPLAB
stefan63, що вадиш '0' от числата? Нали трябва да се получи бинарно число? Входните му данни до колкото разбирам са бинарни числа, записани в 3 отделни байта.. timt, ако пуснеш код, вероятно ще имаш по - голям шанс някой да отгатне къде е сгрешено 
|
| Сря Юни 11, 2014 2:00 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: ASCII to Binary 16F628A MPLAB
Предположих че числата идват от обикновена терминална програма, на клавиатурата нулата е =='0'. timt да пусне кода.
|
| Сря Юни 11, 2014 6:51 am |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: ASCII to Binary 16F628A MPLAB
Махнах повечето работи но това ми е проблемният момент. Не знам защо не ми се получава пробвах каквото намерих в нета и все тая. 
|
| Сря Юни 11, 2014 10:18 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 4 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|