Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/64: Рейтинг темы: голосов - 64, средняя оценка - 4.67
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
1

работа с PIC16F877

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

Author24 — интернет-сервис помощи студентам
в общем мне нада сделать прерывание... тоисть када я буду нажимать на кнопку то по 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
кто что посоветует ? вложение с ошибками ниже )
Миниатюры
работа с PIC16F877  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2009, 17:51
Ответы с готовыми решениями:

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

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

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

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

65
6 / 6 / 1
Регистрация: 05.03.2009
Сообщений: 88
17.06.2009, 15:43  [ТС] 61
Author24 — интернет-сервис помощи студентам
ага )))) спасибки есть )))
0
belord
01.10.2009, 19:32 62
приветствую всех! помогите разобраться в чем проблема, есть задание которое я вроде выполнил и оно работает в протеусе но на установке ведет себя абсолютно неадекватно(хаотичное зажигание, погасание по нажатию кнопки), если у кого есть 16F877 микроконтроллер с кнопочкой или кто хорошо разбирается проверьте плиз.

задание: К порту D подключены 8 светодиодов. Организовать заполнение линейки горящих светодиодов и затем их погасание. А именно, при нажатии кнопки должен загораться крайний светодиод ряда. При следующем нажатии — дополнительно соседний светодиод и т.д. пока не загорятся все 8 светодиодов. При дальнейших нажатиях должны погасать сначала первый, потом второй и т.д. Далее процесс повторяется.

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
62
63
64
65
66
67
list p=16F877
#INCLUDE <P16F877.INC>                                
COUNT       EQU 20h         ;   set a symbolical designation of cells of the memory 
COUNT1      EQU 21h
FLAG        EQU 22h         ;   located to addresses 20h , 21h, 22h
DCOUNT      EQU 23h
DCOUNT1         EQU 24h
 
 
        ORG 0           ;   Current address in ROM - 0
START:      BSF STATUS,RP0  ;   set page 1
        CLRF TRISB      ;   set PORTB on conclusion 
        CLRF TRISD      ;   set PORTD on conclusion
        BCF STATUS,RP0  ;   set page 0
        CLRF PORTD
        CLRF PORTB
 
RUN     MOVLW 0
        MOVWF COUNT ;   counter of diodes
        MOVWF COUNT1
        MOVWF FLAG  ;   for change of modes (on/off)
        BSF PORTB,7     ;   (send 1 to PORTB)
        BTFSC PORTB,7   ;   if bit 0 pass next string
        GOTO BDE        
 
ON:     BTFSC FLAG,F    ;   test for off mode
        GOTO OFF        
        RLF PORTD,F     ;   Shift to the left through carrying over
        INCF PORTD,F    ;   switch on the diode
        INCF COUNT,F    ;   counter of bits
        BTFSC COUNT,3
        COMF FLAG,F ;   change to OFF
        GOTO BUE
 
OFF:        RLF PORTD,F ;   
        BCF  STATUS,C   ;   Carrying over of zero outside of a bit grid of the controller   
        INCF COUNT1,F   
        BTFSC COUNT1,3
        GOTO RUN        
        GOTO BUE
 
BUE:        BSF PORTB,7 ;   Button Up Expectation   
        BTFSC PORTB,7
        GOTO BDE
        CALL DELAY_30
        CLRWDT
        GOTO BUE
 
BDE:        BSF PORTB,7 ;   Button Down Expectation
        BTFSS PORTB,7
        GOTO ON
        CALL DELAY_30
        CLRWDT
        GOTO BDE
 
DELAY_30:   MOVLW .255
        MOVWF DCOUNT    
        MOVWF DCOUNT1
 
LOOP:   DECFSZ  DCOUNT
        GOTO LOOP1  
 
LOOP1:  DECFSZ  DCOUNT1
        GOTO LOOP1  
        RETURN  
 
END
Вложения
Тип файла: rar PIC_ASM.rar (45.0 Кб, 29 просмотров)
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
23.10.2009, 05:18 63
ты на установке кнопочку не напрямую случайно цепляешь? R-S триггер нужен, чтобы дребезга контактов не было.
0
Fileas
06.12.2009, 20:23 64
В продолжение темы:


Помогите организовать прерывание, чтобы каждый раз при нажатии кнопки инкрементировался регистр Reverse (задает направление движения двойки зажженных светодиодов)

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <P16F877.inc>
 
R1 equ 0x20
R2 equ 0x21
R3 equ 0x22
Reverse equ 0x024
org 0x00
goto main
org 0x04
 
main:
bsf STATUS,RP0 ; Идем в первый банк памяти
movlw .1 
movwf TRISB ; Включаем контакт RB0/INT на ввод
clrf TRISD ; Переводим PORTD  на вывод
bcf STATUS,RP0 ; Возврат в 0 банк памяти
 
clrf PORTD ; Очистка порта Д
clrf Reverse ; Очистка реверса
 
M3: ; Первичная инициализация прямой последовательности переключения
movlw b'00000011'
movwf R3
bcf STATUS,C ; Очистка лишней единицы
M4:  ; Цикл переключения
movf R3,W
movwf PORTD
rlf R3,f
rlf R3,f
call delay ; Вызов задержки
btfss Reverse,0 ; Проверка реверса
goto M8
goto M5
M8:
btfss PORTD,7 ;Проверка 7 бита порта Д
goto M4
goto M3
 
M3: ; Первичная инициализация обратной последовательности переключения
M5:
movlw b'11000000'
movwf R3
bcf STATUS,C
M6:
movf R3,W
movwf PORTD
rlf R3,f
rlf R3,f
call delay
btfss Reverse,0
goto M7
goto M3
M7:
btfss PORTD,7
goto M6
goto M5
 
;Задержка на 1 мс
T1MS: movlw .248
movwf R1
M1:
nop
decfsz R1,f
goto M1
return
 
;Задержка на 250 мс
delay: movlw .250
movwf R2
M2: 
call T1MS
decfsz R2,f
goto M2
return
 
end
Вот схема в 6 протеусе
работа с PIC16F877
0 / 0 / 0
Регистрация: 08.05.2014
Сообщений: 2
08.05.2014, 12:29 65
Haster, здравствуйте!!!хотела бы заказать работу!могли бы вы дать эл.почту. туда все скину. Заранее спасибо!!!
0
инженер-системотехник
111 / 111 / 5
Регистрация: 10.03.2009
Сообщений: 533
08.05.2014, 16:33 66
Кумусай, у меня сейчас очень мало свободного времени =((
0
08.05.2014, 16:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2014, 16:33
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
66
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru