Let's see all the code...
Are you resetting the interrupt flags when you go to process the interrupt itself? They don't reset themselves...
Let's see all the code...
Are you resetting the interrupt flags when you go to process the interrupt itself? They don't reset themselves...
Hello,
I think the following code is not doing what you expect.
Timerset = $292B ' 22 ms with prescale of 1:2 dec 10541
The above line looks like it is setting the value of a variable.
movlw LOW(Timerset) ; 1 instruction cycle
This line takes the address of the variable in ram, it does not use its value.
addwf TMR1L,F ; 1 instruction cycle
movlw HIGH(Timerset) ; 1 instruction cycle
addwfc TMR1H,F ; 1 instruction cycle
If you never change the timeout value, you could change to something like
TIMERSET EQU $292B
and the movlw LOW(TIMERSET) will work.
If you want to change the timeout value at runtime
use something like
movfw TimerSet+1 ; Get the low byte of TimerSet variable
addwf TMR1L, F
movfw TimerSet ; Get the high byte of TimerSet variable
addwfc TMR1H, F
Keith
Keith, you hit the nail on the head , thank you. It works. I had all the rest of the code going except the timer. I got it going using The Timerset as a constant, and that did it. I now have a RTTY Teletype.
I still would like the time to be a variable so I could tune it a bit, but my assembler does not know about movwf. it will assemble movfw, so now to figure that one out....
I have not programmed assembler for many years. I first learned FAP(fortran assembler program) in 1964.. Just beginning to get good at it, and they made me manager of the department... So back to study and thank you so much
Jack W0KPH
Bookmarks