hej igen, nu har jag laggt ihop ett helt program (ett spel, "först till kvarn") , när jag kör det i MPSIM funkar det utmärkt. Men när jag kör det på PIC.en så händer ingenting

den kommer inte ens så långt att den börjar pipa. jag har kopplat en LED (via ett motstånd) på IO "play1_LED" och en på "play2_LED", på "play1" och "play2" har jag kopplat en switch till 5volt, med ett pulldown motstånd på 10kΩ och på "beep" har jag kopplat en summer via en transistor (BC547c) någon som kan se något fel, eller haft liknande problem?
(Förlåt sodjan för EQU på variablerna....

)
Kod: Markera allt
; Assign your microcontroller
LIST P=16F628A
; This include file makes programming more understandeble
include <P16F628A.INC>
__CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF
; save on free ram in bank0
delay_var1 equ 20h
delay_var2 equ 21h
delay_var3 equ 22h
repeat_var equ 23h
play1_overtramp equ 24h
play2_overtramp equ 25h
win1 equ 26h
win2 equ 27h
;define pinouts
#define play1 PORTB,3
#define play1_LED PORTA,3
#define play2 PORTA,6
#define play2_LED PORTA,0
#define beep PORTA,7
;startadres of the controller
org 0x0000
; For using A0-A3 as digital I/O
movlw D'7' ;
movwf CMCON ; Comparators off, all pins digital I/O
; Reset Port values
clrf PORTA
clrf PORTB
; define your pin direction (input/output)
bsf STATUS, RP0 ; Switch to bank 1
movlw b'01000000' ;
movwf TRISA ; PORTA = 1,2,3,4,5 & 7 out, 6 in
movlw b'00001000' ;
movwf TRISB ; PORTB = all outputs
bcf play1_LED ; led Off
bcf play2_LED ; led Off
; main loop
main
call reset ;sett all variables to 0
movlw 0xA ;sett repeat_var to 10
movwf repeat_var
call pause ;pause 5seconds
call read_buttom1 ;check for overtramp
call beeep
goto read_buttom2 ;Check ho press first
middle_main
goto show_LED ;show status on led
under_middle_main
movlw 0xA ;sett repeat_var to 10
movwf repeat_var
call pause ;pause 5seconds
bsf play1_LED ; LED On
goto main
reset:
movlw 0h ;sett play1_overtramp to 0
movwf play1_overtramp
movlw 0h ;sett play2_overtramp to 0
movwf play2_overtramp
movlw 0h ;sett win1 to 0
movwf win1
movlw 0h ;sett win2 to 0
movwf win2
return
pause ;call delay 10times
call delay ;(pause 5seconds)
decfsz repeat_var,1
goto pause
return
read_buttom1
BTFSC play1 ;If player1 press the buttom
call overtramp1 ;call overtramp1 subroutin
BTFSC play2 ;If player2 press the buttom
call overtramp2 ;call overtramp2 subroutin
return
overtramp1
movlw 1h ;sett play1_overtramp to 1
movwf play1_overtramp
return
overtramp2
movlw 1h ;sett play2_overtramp to 1
movwf play2_overtramp
return
beeep
bsf beep ; beep, on
call delay
bcf beep ; beep, off
return
read_buttom2
BTFSC play1 ;If player1 press the buttom
goto first1 ;call first1 subroutin
BTFSC play2 ;If player2 press the buttom
goto first2 ;call first2 subroutin
goto read_buttom2 ;loop for ever if not buttom is pressed
first1
movlw 2h ;sett win1 to 2
movwf win1
goto middle_main
first2
movlw 2h ;sett win1 to 2
movwf win2
goto middle_main
show_LED
;--------------------------------------
;- player 1 win -----
;--------------------------------------
movfw win1
sublw 2
btfsc STATUS, Z
goto play1_win
;--------------------------------------
;- player 2 win -----
;--------------------------------------
movfw win2
sublw 2
btfsc STATUS, Z
goto play2_win
goto show_LED
;-------------------------------------
;turn on status LED ------
;------------------------------------
play1_win
bsf play1_LED ; LED On
goto under_middle_main
play2_win
bsf play2_LED ; LED On
goto under_middle_main
; Delay routine
; This code uses about 5 x 99975 instructions. At 4Mhz this is approx 500 milliseconds.
delay movlw D'5'
movwf delay_var3
delay1 movlw 0x82
movwf delay_var2
delay2 movlw 0xFF
movwf delay_var1
delay3 decfsz delay_var1, f
goto delay3
decfsz delay_var2, f
goto delay2
decfsz delay_var3, f
goto delay1
return
END