Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
1

работа с PIC16F877

05.06.2009, 17:51. Просмотров 8807. Ответов 65
Метки нет (Все метки)

в общем мне нада сделать прерывание... тоисть када я буду нажимать на кнопку то по RB0/INT даст прерывание, в котором при каждом нажатии на кнопку будет ФЛАГ менятся с 0 на 1.... в основной программе мы смотрим если ФЛАГ =1 то бегущая строка диодов бежит в одну сторону.... если ФЛАГ =0 то диоды бегут в другую сторону... вот так...

и как всегда код в котором я не могу сохранить значения регистров

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <P16F877.INC>
FLAG EQU 0x30;
      ORG 0;
      bsf STATUS,RP0
      clrf TRISB
      GOTO START
      bcf          STATUS,RP0
      ORG 4;
 
    MOVWF    W_TEMP;
    SWAPF    STATUS,W;
    clrf    STATUS;
    MOVWF    STATUS_TEMP;
    MOVF    PCLATH,w;
    MOVWF    PCLATH_TEMP;
 
      BTFSS     INTCON,INTF;
      GOTO     INTERRUPT;
      INCF     FLAG,1;
      MOVF     FLAG,W;
      SUBLW     .2;
      MOVLW     .1;
      BTFSC    STATUS,Z;
      MOVWF     FLAG;
      BCF          INTCON,INTF;
INTERRUPT:
    MOVf    PCLATH_TEMP,w;
    MOVWF    PCLATH;
    SWAPF    STATUS_TEMP,w;
    MOVWF    STATUS;
    SWAPF    W_TEMP,F;
    SWAPF    W_TEMP,w;
    RETFIE;
START:
        MOVLW     .1;
        MOVWF     FLAG;
BTFSS     FLAG,1;
goto        label;
goto         label2;
label:
        MOVLW     b'11000000';
        MOVWF     PORTD;
        RRF          PORTD,1;
        GOTO     label;
label2:
        RLF          PORTD,1;
        GOTO     label2;
END
кто что посоветует ? вложение с ошибками ниже )
0
Миниатюры
работа с PIC16F877  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2009, 17:51
Ответы с готовыми решениями:

Работа с RTC DS1307 по I2C (PIC16F877)
При эмуляции схемы в Proteus светодиод D1 начинает мигать. Почему схема работает только с...

Счётчик импульсов на PIC16F877 + работа с АЦП
Всем доброго дня. Хочу реализовать пульсометр на PIC16F877 в протеусе. Для начала решил...

MPLAB PIC16F877
Здравствуйте Я тут новичок, взялся за голову, начал учиться Мне нужна ваша помощь, надеюсь, что...

светодиодные Эффекты на МК PIC16F877
Дорогие юзеры форума помогите пожалйуста написать код на СИ для МК PIC16F877 В MPLAB․мне нужно...

Бегущая строка на PIC16F877
Доброе время суток! Прошу помочь в написании команд для PIC16F877. Нудно сделать бегущую строку...

65
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
05.06.2009, 19:11 2
Блин, вроде 21 век на дворе, зачем писать на ASMе, если полно СИшных компиляторов...
Я правда писал под 18-ые пики, но и под 16 тоже есть...
Там все проще )))
А вообще, на сколько я помню, в даташитах на МК приводят куски кода с организацией прерываний
1
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
05.06.2009, 19:24  [ТС] 3
ну вот предмет у меня в универе такой "программирование микрокантроллеров" все на ассемблере... если можеш то выслушаю любые добавки
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
06.06.2009, 17:46 4
Лень искать MPLAB, если все еще не разобрался, до дай ссылку, откуда его скачать можно...

Судя по ошибкам, у тебя не определены переменные W_TEMP, STATUS_TEMP, PCLATH_TEMP...
1
06.06.2009, 17:46
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
06.06.2009, 19:42  [ТС] 5
так скажи как их определить ))))
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
06.06.2009, 20:34 6
Такс, судя по тому, что ты используешь команду MOVWF с этими переменными, то это не что иное, как переопределение регистров общего назначения...
Попробуй так:
Assembler
1
2
3
W_TEMP EQU 0x31;
STATUS_TEMP EQU 0x32;
PCLATH_TEMP EQU 0x33;
Соответственно вставь это после инклуда

И еще вариант: написать на Си, затем при компиляции сделать MAP-файл и посмотреть получившийся ассемблерный код ))
1
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
06.06.2009, 21:59  [ТС] 7
на одном форуме мне посоветовали убрать _temp ... сделал, и все скомпилило )))

но вот НЕХ файл када подключаю в протеусе то там не корректно прога работает )))
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
06.06.2009, 23:10 8
Ну естественно, что она будет работать не корректно. Т.к. ты просто подогнал синтаксис, чтобы скомпилировалась прога, нарушив тем самым логику работы...
Попробуй добавить описания, как я писал раньше.
Если не покатит, то завтра поставлю MPLAB... Протеус у меня уже стоит...
1
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
07.06.2009, 16:35  [ТС] 9
большое спасибки !!!! с утричка все сделаю и отпишусь.... а вообще протеус интересная штукенсия ))))

