Я не совсем уверен, что понимаю, в чем вопрос.
Вы не знакомы с программированием параллельного порта?
Моя память об этом туманна, но iirc это довольно просто. Это «тупой» интерфейс, поэтому вам просто нужно писать в него.
Если вы работаете под Linux, то есть несколько отличных ресурсов:
Драйверы устройств Linux: Глава 9: Обзор параллельного порта — немного рассказывает о программировании параллельного порта и продолжает говорить о написании драйверов устройств для него. Я думаю, что немного излишне для вашего приложения, но вся книга увлекательна и поучительна.
Программирование портов ввода-вывода в Linux — по сути, вы можно писать в /dev/port или включить asm/io.h и использовать inb() и outb() (я давно этого не делал, но уверен, что если вы столкнетесь с конкретной проблемой, будет множество ответов там, как только вы сузили его до чего-то конкретного)
Если вы используете Windows или Mac, то id по-прежнему предлагает прочитать вышеизложенное, чтобы вы знали, что вы пытаетесь сделать, на мой взгляд, они просты, а затем найдите эквивалент Windows / Mac.
Теперь о том, что я предполагаю, суть вопроса в том, что вы пишете в порты?
Для Cyber 310 у вас есть раскладки выводов, хотя кажется, что существует несколько разных раскладок выводов, если вы просматриваете указанный вами сайт и если мы следуем anf.nildram.co.uk здесь мы можем найти сборку PIC, которая покажет нам, как вращать базу .
До сегодняшнего дня я никогда не занимался сборкой PIC, но с некоторой помощью из интернета и комментариев , я думаю, мы можем перевести то, что это пытается сделать (вырезана соответствующая часть, так как большая часть это синхронизация и зацикливание)
; 6: Symbol prf = PORTA.0
; The address of 'prf' is 0x5,0
; 7: Symbol strobe = PORTA.1
; The address of 'strobe' is 0x5,1
; 8: Symbol base = PORTB.0
; The address of 'base' is 0x6,0
; 9: Symbol shoulder = PORTB.1
; The address of 'shoulder' is 0x6,1
...
; 16: main:
L0001:
; 17: base = 1
BSF 0x06,0 // set bit 0 at 0x06 to 1 essentially set base bit to 1
; 18: strobe = 1
BSF 0x05,1 // set strobe bit to 1
; 19: strobe = 0
BCF 0x05,1 // set strobe bit to 0
; 20: While a <> 730 // now we loop 729 more times
Таким образом, с моей наивной точки зрения кажется, что для вращения руки вам нужно установить биты двигателя (взятые из вашей распиновки), а затем установить и очистить стробоскоп.
Дайте мне знать, если я полностью ошибаюсь, это увлекательный проект.
person
Chris
schedule
04.04.2012