Witam.
Mam malutki problem z przerwaniem z UART'a. Otoz program wchodzi do przerwania i w nim zostaje, wykonujac je ciagle. W debugerze wszystko dziala swietnie a w rzeczywistosci ... niestaty nie. Nizej zalaczam listing programu. Srodowisko keil, procek 89s52.
Mam malutki problem z przerwaniem z UART'a. Otoz program wchodzi do przerwania i w nim zostaje, wykonujac je ciagle. W debugerze wszystko dziala swietnie a w rzeczywistosci ... niestaty nie. Nizej zalaczam listing programu. Srodowisko keil, procek 89s52.
Cytat:#include <AT89X52.H>
#include <stdio.h>
#define FREQ 3686400L //czestotliwosc Rezonatora
//#define AdresR 0xD0;
//#define AdresW 0xD1;
sbit przek2=P2^0;
sbit przek1=P2^1;
sbit dioda3=P2^5;
sbit dioda2=P2^6;
sbit dioda1=P2^7;
sbit SDA=P1^2;
sbit SCL=P1^1;
unsigned char bufor[10]=0;
void uart_ini(void) //inicjalizacja uart
{
SCON = 0x52; //52
TMOD = 0x20;
TCON = 0x69;
TH1=0xF8; //predkosc 1200bps
TR1=1;
}
void Delay (unsigned int k)
{
unsigned int i,j;
for (j=0; j<k; j++)
for (i=0; i <=50; i++); //standart 24
}
void UART_irq(void) interrupt 4 using 2
{
unsigned char bufor;
if (RI == 1) {
RI=0; //zerowanie flagi “do_odbioru”
//ES=0; //probowalem blokowac przerwania z RS - bez skutecznie
printf("odebrano znak \n"); //zadanie mialo tylko informowac o odebranym znaku
//Delay(100);
//bufor=getchar();
}
//ES=1;
}
void main () // petla glowna programu
{
uart_ini();
RI=0;
EA=1; //zezwolenie na przerwania
ES=1; //przerwanie z uartu.
while (1)
{
printf("r \n");
Delay(100);
} //koniec petli programu
} //koniec programu