Trasig PIC?
Postat: 16 mars 2007, 18:20:35
Jag har prblem med min PIC16F628A, en pinne på den (som jag aldrig har använt) fungerar inte nu när jag skulle använda den... Det är PORTA,4 på ben nr. 3. Är det någon speciel instälning man ska göra till den?
Här är programet jag testat med:
Någon som kan se något problem?
Tack på förhand!
//Daniel A
Här är programet jag testat med:
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
delay2_var1 equ 20h
delay2_var2 equ 21h
delay2_var3 equ 22h
;***
delay_var1 equ 23h
delay_var2 equ 24h
delay_var3 equ 25h
;***
pause_var1 equ 26h
;***
time equ 27h
sens_flags equ 30h
;define flags m.m.
#DEFINE FLAG1 sens_flags, 0 ;**************************
#DEFINE FLAG2 sens_flags, 1 ;
#DEFINE FLAG3 sens_flags, 2 ;
#DEFINE FLAG4 sens_flags, 3 ;Define a name on each flag.
#DEFINE FLAG5 sens_flags, 4 ;
#DEFINE FLAG6 sens_flags, 5 ;
#DEFINE FLAG7 sens_flags, 6 ;
#DEFINE FLAG8 sens_flags, 7 ;**************************
;define pinouts
#define _G PORTA,0
#define _F PORTA,1
#define _A PORTA,2
#define _B PORTA,3
#define _E PORTA,4
#define _D PORTA,6
#define _C PORTA,7
#define __ PORTB,0
#define ___ PORTB,2
#define ____ PORTB,3
#define _____ PORTB,4
#define sens1 PORTB,5
;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'00000000' ;
movwf TRISA ; PORTA = all outputs (not MCLRE)
movlw b'00000000' ;
movwf TRISB ; PORTB = all outputs
bcf OPTION_REG,7 ;sätt på weak pull-ups
bcf STATUS, RP0 ; Switch to bank 0
;************************************
Goto watch_resistans
;************************************
;**** subroutins *******
;***********************
;**** Main program *****
watch_resistans
bsf _E
call delay1
goto watch_resistans
mov
RLF PORTA,1
call delay1
goto mov
; Delay routine
; This code uses about 5 x 99975 instructions. At 4Mhz this is approx 500 milliseconds.
delay1 movlw h'10' ;***************
movwf delay2_var3 ;
delay11 movlw h'30' ;
movwf delay2_var2 ;Gör en låång pause
delay12 movlw h'FF' ;
movwf delay2_var1 ;
delay13 decfsz delay2_var1, f ;
goto delay13 ;
decfsz delay2_var2, f ;
goto delay12 ;
decfsz delay2_var3, f ;
goto delay11 ;
return ;***************
pause movlw d'50' ;****************
movwf pause_var1 ;gör en kort pause
pause2 decfsz pause_var1,1 ;
goto pause2 ;
return ;*****************
delay movlw 0x5 ;*****************
movwf delay_var3 ;
delay21 movlw 0x5 ;
movwf delay_var2 ;gör en mellan pause
delay22 movlw 0xFF ;
movwf delay_var1 ;
delay23 decfsz delay_var1, f ;
goto delay23 ;
decfsz delay_var2, f ;
goto delay22 ;
decfsz delay_var3, f ;
goto delay21 ;
return ;******************
END
Tack på förhand!
//Daniel A