zhaniko93
New Member
Hello
I am working on a project and need to use PIC Simulator IDE (Oshonsoft). In Proteus, Interrupt happens but then goes something wrong (I will correct it myself) but when testing code in Simulator, No interrupt takes place. can any one say why? whats wrong?
I am working on a project and need to use PIC Simulator IDE (Oshonsoft). In Proteus, Interrupt happens but then goes something wrong (I will correct it myself) but when testing code in Simulator, No interrupt takes place. can any one say why? whats wrong?
Code:
LIST P=16F628A, R=DEC ; Use the PIC16F628 and decimal system
#include "P16F628A.INC" ; Include header file
__config _INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _MCLRE_OFF
errorlevel -302
CBLOCK 0x20 ; Declare variable addresses starting at 0x20
TMP1
TMP2
TMP3
TMP4
ENDC
; --------------------------------
; SET ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
goto Start
org 0x004
nop
movwf TMP2
movfw STATUS
movwf TMP4
movfw PORTB
movwf TMP3
bcf STATUS, C
rrf TMP3, f
bcf STATUS, C
rrf TMP3, f
bcf STATUS, C
rrf TMP3, f
bcf STATUS, C
rrf TMP3, f
movfw TMP3
sublw 1
btfsc STATUS, Z
call Win_
movfw TMP3
sublw 2
btfsc STATUS, Z
call Ukan_
movfw TMP4
movwf STATUS
movfw TMP2
bcf INTCON, RBIF
retfie
Start movlw 7
movwf CMCON ; CMCON=7 set comperators off
bsf INTCON, RBIE
bsf INTCON, GIE
bcf INTCON, RBIF
;
; ----------------
; INITIALIZE PORTS
; ----------------
BANKSEL CCP1CON
movlw b'00111100'
movwf CCP1CON
movlw b'00000101' ; TMR2 = on, prescale = 1:4
movwf T2CON
movlw 0x10
movwf CCPR1L
movlw b'00000100' ; RB2(TX)=1 others are 0
movwf PORTB
bsf STATUS,RP0 ; RAM PAGE 1
movlw 0x00
movwf TRISA ; portA all pins input
movlw b'11110010' ; RB7-RB4 and RB1(RX)=input, others output
movwf TRISB
bcf STATUS,RP0 ; RAM PAGE 0
loop
goto loop
Ukan_ call Ukan
call Ukan
call Ukan
call Ukan
call Ukan
retlw 0
Win_ call Win
call Win
call Win
call Win
call Win
retlw 0
Win
movf CCPR1L, f
movlw 1
btfsc STATUS, Z
call Mimart_Shecvla ; CCPR1L == 0
call CritCheck
movwf TMP1
btfss TMP1, 0
call Winn ; 0-a
retlw 0
Ukan movf CCPR1L, f
movlw 0
btfsc STATUS, Z
call Mimart_Shecvla
call CritCheck
movwf TMP1
btfss TMP1, 0
call Ukann ; 0-a
retlw 0
CritCheck movfw CCPR1L ;Maximalurs vzomavt jer
sublw 0xFF
movlw 0xFE
btfsc STATUS, Z
movwf CCPR1L ; CCPR1L == 255, CCPR1L = 254
btfsc STATUS, Z
retlw 1 ; CCPR1L == 255
retlw 0
Mimart_Shecvla sublw 0 ;W==1 = Win - - - - W==0 = Ukan
btfsc STATUS, Z ; Winaa
bsf PORTB, 0
btfss STATUS, Z ; Ukanaa
bcf PORTB, 0
movlw 1
movwf CCPR1L
retlw 0
Winn btfss PORTB, 0
incf CCPR1L
btfsc PORTB, 0
decf CCPR1L
retlw 0
Ukann btfsc PORTB, 0
incf CCPR1L
btfss PORTB, 0
decf CCPR1L
retlw 0
END