Прерывания PIC18 помогите разобраться, может MPLAB 6.12 у нас глючит?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Sem 17 августа 2004 г. 14:21

Простейшая программа "мигающий светодиод" на PIC16 исполняется а при переходе на PIC18 исполняется только в MPLABе.

;**********************************************************************
; M009 *
;**********************************************************************
LIST P=18F452, F=INHX32
#include

__CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
__CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_45_2L & _PWRT_ON_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
__CONFIG _CONFIG3H, _CCP2MX_ON_3H
__CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_ON_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
__CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H


cblock 0x000
caunt1,caunt2,Int_W,Int_Status,Int_BSR,caunt11,caunt21
endc

INIT_A EQU b'11101111'
INIT_B EQU 0x00
INIT_C EQU b'10111001'
INIT_DI EQU 0xFF
INIT_E EQU 0x00
ADC1 EQU b'00000010'
kTMR0H EQU 0xAF
kTMR0L EQU 0xA0

ORG 0x0000
goto main

;High priority interrupt vector
ORG 0x0008
movwf Int_W ;save working register
movff STATUS,Int_Status ;save STATUS register
movff BSR,Int_BSR ;save BSR register

; *** low priority interrupt code goes here ***
btfss INTCON,TMR0IE
goto Int_Exit
btfss INTCON,TMR0IF
goto Int_Exit
bcf INTCON,TMR0IF
bcf INTCON,TMR0IE

bcf PORTE,0
call tay1
call tay1

movlw kTMR0H
movwf TMR0H
movlw kTMR0L
movwf TMR0L
bcf INTCON,TMR0IF
bsf INTCON,TMR0IE

Int_Exit movff Int_BSR,BSR ;restore BSR register
movf Int_W,W ;restore working register
movff Int_Status,STATUS ;restore STATUS register
retfie

main clrf PIR1
clrf PIR2
clrf PIE1
clrf PIE2
movlw b'00011111'
movwf RCON
movlw ADC1
movwf ADCON1
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
movlw INIT_A
movwf TRISA
movlw INIT_B
movwf TRISB
movlw INIT_C
movwf TRISC
movlw INIT_DI
movwf TRISD
movlw INIT_E
movwf TRISE
movlw b'11001000'
movwf T0CON

movlw kTMR0H
movwf TMR0H
movlw kTMR0L
movwf TMR0L
bcf INTCON,TMR0IF
bsf INTCON,TMR0IE
bsf INTCON,PEIE
bsf INTCON,GIE

bsf PORTE,0
mrr01 call tay
goto mrr01

tay movlw 0xFF
movwf caunt1
tay02 movlw 0xFF
movwf caunt2
tay01 decfsz caunt2,f
goto tay01
decfsz caunt1,f
goto tay02
return

tay1 movlw 0xFF
movwf caunt11
tay12 movlw 0xFF
movwf caunt21
tay11 decfsz caunt21,f
goto tay11
decfsz caunt11,f
goto tay12
return

END

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru