8051 TİMER ALT PROGRAMI

Başlatan a.ser20, 23 Kasım 2022, 01:06:54

a.ser20

Kesme alt programını çalıştıramıyorum bu işten anlayan var mı?



power20

#1
Timer'ı başlatan, frekansını ayarlayan, interrupt izni veren kod gerekir. Bu işler yapılmadan interrupt kendiliğinden çalışmaz


Şuna benzer bir kod gerekir

/*
 * 8051_Timer_Interrupt
 * http://www.electronicwings.com
 */
#include...
void Timer_init()
{
TMOD = 0x01; /* Timer0 mode1 */
TH0 = 0x4C; /* 50ms timer value */
TL0 = 0x00;     
TR0 = 1;        /* Start timer0 */
}
void Timer0_ISR() interrupt 1 /* Timer0 interrupt service routine (ISR) */
{
test = ~test;  /* Toggle port pin */
TH0 = 0x4C;      /* 50ms timer value */
TL0 = 0x00;     
}
int main(void)
{
EA  = 1;          /* Enable global interrupt */
ET0 = 1;          /* Enable timer0 interrupt */
Timer_init();
  while(1);
}

a.ser20


a.ser20

#include "reg24le1.h" // I/O header file for NRF24LE1
#include <stdlib.h> // standard library
#include <stdio.h> // standard I/O library

int counter;
int counter2;

void ISR_Timer0(void) interrupt 1
    {
        if(TF1==1){
        counter++;
        if(counter>=20){
        P03=~P03;
        counter=0;
        }
    TF1=0;
    TH1=0X4B;
    TL1=0XFE;
}
   
}


void main()
{
P0DIR = 0; // Port1 as output
P03 = 0; // Pin 0 of Port 1 low
EA = 1; // Enable global interrupt
TMOD = 17 ; // timer0 in 16bit mode1
TR1=1;
   
// infinite loop
while(1);
}

flowchartx

Alıntı yapılan: a.serhatboz - 23 Kasım 2022, 13:11:13 [Genişlet]#include "reg24le1.h" // I/O header file for NRF24LE1
#include <stdlib.h> // standard library
#include <stdio.h> // standard I/O library

int counter;
int counter2;

void ISR_Timer0(void) interrupt 1
    {
        if(TF1==1){
        counter++;
        if(counter>=20){
        P03=~P03;
        counter=0;
        }
    TF1=0;
    TH1=0X4B;
    TL1=0XFE;
}
   
}


void main()
{
P0DIR = 0; // Port1 as output
P03 = 0; // Pin 0 of Port 1 low
EA = 1; // Enable global interrupt
TMOD = 17 ; // timer0 in 16bit mode1
TR1=1;
   
// infinite loop
while(1);
}

Hocam bu programda while(1)in içinde program koşturabilir miyiz

a.ser20

Sorunu çözdüm herkese teşekkür ederim (Timer kesmesi aktif etme bitini 1 yapmamışım)

Tabi ki neden koşturamayasınız