прерывания по rb4-7
|
|
veter-ok |
Дата: Чт, 01.09.2011, 01:58 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 01.09.2011
Статус:
Offline
|
добрый день всем вот вычитал в дш что в прерывании нужно либо считать портb либо что-то туда вписать Хочу считать но как и куда не доганяю что значить считать портb
|
|
|
|
ADMIN |
Дата: Чт, 01.09.2011, 04:59 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Ну просто в переменную: Dim A As Byte
A = PORTB После этого, если состояние порта будет отлично от A, вернее его младшие 4 бита, произойдет прерывание
|
|
|
|
veter-ok |
Дата: Чт, 01.09.2011, 13:19 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 01.09.2011
Статус:
Offline
|
спасибо но меня смущает-- там написано что это надо делать уже в обработке прерываня : сразу считать а потом сбросить флаг
|
|
|
|
ivan_fd |
Дата: Чт, 01.09.2011, 16:01 | Сообщение # 4 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Правильно это нужно сделать в обработчике прерывания, иначе Вам не удастся сбросить флаг прерывания.
|
|
|
|
veter-ok |
Дата: Чт, 01.09.2011, 21:37 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Что именно в Протеусе не очень? Дали бы проект Протеуса, или как.
Сообщение отредактировал
ivan_fd - Пт, 02.09.2011, 12:53
|
|
|
|
veter-ok |
Дата: Пт, 02.09.2011, 23:59 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 01.09.2011
Статус:
Offline
|
а как прилепить то его
Сообщение отредактировал
veter-ok - Сб, 03.09.2011, 00:02
|
|
|
|
anatol |
Дата: Сб, 03.09.2011, 00:37 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (veter-ok) а как прилепить то его Весь проект собираешь в одну папку. Желательно указать какой программой пользовался. Папку архивируешь. И внизу под ответом есть строчка - Прикрепить файл. Тыкаем в обзор и указываем свой архив. Далее отправить и ждем в зависимости от размера файла и скорости канала некоторое время.
|
|
|
|
veter-ok |
Дата: Сб, 03.09.2011, 17:32 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 01.09.2011
Статус:
Offline
|
пишет не допустимый формат изображения
|
|
|
|
anatol |
Дата: Сб, 03.09.2011, 20:01 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Quote (veter-ok) пишет не допустимый формат изображения проверяю
|
|
|
|
veter-ok |
Дата: Вс, 04.09.2011, 00:34 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
6
Замечания:
±
На сайте с 01.09.2011
Статус:
Offline
|
спасибо конечно но неполучаеццо в правом углу вылазит все та же ошибка
|
|
|
|