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

очень нужна помощь с пиком

Я думаю подпрограмму мигания надо организовать вот так:

R1_VD2M                  ;подпрограмма мигания светодиода
   BTFSS     TEMPA,4       
   GOTO      V1          ;перейти на V1
   MOVLW     0x09
   MOVWF     COUNT      
;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК (ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 
;МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ), ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК
V0
   BSF       VD2         ;зажечь светодиод VD2
   MOVLW     0xF3        ;пересылка константы
                         ;H'F3' = .243 в W
   CALL      DELAY_E     ;вызов подпрограммы DELAY_E
   BCF       VD2         ; светодиод мигает
   MOVLW     0xF3        ;пересылка константы
                         ;H'F3' = .243 в W
   CALL      DELAY_E     ;вызов подпрограммы DELAY_E
   GOTO      V1          ;перейти на V1
   DECFSZ    COUNT,F
   GOTO      V0
V1
   BCF       VD2         ;
   RETURN                ;возврат из под программы

END

 

Надеюсь паузы в подпрограмме DELAY_E вы подобрали правильно

 

P.S. Не забудьте объявить переменную COUNT в начале программы!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а на RA1 (18 ножка) через резистор подключен диод, катодом в плюс питание.

 

Вы уверены?

Светодиод катодом к плюсу?

И чего вы ожидаете ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю подпрограмму мигания надо организовать вот так:

R1_VD2M                 ;подпрограмма мигания светодиода
   BTFSS     TEMPA,4       
   GOTO      V1         ;перейти на V1
   MOVLW     0x09
   MOVWF     COUNT      
;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК (ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 
;МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ), ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК
V0
   BSF       VD2        ;зажечь светодиод VD2
   MOVLW     0xF3    ;пересылка константы
                        ;H'F3' = .243 в W
   CALL      DELAY_E    ;вызов подпрограммы DELAY_E
   BCF       VD2        ; светодиод мигает
   MOVLW     0xF3    ;пересылка константы
                        ;H'F3' = .243 в W
   CALL      DELAY_E    ;вызов подпрограммы DELAY_E
   GOTO      V1         ;перейти на V1
   DECFSZ    COUNT,F
   GOTO      V0
V1
   BCF       VD2        ;
   RETURN            ;возврат из под программы

END

 

Надеюсь паузы в подпрограмме DELAY_E вы подобрали правильно

 

P.S. Не забудьте объявить переменную COUNT в начале программы!!!

[/quot]

не работает даже не компилиться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает даже не компилиться

Читайте внимательнее, это ПОДпрограмма!

Замените в своей программе, начиная с метки R1_VD2M на мою.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает даже не компилиться

Читайте внимательнее, это ПОДпрограмма!

Замените в своей программе, начиная с метки R1_VD2M на мою.

Да, именно так и сделала (это то я поняла конечно, что это подпрограмма :) ), заменила, она не работает и ругаеться на строчки MOVLW 0x09 и GOTO V0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полная версия программы:

LIST p=16F84
    INTCON    EQU    0x0B
    OPTION    EQU    0x81
    TMR0        EQU    0x01
    INTF        EQU    1
    T0IF        EQU    5
    PCL        EQU    0x02
    STATUS    EQU    0x03
    RP0        EQU    5
    PORTA        EQU    0x05
    PORTB        EQU    0x06
    TRISA        EQU    0x05
    TRISB        EQU    0x06
    W        EQU    0
    F        EQU    1
    TEMPA        EQU    0x0C
    TEMPB        EQU    0x0D
    COUNT1    EQU    0x0E
    COUNT2    EQU    0x0F

    #DEFINE    Z    STATUS,2;бит нулевого результата
    #DEFINE    VD2    PORTA,1;светодиод VD2
    #DEFINE    R1    PORTA,4;резистор

    ORG 0
INIT_PORTS            ;подпрограмма инициализации портов 
    BSF        STATUS,RP0;переход на банк 1
    MOVLW        0x1C    ;настройка линий RA0 и RA1 на вывод, другие на ввод
    MOVWF        TRISA
    MOVLW        0x01    ;настройка линии RB0 на ввод, другие на вывод  
    MOVWF        TRISB
    BCF        STATUS,RP0;возврат в банк 0
;
LOOP
    MOVF        PORTA,W;чтение состояния порта A в W
    MOVWF        TEMPA    ;пересылка W в TEMPA
    BTFSS        TEMPA,4
    GOTO        LOOP    ;перейти на LOOP
    MOVLW        0x09
    MOVWF        COUNT
;СЧЕТЧИК МИГАНИЙ 9 РАЗ ГОРИТ, 9 - НЕ ГОРИТ, ИТОГО 18 СЕК
;(ЧАСТОТА МИГАНИЙ 1 ГЕРЦ, ЗНАЧИТ 1 МИГАНИЕ/НЕМИГАНИЕ В СЕКУНДУ),
;ПОСЛЕДНЕЕ НЕМИГАНИЕ НЕ УЧИТЫВАЕМ - ПОЛУЧАЕМ 17 СЕК;-)
V0
    BSF        VD2    ;зажечь светодиод VD2
    MOVLW        0xF3    ;пересылка константы
                ;H'F3' = .243 в W
    CALL        DELAY_E;вызов подпрограммы DELAY_E
    BCF        VD2    ;светодиод мигает
    MOVLW        0xF3    ;пересылка константы
                ;H'F3' = .243 в W
    CALL        DELAY_E;вызов подпрограммы DELAY_E
    DECFSZ    COUNT,F
    GOTO        V0
    GOTO        LOOP    ;переход к метке LOOP

DELAY_E            ;подпрограмма формирования задержки

    MOVWF        COUNT2;загрузка W в регистр COUNT2
    CLRF        COUNT1;сброс содержимого регистра COUNT1
LOOPD
    NOP            ;пустая команда
    DECFSZ    COUNT1,F;декремент COUNT1
    GOTO        LOOPD    ;повторение цикла 256 раз
    DECFSZ    COUNT2,F;декремент COUNT2
    GOTO        LOOPD    ;повторение цикла
    RETURN        ;возврат из подпрограммы

END

О результатах сообщите

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает две ошибки

Небось, компиляторы разные... В чем компилируете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает две ошибки

Давайте разбираться. Что пишет компилятор, на что ругается?

Небось, компиляторы разные... В чем компилируете?

А причем здесь компилятор? Вроде это стандартный ассемблер для PICов...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не работает две ошибки

Давайте разбираться. Что пишет компилятор, на что ругается?

Небось, компиляторы разные... В чем компилируете?

А причем здесь компилятор? Вроде это стандартный ассемблер для PICов...

MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю

Что за ошибки? Я же не ясновидящий!.. Скопируйте их сюда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А причем здесь компилятор? Вроде это стандартный ассемблер для PICов...

Для PICов не знаю, но для других МК бывает. Синтаксис макросов в частности разный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MPASM старенький компилятор. Пора переходить на MPLAB или использовать

его MPASMWIN.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю

Что за ошибки? Я же не ясновидящий!.. Скопируйте их сюда

У нас mpasmwin, он когда переводишь в hex выдает 5 ошибок, одну нашла не обьявлена перем.count, осталось три, он не указывает какие, но когда комментируешь те две строки MOVLW 0x09 и GOTO V0,

он выдает 0 ошибок, я посмотрела, но так прога не работает

Изменено пользователем Mari-999

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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