реклама на сайте
подробности

 
 
> очень нужна помощь с пиком
Mari-999
сообщение Oct 31 2006, 20:07
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



помогите, пожалуйста с пиком 16f84А, лаба заключается в следующем на любой вывод подключить светодиод, когда 0 светодид горит - 2 секунды, когда 1 светодиод не горит 1 секунду...и так цикл, прогу надо написать на ассемблере, и подробно опишите пожалуйста, чтоб разобраться, спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
napper
сообщение Nov 6 2006, 15:58
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Действительно непонятно: если на ноге 0, то светодиод как раз светиться и НЕ будет!
Go to the top of the page
 
+Quote Post
napper
сообщение Nov 10 2006, 20:36
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Я думаю подпрограмму мигания надо организовать вот так:
Код
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 в начале программы!!!
Go to the top of the page
 
+Quote Post
Mari-999
сообщение Nov 14 2006, 12:31
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



[quote name='napper' date='Nov 10 2006, 23:36' post='174600']
Я думаю подпрограмму мигания надо организовать вот так:
Код
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]
не работает даже не компилиться
Go to the top of the page
 
+Quote Post
napper
сообщение Nov 14 2006, 13:07
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Цитата(Mari-999 @ Nov 14 2006, 15:31) *
не работает даже не компилиться

Читайте внимательнее, это ПОДпрограмма!
Замените в своей программе, начиная с метки R1_VD2M на мою.
Go to the top of the page
 
+Quote Post
Mari-999
сообщение Nov 14 2006, 13:52
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



Цитата(napper @ Nov 14 2006, 16:07) *
Цитата(Mari-999 @ Nov 14 2006, 15:31) *

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

Читайте внимательнее, это ПОДпрограмма!
Замените в своей программе, начиная с метки R1_VD2M на мою.

Да, именно так и сделала (это то я поняла конечно, что это подпрограмма smile.gif ), заменила, она не работает и ругаеться на строчки MOVLW 0x09 и GOTO V0
Go to the top of the page
 
+Quote Post
napper
сообщение Nov 14 2006, 19:06
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Полная версия программы:
Код
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

О результатах сообщите
Go to the top of the page
 
+Quote Post
Mari-999
сообщение Nov 16 2006, 04:15
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



Цитата(napper @ Nov 14 2006, 22:06) *
О результатах сообщите

не работает две ошибки
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Nov 16 2006, 05:20
Сообщение #9


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(Mari-999 @ Nov 16 2006, 07:15) *
не работает две ошибки

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


--------------------
شامل
Go to the top of the page
 
+Quote Post
napper
сообщение Nov 16 2006, 05:39
Сообщение #10


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Цитата(Mari-999 @ Nov 16 2006, 07:15) *
не работает две ошибки

Давайте разбираться. Что пишет компилятор, на что ругается?
Цитата(Edmundo @ Nov 16 2006, 08:20) *
Небось, компиляторы разные... В чем компилируете?

А причем здесь компилятор? Вроде это стандартный ассемблер для PICов...
Go to the top of the page
 
+Quote Post
Mari-999
сообщение Nov 16 2006, 06:53
Сообщение #11


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



Цитата(napper @ Nov 16 2006, 08:39) *
Цитата(Mari-999 @ Nov 16 2006, 07:15) *
не работает две ошибки

Давайте разбираться. Что пишет компилятор, на что ругается?
Цитата(Edmundo @ Nov 16 2006, 08:20) *
Небось, компиляторы разные... В чем компилируете?

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

MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю
Go to the top of the page
 
+Quote Post
napper
сообщение Nov 16 2006, 07:46
Сообщение #12


Участник
*

Группа: Новичок
Сообщений: 36
Регистрация: 26-10-06
Из: Волгоград
Пользователь №: 21 685



Цитата(Mari-999 @ Nov 16 2006, 09:53) *
MPASM выдает 5 ошибок, одну нашла не объявлена переменная COUNT, остальные не знаю

Что за ошибки? Я же не ясновидящий!.. Скопируйте их сюда
Go to the top of the page
 
+Quote Post
Mari-999
сообщение Nov 19 2006, 07:06
Сообщение #13


Участник
*

Группа: Новичок
Сообщений: 16
Регистрация: 14-01-06
Пользователь №: 13 171



Цитата(napper @ Nov 16 2006, 10:46) *
Цитата(Mari-999 @ Nov 16 2006, 09:53) *

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

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

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

Сообщение отредактировал Mari-999 - Nov 19 2006, 07:08
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Nov 19 2006, 11:51
Сообщение #14


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(Mari-999 @ Nov 19 2006, 10:06) *
У нас mpasmwin, он когда переводишь в hex выдает 5 ошибок, одну нашла не обьявлена перем.count, осталось три, он не указывает какие, но когда комментируешь те две строки MOVLW 0x09 и GOTO V0,
он выдает 0 ошибок, я посмотрела, но так прога не работает

5 - 1 = 3, интересная арифметика...

2napper, сорри что влезаю smile.gif, но может быть так...

1. Объявите переменную COUNT, она там действительно не объявлена.
2. Переименуйте метку V0 во что-нибудь не буквенно-цифровое, например VZERO, и поставьте соответственно GOTO VZERO


--------------------
شامل
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mari-999   очень нужна помощь с пиком   Oct 31 2006, 20:07
- - Herz   Цитата(Mari-999 @ Oct 31 2006, 22:07...   Nov 1 2006, 06:24
- - napper   Цитата(Mari-999 @ Nov 1 2006, 00:07)...   Nov 4 2006, 22:38
|- - upc2   Цитата(napper @ Nov 5 2006, 01:38) [ Что ...   Nov 6 2006, 05:29
- - napper   Схема то хоть такая?   Nov 6 2006, 12:27
|- - upc2   Цитата(napper @ Nov 6 2006, 15:27) Схема ...   Nov 6 2006, 14:03
|- - upc2   Цитата(napper @ Nov 6 2006, 18:58) Действ...   Nov 7 2006, 05:25
||- - napper   Цитата(Edmundo @ Nov 19 2006, 14:51) 5 - ...   Nov 19 2006, 15:01
|- - Edmundo   Цитата(napper @ Nov 16 2006, 08:39) А при...   Nov 16 2006, 09:23
- - napper   Условий Вашей задачи я не знаю, поэтому генератор ...   Nov 7 2006, 16:14
|- - Edmundo   Цитата(napper @ Nov 7 2006, 19:14) Е-мое,...   Nov 9 2006, 09:35
- - upc2   napper Написана Си и компилятор выдал аsm- файл.Дл...   Nov 8 2006, 05:34
|- - napper   Цитата(upc2 @ Nov 8 2006, 08:34) napper Н...   Nov 8 2006, 05:42
|- - Mari-999   Цитата(napper @ Nov 8 2006, 08:42) Цитата...   Nov 10 2006, 19:39
|- - napper   КодLIST p=16F84 INTCON EQU 0x0B OPTION EQU ...   Nov 10 2006, 20:23
|- - dosikus   Цитата(Mari-999 @ Nov 10 2006, 22:39...   Nov 11 2006, 09:57
|- - Mari-999   Цитата(dosikus @ Nov 11 2006, 12:57) Цита...   Nov 11 2006, 22:43
- - upc2   Тогда приношу свои извинения. Куда делся автор не ...   Nov 8 2006, 06:10
- - upc2   MPASM старенький компилятор. Пора переходить на MP...   Nov 16 2006, 09:38
- - MariSev   Цитата(Mari-999 @ Oct 31 2006, 20:07...   Nov 21 2006, 21:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01524 секунд с 7
ELECTRONIX ©2004-2016