Отговори на тема  [ 61 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5
Безкраина врътка 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Неразгледах кода на Ц, но ще дам код на асемблер за ПИК18Ф, който работи със сигурност.
EncoderRoutine:
movf PORTB,W
movwf TempRegister1
xorwf ENCODER_BIT_BUFFER,W
andlw B'11000000' ; проверка за промяна на входовете
skpnz
return

clrc
rrcf ENCODER_BIT_BUFFER,F
clrc
rrcf ENCODER_BIT_BUFFER,F

movf TempRegister1,W
andlw B'11000000'
iorwf ENCODER_BIT_BUFFER,F
movf ENCODER_BIT_BUFFER,W ; запис на новото състояние на входовете
xorlw B'11100001'
bz Encoder_Rotate_Right
movf ENCODER_BIT_BUFFER,W
xorlw B'11010010'
bz Encoder_Rotate_Left
return
Encoder_Rotate_Left:
movf InterfaceSTATUS,W
andlw B'11110000'
xorlw B'10000000'
movlw B'00010000'
skpz
subwf InterfaceSTATUS,F
return
Encoder_Rotate_Right:
movf InterfaceSTATUS,W
andlw B'11110000'
xorlw B'01110000'
movlw B'00010000'
skpz
addwf InterfaceSTATUS,F
return

Програмката се вика на всяка 1мс, и проверява 6,7 пин на ПОРТБ, ако има промяна новото състояние се записва в шивт буфера ENCODER_BIT_BUFFER, и се проверява съдържанието на буфера: ако е B'11100001' имаме врътка в едната посока, ако е B'11010010' съответно в другата посока.


Съб Ное 26, 2005 2:02 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 61 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 9 госта


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

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