#include<p18f452.inc>
TIMER set 0x00
COUNT1 set 0x01
COUNT2 set 0x02
org 0x00
goto start
org 0x08
goto int_1
goto int_2
org 0x18
retfie
start movlw 0xFF
movwf TRISB,A
clrf TRISD,A
clrf TRISC,A
movlw 0x3F
movwf PORTD,A
movlw 0x3F
movwf PORTC,A
set_time BSF RCON,7,A ;INTERUPT
BSF INTCON,7,A
BSF INTCON,4,A
BCF INTCON,1,A
bsf INTCON3,4,A
bcf IN开发者_StackOverflow中文版TCON3,0,A
movlw D'60'
movwf TIMER,A
call TIME_1
goto set_time
TIME_1 movlw 0x85
movwf T0CON,A
loopt movlw 0x3D
movwf TMR0H,A
movlw 0x09
movwf TMR0L,A
bcf INTCON,2,A
wait btfss INTCON,2,A
bra wait
decfsz TIMER,F,A
bra loopt
return
int_1 btfss INTCON,1,A
goto eint_1
incf COUNT1,F,A
btfsc COUNT1,3,A
goto num_9
btfsc COUNT1,2,A
goto num_7654
btfsc COUNT1,1,A
goto num3_2
btfsc COUNT1,0,A
goto num1
eint_1 retfie
int_2 btfss INTCON3,0,A
goto eint_2
incf COUNT2,F,A
btfsc COUNT2,3,A
goto num_9_2
btfsc COUNT2,2,A
goto num_7654_2
btfsc COUNT2,1,A
goto num3_2_2
btfsc COUNT2,0,A
goto num1_2
eint_2 retfie
num_9 btfsc COUNT1,0,A
goto nom9
goto nom8
num_7654 btfss COUNT1,1,A
goto nom4_5
goto nom6_7
num3_2 btfss COUNT1,0,A
goto nom2
goto nom3
num1 movlw 0x06
movwf PORTD,A
goto eint_1
nom9 movlw 0x67
movwf PORTD,A
goto eint_1
nom8 movlw 0x7F
movwf PORTD,A
goto eint_1
nom6_7 btfss COUNT1,0,A
goto nom6
goto nom7
nom6 movlw 0x7D
movwf PORTD,A
goto eint_1
nom7 movlw 0x07
movwf PORTD,A
goto eint_1
nom4_5 btfss COUNT1,0,A
goto nom4
goto nom5
nom4 movlw 0x66
movwf PORTD,A
goto eint_1
nom5 movlw 0x6D
movwf PORTD,A
goto eint_1
nom2 movlw 0x5B
movwf PORTD,A
goto eint_1
nom3 movlw 0x4F
movwf PORTD,A
goto eint_1
num_9_2 btfsc COUNT2,0,A
goto nom9_2
goto nom8_2
num_7654_2 btfss COUNT2,1,A
goto nom4_5_2
goto nom6_7_2
num3_2_2 btfss COUNT2,0,A
goto nom2_2
goto nom3_2
num1_2 movlw 0x06
movwf PORTC,A
goto eint_2
nom9_2 movlw 0x67
movwf PORTC,A
goto eint_2
nom8_2 movlw 0x7F
movwf PORTC,A
goto eint_2
nom6_7_2 btfss COUNT2,0,A
goto nom6_2
goto nom7_2
nom6_2 movlw 0x7D
movwf PORTC,A
goto eint_2
nom7_2 movlw 0x07
movwf PORTC,A
goto eint_2
nom4_5_2 btfss COUNT2,0,A
goto nom4_2
goto nom5_2
nom4_2 movlw 0x66
movwf PORTC,A
goto eint_2
nom5_2 movlw 0x6D
movwf PORTC,A
goto eint_2
nom2_2 movlw 0x5B
movwf PORTC,A
goto eint_2
nom3_2 movlw 0x4F
movwf PORTC,A
goto eint_2
end
actually this coding is for people counter and display in 7 segment. but the problem is when running this program,it's did'nt function and i don't know where is the problem. i think i had do it correctly..
Instead absolute code model I realy advice to use relocatable code model.
To write interrupt under PIC18 than just write:
CODE SAMPLE:
#include<p18f452.inc>
_Shared udata_acs 0 ;Shared memory file registers
IntReg1 res 1
IntReg2 res 1
;... declare shared variables
_UpperBank0 udata 060h ;Banked file memory registers
RegA res 1
;...declare application variables
_Bank1 udata 0100h ;Banked file memory registers
N res 1
;...declare application variables
;CODE
_ResetCPU code 0
movlw b'01100000' ;init MCPU file registers
movwf ;...
goto ContinueInitCpu
_Interrupt code 8
movlb high _Bank1
;
;interrupt code
;
retfie ;return from interrupt
;
ContinueInitCpu
movlw b'01100000' ;init MCPU file registers
movwf ;...
;...
;
; Application code
;
Than use MPLAB built in simulator to check code and report...
精彩评论