TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: nsblenin en 12 de Julio de 2010, 06:07:21
-
Bueno aver si alguien me puede ayudar que no veo donde está el error. Quiero que cada cierto tiempo el tmr0 interrumpa i me incremente LATD. Sin embargo el puerto D siempre esta a 0x01.
LIST P=18F4321, F=INHX32
#include <P18F4321.INC>
CONFIG OSC = INTIO2
CONFIG MCLRE = OFF
;variables i constants
ORG 0x000000
goto MAIN
ORG 0x000008
goto HI
HI
bcf INTCON, TMR0IF; netejem el flag de timer 0
INCF LATD
RETFIE FAST
MAIN
call INITOSC
BCF RCON, IPEN; desactivem prioritats d'interrupcio
call INITTIMER0
CLRF TRISD
MOVLW 0X01
MOVWF LATD
BUCLE
NOP
NOP
NOP
NOP
BRA BUCLE
INITOSC
MOVLW 0XEC;1110 1100
movwf OSCCON
RETURN
INITTIMER0
bcf RCON, IPEN
MOVLW 0XA0;1010 0000
MOVWF INTCON
movlw 84h; 1000 0100;
movwf T0CON
movlw 12h
movwf TMR0L
movlw 7Ah
movwf TMR0H
return
END
-
Estimado NSBLENIN
Por casualidad tengo una tarjeta con 8 leds conectados al puerto D en un 18F4620 (igual al tuyo en lo que respecta a los puertos) y le grabe tu codigo tal cual lo pusistes sin cambiarle nada en absoluto.... Y me funciona correctamente... de hecho la cuenta en el puerto incrementa aprox cada segundo...
De repente algo mal seteado en tu MPASM o en tu grabador de pic??? Pero en tu codigo definitivamente no hay error.