Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
прерывания по rb4-7
veter-ok Дата: Чт, 01.09.2011, 01:58  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

добрый день всем вот вычитал в дш что в прерывании нужно либо считать портb либо что-то туда вписать Хочу считать но как и куда не доганяю что значить считать портb
ЯНДЕКС Дата: 01.09.2011
ADMIN Дата: Чт, 01.09.2011, 04:59  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1086
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Ну просто в переменную:
Dim A As Byte

A = PORTB
После этого, если состояние порта будет отлично от A, вернее его младшие 4 бита, произойдет прерывание
veter-ok Дата: Чт, 01.09.2011, 13:19  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

спасибо но меня смущает-- там написано что это надо делать уже в обработке прерываня : сразу считать а потом сбросить флаг
ivan_fd Дата: Чт, 01.09.2011, 16:01  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Правильно это нужно сделать в обработчике прерывания, иначе Вам не удастся сбросить флаг прерывания.
veter-ok Дата: Чт, 01.09.2011, 21:37  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

подскажите пожалуйста что не так ато в протеусе не очень
это регулятор мощности

;'****************************************************************
;'* Name : regul.BAS *
;'* Author : [select VIEW...EDITOR OPTIONS] *
;'* Notice : Copyright © 2011 [select VIEW...EDITOR OPTIONS] *
;'* : All Rights Reserved *
;'* Date : 29.06.2011 *
;'* Version : 1.0 *
;'* Notes : *
;'* : *
;'****************************************************************
;-------------------------- общие настройки------------------------------------
Device= 16F819 ;используемый pic
Xtal = 4 ; частота осцилятора

;Config HS_OSC, LVP_OFF, CP_OFF, BODEN_OFF, PWRTE_ON, WDT_OFF

;-----------------------------option reg ------------------------

Symbol PSO = OPTION_REG.0 ; бит предделителя
Symbol PS1 = OPTION_REG.1 ; бит предделителя
Symbol PS2 = OPTION_REG.2 ; бит предделителя
Symbol PSA = OPTION_REG.3 ; бит включения предделителя
Symbol TOSE = OPTION_REG.4 ; выбор фронта приращивания
Symbol TOCS = OPTION_REG.5 ; выбор тактового сигнала
Symbol INTEDG = OPTION_REG.6 ; выбор активного фронта
Symbol PBPU = OPTION_REG.7 ; подтягивающие резисторы
OPTION_REG = %11001000
;------------------------------INTCON-----------------------
Symbol rbif = INTCON.0 ; флаг прер.по rb4-7
Symbol intf = INTCON.1 ; флаг прер. по into
Symbol toif = INTCON.2 ; флаг по tmr0
Symbol rbie = INTCON.3 ; разреш.прерыв. по rb4-7
Symbol inte = INTCON.4 ; разреш. прерыв по int
Symbol toie = INTCON.5 ; разреш. прер.по tmr0
Symbol peie = INTCON.6 ; разреш.от периф.устройств
Symbol gie = INTCON.7 ; глобаальное разр.прер.


;---------------------------t1con------------

Symbol tmr1on = T1CON.0 ; бит вкл/tmr1
Symbol tmr1cs = T1CON.1 ; выбор ист.тактового сигнала
Symbol t1sync = T1CON.2 ; синхрон.внеш.тактового сигн.
Symbol t1oscen = T1CON.3; вкл тактового генер.
Symbol t1ckps0 = T1CON.4 ; коэф.дделения преддел
Symbol t1ckps1 = T1CON.5 ; коэф.дделения преддел
T1CON = %101100
;----------------------------pie pir---------------
Symbol tmr1ie = PIE1.0 ; бит разреш прер./tmr1
Symbol tmr1if = PIR1.0 ; флаг по прер. tmr1


;-----------------------------настройки портов ------------------------------

Declare All_Digital = On ;все порты цифровые входы/выходы
Symbol but1 = PORTA.1 ; кнопка +
Symbol but2 = PORTA.0 ; кн.-
Symbol vich = PORTB.2 ; выход на симистор
Symbol led50 = PORTA.2 ; вывод а
Symbol led60 = PORTA.3 ; b
Symbol led70 = PORTA.4 ; с
Symbol led80 = PORTB.1 ; в
Symbol led90 = PORTB.3 ; e




;-----------------------------переменные-----------------------------

Dim proc As Byte ; переменная для нажатия кнопки
Dim i As Byte ; для счетчика времени
Dim z As Byte ; для сброса флага по rb4-7

;-------------------------------инициализ----------------------------

TRISA = %00000011 ; 2 входа на кнопки ост.выходы
TRISB = %11110000 ; все на выход кроме 0
PORTB = 0

peie = 1; разрешаем прер.от периф.устройств
gie = 1 ; разр.глоб.прер
rbie = 1 ; разр.прер.по b4-7
tmr1on = 0 ; откл/tmr1
tmr1ie = 0; запрет прерю по tmr1
toie = 0; запрещ.прер. по tmr0
i=0

