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

Как да пренасочвам портове
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=9590
Страница 1 от 1

Автор:  me40 [ Чет Дек 08, 2011 1:00 pm ]
Заглавие:  Как да пренасочвам портове

Искам да запитам на асемблер как мога да разменя изходи на микроконтролер.
Вероятно не се изразявам точно , затова ще дам пример:

Ако portB0,1,2 са изходи и изпълня командата:
movlw 0x6
movwf PORTB
Ще имам на PORTB0 лог.0, на PORTB1 лог.1 и на PORTB2 лог.1

Въпроса е как примерно PORTB1 и PORTB2 да ги пренасоча към PORTD 5 и 6.
т.е винаги когато трябва да излиза на PORTB1 i 2 да излиза на PORTD 5 и 6.
Или на кратко PORTB да е съставен от PORTB0, PORTD5 и PORTD6

Дано съм успял да обясня какво искам

Автор:  tolstolob [ Чет Дек 08, 2011 3:43 pm ]
Заглавие:  Re: Как да пренасочвам портове

Няма такъв филм. Всеки порт се пише поотделно, във всеки каквото трябва.

Автор:  CarBeta [ Чет Дек 08, 2011 6:14 pm ]
Заглавие:  Re: Как да пренасочвам портове

Значи вместо в PortB резултата го записваш в един регистър(TempB). От тоя регистър искаш bit 0 да отиде на PortB,0, bit 1 да отиде на PortD,5 а bit 3 да отиде на PortD,6. Ето ти решение, при като останалите битове в двата порта няма да бъдат засегнати.

Код:
   MOVLW    0x06             ;B'00000110'
   MOVWF    TempB

   MOVLW    B'00000001'      ;маска
   ANDWF    TempB, W         ;взимаш само bit0
   IORWF    PORTB,F          ;и го записваш в PORTB,0
   MOVF     TempB, W         ;
   SWAPF    TempB, F         ;bit2 отива на bit6 а bit1 отива на bit5
   MOVLW    B'01100000'      ;маска
   ANDWF    TempB, W         ;взимаш bit6 и bit5
   IORWF    PORTD, F         ;и ги записваш в PORTD,6 и PORTD,5

Автор:  Wise [ Чет Дек 08, 2011 6:33 pm ]
Заглавие:  Re: Как да пренасочвам портове

Ако идеята ти е да става едновременно сетването на битове по различни портове - няма как да стане.

Автор:  michev [ Чет Дек 08, 2011 7:24 pm ]
Заглавие:  Re: Как да пренасочвам портове

Това което искаш го има реализирано хардуерно в Atxmega контролерите.
Нарича се virtualPort, който го "мапваш" към някой реален такъв.
За пик не съм виждал подобно нещо.

Автор:  me40 [ Чет Дек 08, 2011 9:52 pm ]
Заглавие:  Re: Как да пренасочвам портове

Точно начина, който е описал CarBeta ми върши работа.
Елементарно, но как не се сетих
Аз мислех че трябва още при инициализацията да дефинирам разни сложнотии.....нещо се обърках
Благодаря на всички отговорили

Автор:  Nenko [ Вто Дек 13, 2011 6:48 pm ]
Заглавие:  Re: Как да пренасочвам портове

ако половината изводи са ми входове а другата половина изходи, мога ли да използвам горния пример за да сканирам двуичния код само на входовете. мисля да свържа бутони които дават ниско ниво на определени изводи също като при двуичния код - 1-0001, 2-0010,3-0011,4-0100 и т.н.

Автор:  ike [ Вто Дек 13, 2011 6:56 pm ]
Заглавие:  Re: Как да пренасочвам портове

Ако те разбирам правилно, ще имаш хххх 1110 за бутон 1, хххх 1101 за бутон 2, хххх 1011 за бутон 3 и хххх 0111 за бутон 4.

Автор:  Cekins [ Вто Дек 13, 2011 9:39 pm ]
Заглавие:  Re: Как да пренасочвам портове

Nenko, зарежи малко питането във форума и се върни към четенето на книжки. Освен това се пише двОичен.
А ако искаш да направиш точно това което си написал ще ти трябва 74LS148 която идея си нямам отде можеш да я намериш. Отделно вече четенето на портовете...

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