kraemer90
03.03.2010, 21:01
Hallo zusammen, bin relativ neu in der PIC-Materie und habe jetzt schon mein erstes Problem, wollte mal schnell mit einer
Zeitschleife die 2 LEDs mit einem Blinklicht testen, es stimmt aber vorne
und hinten nicht.
list p=12F508 ; list directive to define processor
#include <p12F508.inc> ; processor specific variable definitions
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
TEMP_VAR UDATA
sGPIO res 1
cn1 res 1
cn2 res 1
cn3 res 1
;************************************************* *********************
RESET_VECTOR CODE 0x1FF ; processor reset vector
; Internal RC calibration value is placed at location 0x1FF by Microchip
; as a movlw k, where the k is a literal value.
MAIN CODE 0x000
movwf OSCCAL ; update register with factory cal value
;Initialisierung
start
movlw b'00000000' ;OPTION-Register konfigurieren, damit TRIS nicht überschrieben
OPTION ;wird.
movlw b'11111001' ;GP1,GP2 = Ausgänge.
Tris GPIO
clrf sGPIO
;Main
flash
movf sGPIO,w
xorlw b'00000110'
movwf GPIO
movwf sGPIO
;warten
clrf cn1
clrf cn2
movlw .23
movwf cn3
w1
nop ;1 Cycle
nop ;1 Cycle
decfsz cn1,f ;1 Cycle
goto w1 ;2 Cycle
;(256*5)=1280
nop ;1 Cycle
nop ;1 Cycle
decfsz cn2,f ;1 Cycle
goto w1 ;2 Cycle
;1280*(*256*5)=1638400
nop ;1 Cycle
decfsz cn3,f ;1 Cycle
goto w1 ;2 Cycle
;1634800*(4*23)=150732800µs=150,73s=2,5min
goto flash
END ; directive 'end of program'
die LEDs leuchten nur 8sec statt 2,5min. Als Quarz wird das interne mit
4Mhz verwendet
Zeitschleife die 2 LEDs mit einem Blinklicht testen, es stimmt aber vorne
und hinten nicht.
list p=12F508 ; list directive to define processor
#include <p12F508.inc> ; processor specific variable definitions
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS
TEMP_VAR UDATA
sGPIO res 1
cn1 res 1
cn2 res 1
cn3 res 1
;************************************************* *********************
RESET_VECTOR CODE 0x1FF ; processor reset vector
; Internal RC calibration value is placed at location 0x1FF by Microchip
; as a movlw k, where the k is a literal value.
MAIN CODE 0x000
movwf OSCCAL ; update register with factory cal value
;Initialisierung
start
movlw b'00000000' ;OPTION-Register konfigurieren, damit TRIS nicht überschrieben
OPTION ;wird.
movlw b'11111001' ;GP1,GP2 = Ausgänge.
Tris GPIO
clrf sGPIO
;Main
flash
movf sGPIO,w
xorlw b'00000110'
movwf GPIO
movwf sGPIO
;warten
clrf cn1
clrf cn2
movlw .23
movwf cn3
w1
nop ;1 Cycle
nop ;1 Cycle
decfsz cn1,f ;1 Cycle
goto w1 ;2 Cycle
;(256*5)=1280
nop ;1 Cycle
nop ;1 Cycle
decfsz cn2,f ;1 Cycle
goto w1 ;2 Cycle
;1280*(*256*5)=1638400
nop ;1 Cycle
decfsz cn3,f ;1 Cycle
goto w1 ;2 Cycle
;1634800*(4*23)=150732800µs=150,73s=2,5min
goto flash
END ; directive 'end of program'
die LEDs leuchten nur 8sec statt 2,5min. Als Quarz wird das interne mit
4Mhz verwendet