Добавлено через 15 часов 53 минуты 46 секунд
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <P16F877.INC>
FLAG EQU 0x30;
W_TEMP EQU 0x31
STATUS_TEMP EQU 0x31
PCLATH_TEMP EQU 0x31
count   EQU 0x35;
      ORG 0;
      bsf STATUS,RP0
      clrf TRISD
      GOTO START
      bcf          STATUS,RP0
      ORG 4;
 
    MOVWF   W_TEMP;
    SWAPF   STATUS,W;
    clrf    STATUS;
    MOVWF   STATUS_TEMP;
    MOVF    PCLATH,w;
    MOVWF   PCLATH_TEMP;
      BTFSS     INTCON,INTF;
      GOTO     INTERRUPT;
      INCF     FLAG,1;
      MOVF     FLAG,W;   
      SUBLW     .1;
      MOVLW     .0;
      BTFSC    STATUS,Z;
      MOVWF     FLAG;
      BCF          INTCON,INTF;
INTERRUPT:
    MOVf    PCLATH_TEMP,w;
    MOVWF   PCLATH;
    SWAPF   STATUS_TEMP,w;
    MOVWF   STATUS;
    SWAPF   W_TEMP,F;
    SWAPF   W_TEMP,w;
    RETFIE;
START:
        MOVLW     .1;
        MOVWF     FLAG;
        MOVLW     d'11000000';
        MOVWF     PORTD;
BTFSS     FLAG,1;
goto        label;
goto        label2;
label:
        RLF          PORTD,1;
        call    delay;
        GOTO     label;
label2:
        RRF          PORTD,1;
        call    delay;
        GOTO     label2;
 
delay:
        movlw .30       ;AA9
        movwf count
LOOP:   DECFSZ count,f
        goto LOOP
        return
        end
END
ВОТ ))) СКОМПИЛИЛО БЕЗ ОШИБОК.... НО ПРЕРЫВАНИЕ НЕ ХОЧЕТ РАБОТАТЬ....
0
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
07.06.2009, 16:39  [ТС] 10
вот схема протеуса... када я нажму на кнопку то диоды в другую сторону должны побежать.... и так с каждым нажатием на кнопку... насколько я понял то перывание не работает (((
0
Миниатюры
работа с PIC16F877  
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
07.06.2009, 16:49 11
Во-первых, у тебя переменные W_TEMP, STATUS_TEMP,PCLATH_TEMP указывают на один регистр, что не верно... Присваивай им разные (как я тебе выше писал, т.е.
W_TEMP EQU 0x31
STATUS_TEMP EQU 0x32 и т.д)
Второй момент - это протеус... Выставил ли ты частоту работы МК? Смотрю, внешний кварц у тебя не подключен... проверь правильность настроек )
1
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
07.06.2009, 16:56 12
Кстати, кнопка тоже подключена не верно...
Ибо в одном случае ножка весит в "воздухе" и ловит помехи, а при замыкании
вообще образуется петля.

Вкладываю рисунок, как примерно должно выглядеть
1
Миниатюры
работа с PIC16F877  
Ensase
Флудер
192 / 30 / 11
Регистрация: 23.03.2007
Сообщений: 334
07.06.2009, 21:09 13
а чё трудно спаять?
так ведь неинтересно
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
07.06.2009, 21:50 14
Нафига паять, чтоб потом спалить все это от неверно-написанной проги или от неверно припаяных элементов ..
1
Ensase
Флудер
192 / 30 / 11
Регистрация: 23.03.2007
Сообщений: 334
07.06.2009, 22:44 15
паять и программировать нужно правильно.
и датащиты читать
на реальном железе интереснее работать
а эту ерунду можно и в мплаб сим прогнать, хотя тут сразу всё видно
0
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
08.06.2009, 00:04  [ТС] 16
мужики )) ваще ниче не пойму ))))) вот второе заземление не могу подулючить (((

ич е то за стрелка над резистором ???

регистры переназначил )

Добавлено через 45 секунд
помогите плз )))) сдавать во вторник (((((
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
08.06.2009, 00:16 17
Ensase, мы люди, а не роботы... Хотя и роботы ошибаются, поэтому учиться стоит на таких вещах, как Протеус, чтобы зря деньги не тратить и чтоб током не убило... Не бывает такого, чтоб сразу и без ошибок, так и охоту чем-то заниматься отобъет.

buba3230, прикрепляю рисунок, где брать землю и питание(тот самый треугольник)... Если не прокатит, то завтра постараюсь на работе сделать... Только ссылку найди, где MPLAB качнуть можно.
1
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
08.06.2009, 00:16 18
Вот сам рисунок
1
Миниатюры
работа с PIC16F877  
buba3230
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
08.06.2009, 00:20  [ТС] 19
я тебе МП ЛАб в аську скину ))))) а если нет то щас ссылку найду ))) просто очень нада ... единственный долг по сессии (((

Добавлено через 31 секунду
а рисунок чето не работает ((

Добавлено через 2 минуты 32 секунды
заземление не могу выкинуть (((
0
Haster
инженер-системотехник
111 / 110 / 5
Регистрация: 10.03.2009
Сообщений: 533
08.06.2009, 00:24 20
В смысле выкинуть не можешь? Тыкай на него, а затем на поле рядом с процом, он там его и разместит
1
08.06.2009, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2009, 00:24

Есть ли INT2 в PIC16F877?
Есть ли INT2 в PIC16F877?

ПП задержки для PIC16F877
Доброго времени суток! К сожалению у меня нет опыта в компилировании кода на ассемблере. Прошу...

Датчик освещенности на pic16f877
Помогите пожалуйста поправить код. Выводит по USORT только 0-и. Где ошибка? Прилагаю проект в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru