Добрый день еще раз....
Я немного переделал проект следующим образом: по прерыванию от любого из портов (RB0-RB2), меняеться состояние портов RD0-7 (т.е. когда на какомто RB0-RB2 true, то и на RD0-7 true, когда на RB0-RB2 false, то и на RD0-7 false), в отладчике все отлично работает
НО НА ПРАКТИКЕ ПО ПРЕЖНЕМУ НИЧЕГО....
По вашим советам я изменил схему, но никаких изменений (признаков жизни)...
ЧТО Я ЕЩЕ НЕ ТАК СДЕЛАЛ.....
Програма:
LIST P=18F4550, F=INHX32,r=dec ;directive to define processor
#include <P18F4550.INC> ;processor specific variable definitions
;******************************************************************************
;Configuration bits
CONFIG FOSC = HS ;HS oscillator, HS used by USB
;******************************************************************************
;Variable definitions
ds_temp equ 0xdd
UDATA
WREG_TEMP RES 1 ;variable in RAM for context saving
STATUS_TEMP RES 1 ;variable in RAM for context saving
BSR_TEMP RES 1 ;variable in RAM for context saving
UDATA_ACS
EXAMPLE RES 1 ;example of a variable in access RAM
;******************************************************************************
;EEPROM data
DATA_EEPROM CODE 0xf00000
DE "Test Data",0,1,2,3,4,5
;******************************************************************************
;Reset vector
RESET_VECTOR CODE 0x0000
goto Main ;go to start of main code
;******************************************************************************
;High priority interrupt vector
HI_INT_VECTOR CODE 0x0008
bra HighInt ;go to high priority interrupt routine
;******************************************************************************
;Low priority interrupt vector and routine
LOW_INT_VECTOR CODE 0x0018
bra LowInt ;go to low priority interrupt routine
;******************************************************************************
;High priority interrupt routine
CODE
HighInt:
btfss PORTB,2
goto next2
bcf INTCON3,1
bcf INTCON2,4
bsf ds_temp,0
retfie FAST
next2:
btfss PORTB,1
goto next1
bcf INTCON3,0
bcf INTCON2,5
bsf ds_temp,0
retfie FAST
next1:
btfss PORTB,0
goto next0
bcf INTCON,1
bcf INTCON2,6
bsf ds_temp,0
retfie FAST
next0:
bcf INTCON3,0
bsf INTCON2,5
bcf INTCON3,1
bsf INTCON2,4
bcf INTCON,1
bsf INTCON2,6
bcf ds_temp,0
retfie FAST
;******************************************************************************
;Low priority interrupt routine
LowInt:
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register
; *** low priority interrupt code goes here ***
movff BSR_TEMP,BSR ;restore BSR register
movff WREG_TEMP,WREG ;restore working register
movff STATUS_TEMP,STATUS ;restore STATUS register
retfie
;******************************************************************************
;Start of main program
Main:
; Interrypt
bsf RCON,7
bsf INTCON,7
bsf INTCON,4
bsf INTCON2,0
bsf INTCON2,1
bsf INTCON2,2
bsf INTCON2,5
bsf INTCON2,4
bsf INTCON3,6
bsf INTCON3,7
bsf INTCON3,4
bsf INTCON3,3
;Set PORTs
bcf T0CON,7
bsf T0CON,6
bcf T0CON,5
bcf T0CON,3
bcf T0CON,2
bcf T0CON,1
bcf T0CON,0
bcf INTCON,5
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
movlw 0x07
movwf ADCON1
movlw 0x07
movwf CMCON
movlw b'00000111'
movwf TRISB ;Inpyt interrypt 0,1,2
movlw b'11111111'
movwf TRISA ;
movlw b'11111111'
movwf TRISC ;
movlw 0x0;
movwf TRISD ;If interrypt true or false set states of bits
movlw b'00000000'
movwf TRISE
clrf ds_temp;
loop:
btfsc ds_temp,0
goto true
goto false
true:
movlw 0xff;
movwf PORTD
goto loop
false:
movlw 0x00;
movwf PORTD
goto loop
;******************************************************************************
;End of program
END
Схема:
Нажмите для просмотра прикрепленного файла