Перейти к содержанию
    

Михалыч

Свой
  • Постов

    189
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Михалыч


  1. Сделать не прерывая основной цикл задержку можно например увеличивая в обработчике таймера какую-нибудь переменную. Переменными размером 16, 32 и так далее бит задержки можно сделать длительностью хоть в год! :-)

    Вот, давайте этот вопрос давить будем. Не совсем понятно, о чем речь :smile3046:

  2. Вот выкладываю. Если что-то непонятно, спрашивайте!

     

    ORG 0 ;Начало программы.

    GOTO BEGIN

    ORG 0x04

    BCF INTCON,5

    INCF INTCOUNT,1

    MOVF INTCOUNT,0

    SUBLW 0x15

    BTFSC STATUS,C

    CLRF INTCOUNT

     

    INTERR1 BTFSS WIRE,6

    GOTO INTERR2

    BCF PORTA,0

    BCF PORTA,1

    BCF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,1

    BSF PORTA,3

    BCF PORTB,7

     

    INTERR2 BTFSS WIRE,5

    GOTO INTERR3

    BCF PORTA,0

    BCF PORTA,1

    BCF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,2

    BSF PORTA,3

    BCF PORTB,7

     

    INTERR3 BTFSS WIRE,0

    GOTO INTERR4

    BTFSS WIRE,2

    GOTO INTERR4

    BCF PORTA,0

    BCF PORTA,1

    BCF PORTA,2

    BSF PORTA,3

    SUBLW 0x04 ;0,5 с=1, 2 с=0

    BTFSC STATUS,C

    BCF PORTA,3

    BCF PORTB,7

     

    INTERR4 BTFSS WIRE,1

    GOTO INTERR5

    BTFSS WIRE,2

    GOTO INTERR5

    BSF PORTA,0

    BSF PORTA,1

    BCF PORTA,2

    BSF PORTA,3

    BCF PORTB,7

     

    INTERR5 BTFSS WIRE,2

    GOTO INTERR6

    BCF PORTA,0

    BTFSC INTCOUNT,3 ;0,5 Гц

    BSF PORTA,0

    BCF PORTA,1

    MOVF INTCOUNT,0 ;2с=1, 1с=0

    BSF PORTA,2

    SUBLW 0x10

    BTFSC STATUS,C

    BCF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,3

    BSF PORTA,3

    BCF PORTB,7

    BTFSC INTCOUNT,3

    BSF PORTB,7

     

    INTERR6 BTFSS WIRE,3

    GOTO INTERR7

    BCF PORTA,0

    BTFSC INTCOUNT,3

    BSF PORTA,0

    BCF PORTA,1

    BSF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,3

    BSF PORTA,3

    BCF PORTB,7

    BTFSC INTCOUNT,3

    BSF PORTB,7

     

    INTERR7 BTFSS WIRE,7

    GOTO INTERR8

    MOVF INTCOUNT,0

    BSF PORTA,0

    SUBLW 0x5

    BTFSC STATUS,C

    BCF PORTA,0

    BSF PORTA,1

    MOVF INTCOUNT,0 ;1с=1, 2с=0

    BSF PORTA,3

    SUBLW 0x5

    BTFSC STATUS,C

    BCF PORTA,3

     

    INTERR8 BTFSS WIRE,1

    GOTO INTERR9

    BTFSS WIRE,0

    GOTO INTERR9

    BCF PORTA,0

    BTFSC INTCOUNT,2

    BSF PORTA,0

    BCF PORTA,1

    BCF PORTA,2

    BTFSC INTCOUNT,3

    BSF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,2

    BSF PORTA,3

    BCF PORTB,7

    BTFSC INTCOUNT,3

    BSF PORTB,7

     

    INTERR9 BTFSS WIRE,8

    GOTO INTERR1

    BCF PORTA,0

    BTFSC INTCOUNT,2

    BSF PORTA,0

    BCF PORTA,1

    BCF PORTA,2

    BCF PORTA,3

    BTFSC INTCOUNT,2

    BSF PORTA,3

    BCF PORTB,7

    BTFSC INTCOUNT,3

    BSF PORTB,7

    BSF INTCON,5

    RETFIE :)

  3. Народ, подскажите схемку бесперебойника на 12 В, чтобы управлялся с МК (контроль батареи, сети, заряд и пр.), желательно PIC какой-нить, мне его потом под RS-485 доработать надо будет. Кто собирал такое или видел?

  4. У меня уже лет 5 живет ЭПСН25/36, питание от трансформатора, регулятор самодельный. Не жалуюсь :) Еще цифровую индикацию присобачить - и юзай на здоровье! Для пайки SMD изготовил для него жала из толстой медной проволоки (1-2 мм), паяется хорошо.

    Если что-то ответственное, то паяю на работе ERS'ой.

    По поводу китайских паяльников - это про те, которые с деревянной ручкой? У меня был такой, недели две промаялся и выкинул. И жало не лудится, и ручка греется как жало :) если включить с утра до вечера. Мне очень не понравился :(

  5. Не, это я по-простому написал. Есть там INTCON, разрешение всех прерываний, сохранение констант и пр. Мне интересно, надо ли на прерывания ссылаться в программе (goto, call) или они сами выполняются?

  6. А вот в первом случае необходжимо всеголишь N кнопок и резисторов разных потенциалов, которые подключаются к аналоговым входам игрового порта (устроенно на принцйипе управления самой ручкой джостика) - вот и всё железо!

    Ребята, а можно про игровой порт поподробнее - где какие выводы, куда и что мона подавать? :a14:

  7. Кстати, да. С ПЛИСами лично я не работал, и вообще плохо их себе представляю. Лучше еще МК воткнуть и по одной линии качать в него данные ;) Ну ладно, у меня с дешифраторами идея хорошо прокатила :)

  8. Совершенно верно, вопрос про них, родимых.

    Давайте разберемся с прерываниями. Вот мы пишем

    ---------------------------------------------------------

    ORG 0 ;Начало программы.

    GOTO BEGIN ;Переход к основному циклу

     

    ORG 0x04 ;Начинаем прерывания

    ;Сама программа

    RETFIE ;Завершили прерывания

     

    BEGIN

    ;Инициализация портов

    ;Программа

    ----------------------------------------------------------------

    Чего где добавляем? Надо ли ссылаться на прерывания в самой программе?

  9. Народ, объясните, пожалуйста, в чем дело?!! Как работать с прерываниями и какие там есть тонкости? Вроде все по даташиту, прерывания разрешили, прописали и... программа умело их обходит. :(

    И как можно делать большие задержки? Например, надо запустить подпрограмму продолжительностью 10 с, не останавливая при этом основного цикла. Да и вообще, как организовать 1, 3, 5, 10-минутные задержки? :a14:

  10. Вполне понятно. Спасибо! :cheers:

    Еще один вопрос: какие команды используются для того, чтобы определить, в какой промежуток попадает значение? Просмотрел даташит ПИКов, но ничего подобного в явном виде не нашел. :smile3046:

  11. Ладно, попробую. Благодарю за совет, angir :)

    А насчет граничных значений поподробнее, пожалуйста. Откуда берутся шумы? Как с ними не мучиться?..

    И откуда вы взяли значения 102 и 153? Как это перевести в вольты и наоборот?

  12. Вот теперь разобрался, как настраивать и читать АЦП. Напряжение - от Agnd do Vпит. Возник другой вопрос. Предположим, что значение считано и записано в нужный регистр. Как его сравнить с нужными нам значениями? Например, 0...2 В - переход в один режим, 2...3 В - в другой, >3 В - в третий? Как выполнять преобразования?

  13. % от питания при наличии делителя напряжения на нужный диапазон — сколько влезет! Я при помощи единственного резистора на 2 МОм например детектор нуля в 220 вольт сети делал. :)

    Не, через резистор понятно дело, хоть все 380. А меня интересует без резистора. Напряжение меняется 0-5 В, можно напрямую или делитель? Питание, есеснно, 5-вольтовое. :)

    P.S. Сегодня начинаю прогу делать :w00t:

×
×
  • Создать...