TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Mrpic en 15 de Julio de 2006, 12:57:08
-
buenas
lo que pasa es que estoy haciendo un contador con el TRM1 con preescala 1:8 ya que necesito contar hasta un numero muy elevado y cuando llegue a dicho numero tendria que desbordarse, cosa con la cual tengo problema tambien en la interrupcion.
lo que me sucede es que para simular los pulsos estoy usando un generador de pulsos con el 555 y ya que tengo que mandar tantos pulsos tengo que colocarlo a funcionar muy rapido
entonces ahi me surgen varias dudas:
* la frecuencia de envio de los pusos del 555 es de 800 hz, nose si esto cause problemas, pues no tengo idea si el TMR1 tenga alguna limitacion de frecuencia para la llegada de pulsos.
* tambien si me podrian ayudar enviandome una subrutina del TMR1 como contador y con interrupcion por desbordamiento que funcione perfectamente se los agradeceria porque asi podria comparar a ver si tengo algun error en la configuracion.
Estoy trabajando con un PIC16F877A y en ASM
gracias
-
List p=16f877 ; tipo de procesador
include "P16F877" ;
variables equ 0x20 ; aqui añades los registros que necesite, siempre a partir de esta direccion
org 0x00 ; reset
goto inicio
org 0x04 ; vector de interrupcion
goto interrup ;
interrup bcf PIR1,0
movlw b'00000001'
xorwf PORTB,F ; rb0 cambiara de estado cada vez que timer1 se desborde
retfie ; retorno al programa principal
; programa principal
incio clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
bsf STATUS,RP0
movlw b'00000110'
movwf ADCON1 ; puerto A digital
clrf TRISA
clrf TRISB
movlw b'11111111'
movwf TRISC
clrf TRISD
clrf TRISE ; salidas digitales
bsf PIE1,0 ; habilita interrupcion timer1
bcf STATUS,RP0
movlw b'00110011'
movwf T1CON
clrwdt
movlw b'11000000'
movwf INTCON ; habilita interrupciones
loop clrwdt
goto loop
end
Ahi tienes un programita , tienes que aplicarle los pulsos por la entrada RCO/T1CKI, RB0 te cambiara de estado siempre que se desborde el timer1. :)