добрый день всем вот вычитал в дш что в прерывании нужно либо считать портb либо что-то туда вписать Хочу считать но как и куда не доганяю что значить считать портb
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
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 ; сброс флага
Весь проект собираешь в одну папку. Желательно указать какой программой пользовался. Папку архивируешь. И внизу под ответом есть строчка - Прикрепить файл. Тыкаем в обзор и указываем свой архив. Далее отправить и ждем в зависимости от размера файла и скорости канала некоторое время.