Her skal du lave en interrupt rutine, og skrive adressen på denne ind på en af de første adresser. Der findes noget der hedder interrupt vektore og disse er reelt blot en pege ping der peger på den funktion der skal kaldes når der kommer et interrupt. Jeg har selv laved en del kode til 8051, men kan ikke lige finde det nu. (Skal nok sende det når jeg finder det)....
Men kort sagt skal du gøre følgende :
1. Lave interrupt rutine. (Det der skal ske når der kommer interrupt).
2. Sætte interrupt vektor. mener man bruger @ eller sådan noget.
3. Tænde for timer interrupt et (samme)
4. Intalisere timer register således at det autoreloader start værdien (og sætter deleren)..
5. Start interruptet for timeren (f.eks. timer 1).
6. Tænde for hoved interruptet (Gøre ved at sætte et register højt eller lavt)
Jeg skal nok skrive koden når jeg lige finder den, hvis koden nedden for ikke kan bruges.
Jeg fandt lige noget kode på nette.... se
http://www.keil.com/download/c51.asp#include <reg52.h>
#include <stdio.h>
/*------------------------------------------------
Timer 0 Interrupt Service Routine.
Set a breakpoint on 'overflow_count++' and run the
program in the debugger. You will see this line
executes every 65536 clock cycles.
------------------------------------------------*/
static unsigned long overflow_count = 0;
void timer0_ISR (void) interrupt 1
{
overflow_count++; /* Increment the overflow count */
}
/*------------------------------------------------
MAIN C function
------------------------------------------------*/
void main (void)
{
/*--------------------------------------
Set Timer0 for 16-bit timer mode. The
timer counts to 65535, overflows, and
generates an interrupt.
Set the Timer0 Run control bit.
--------------------------------------*/
TMOD = (TMOD & 0xF0) | 0x01; /* Set T/C0 Mode */
ET0 = 1; /* Enable Timer 0 Interrupts */
TR0 = 1; /* Start Timer 0 Running */
EA = 1; /* Global Interrupt Enable */
/*--------------------------------------
Do Nothing. Actually, the timer 0
interrupt will occur every 65536 clocks.
--------------------------------------*/
while (1)
{
}
}
Håber du kan bruge det ellers skriv lige så ser jeg om jeg kan finde mit program...
Best Regaards
Janus S. Andersen
* Life is a dream in a programmers heaven *
[Redigeret d. 18/07-03 16:04:52 af Janus S. Andersen]