proc = 50 ; вначале 50 % мощи
GoTo main_program
On Interrupt GoTo int_label ; при прерыв. перейти на метку

;---------------------------- прога--------------------------------
main_program:

If but1 = 0 Then
For i = 0 To 199 ; если нажата кн. то вкл задержку
DelayMS 1
Next
proc = proc + 10 ;
EndIf ;
If proc < 50 Then proc = 100;

If proc > 100 Then proc = 50 ;

If but2 = 0 Then
For i = 0 To 199 ; если нажата кн. то вкл задержку
DelayMS 1
Next
proc = proc - 10 ;
EndIf ;
If proc < 50 Then proc = 100;

If proc > 100 Then proc = 50 ;

GoSub indic
GoTo main_program

;------------------------------прерывание--------------------------
Disable
int_label:
Context Save ; сохранение сиситем.регистров
If rbif = 1 Then Select proc
Case 50 ; если 50 % то время 5мсек

toie = 0

TMR1L = 120
TMR1H = 236
tmr1ie = 1 ; разреш прер по тайм1
tmr1on = 1 ; вкл . таймер
z = PORTB
rbif = 0 ; сброс флага
Case 60 ; 6 0
toie = 0
TMR1L = $60
TMR1H = $f0
tmr1ie = 1 ; разреш прер по тайм1
tmr1on = 1 ; вкл . таймер
z = PORTB
rbif = 0 ; сброс флага
Case 70
toie = 0
TMR1L = $48
TMR1H = $f4
tmr1ie = 1 ; разреш прер по тайм1
tmr1on = 1 ; вкл . таймер
z = PORTB
rbif = 0 ; сброс флага

Case 80
toie = 0
TMR1L = $30
TMR1H = $f8
tmr1ie = 1 ; разреш прер по тайм1
tmr1on = 1 ; вкл . таймер
z = PORTB
rbif = 0 ; сброс флага

Case 90
toie = 0
TMR1L = $18
TMR1H =$fc
tmr1ie = 1 ; разреш прер по тайм1
tmr1on = 1 ; вкл . таймер
z = PORTB
rbif = 0 ; сброс флага

Case 100
toif = 0
tmr1if = 0
toie = 0
tmr1ie = 0 ; неразреш прер по тайм1
tmr1on = 0 ; откл . таймер
vich = 1
z = PORTB
rbif = 0 ; сброс флага
EndSelect


If tmr1if = 1 Then tmr1on = 0 :
toie = 1: ; разреш прер по тайм 0
TMR0 = 106:
vich = 1:
tmr1if = 0 ; сброс флага по тмр1

If toif = 1 Then vich = 0 :
toie = 0 : ;запрещ прер по тмр0
toif = 0 ; сброс флага

Context Restore
Resume


;-----------------------светодиодная--индикация------------------------

indic:
Select proc

Case 50 ; если 50 % то выведем 5
led50 = 1
led60 = 0
led70 = 0
led80 = 0
led90 = 0
Case 60 ; 6
led60 = 1
led50 = 0
led70 = 0
led80 = 0
led90 = 0

Case 70
led70 = 1
led60 = 0
led50 = 0
led80 = 0
led90 = 0

Case 80
led80 = 1
led60 = 0
led70 = 0
led50 = 0
led90 = 0

Case 90
led90 = 1
led60 = 0
led70 = 0
led80 = 0
led50 = 0

Case 100
led50 = 1
led90 = 1
led60 = 1
led70 = 1
led80 = 1
EndSelect

Return

End

Сообщение отредактировал veter-ok - Чт, 01.09.2011, 22:01
ivan_fd Дата: Пт, 02.09.2011, 12:53  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Что именно в Протеусе не очень? Дали бы проект Протеуса, или как.
Сообщение отредактировал ivan_fd - Пт, 02.09.2011, 12:53
veter-ok Дата: Пт, 02.09.2011, 23:59  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

а как прилепить то его
Сообщение отредактировал veter-ok - Сб, 03.09.2011, 00:02
anatol Дата: Сб, 03.09.2011, 00:37  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Quote (veter-ok)
а как прилепить то его

Весь проект собираешь в одну папку. Желательно указать какой программой пользовался. Папку архивируешь. И внизу под ответом есть строчка - Прикрепить файл. Тыкаем в обзор и указываем свой архив. Далее отправить и ждем в зависимости от размера файла и скорости канала некоторое время.
veter-ok Дата: Сб, 03.09.2011, 17:32  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

пишет не допустимый формат изображения
anatol Дата: Сб, 03.09.2011, 20:01  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 471
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Quote (veter-ok)
пишет не допустимый формат изображения

проверяю
Прикрепления: fail.rar (214.5 Kb)
veter-ok Дата: Вс, 04.09.2011, 00:34  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 6
Репутация: 0   ±
Замечания:   ±
На сайте с 01.09.2011

Статус: Offline

спасибо конечно но неполучаеццо в правом углу вылазит все та же ошибка
ЯНДЕКС Дата: 04.09.2011
  • Страница 1 из 1
  • 1
Поиск: