#include "8051.h"
xdata at 0x4000 unsigned char liczba; xdata at 0x4001 unsigned char wyswietlacz;
#define c0 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 #define c1 0x02 | 0x04 #define c2 0x01 | 0x02 | 0x40 | 0x10 | 0x08 #define c3 0x01 | 0x02 | 0x40 | 0x04 | 0x08 #define c4 0x20 | 0x40 | 0x02 | 0x04 #define c5 0x01 | 0x20 | 0x40 | 0x04 | 0x08 #define c6 0x01 | 0x20 | 0x40 | 0x04 | 0x08 | 0x10 #define c7 0x01 | 0x02 | 0x04 #define c8 0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 #define c9 0x01 | 0x20 | 0x40 | 0x02 | 0x04 | 0x08 | 0x047 #define kr 0x80
char tab[11]={c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,kr}; char zn; char z[2]={48,50};
void petla(int op) { unsigned int i; for (i=0;i<op;i++){} }
int obsluga(void) interrupt 3 using 1 {
zn++; wyswietlacz = 1; liczba = c1; liczba = 0; TR0 = 0; TH0 = 0; TL0 = 0x80; TR0 = 1; return 0; }
void main(void) {
SCON = 80; TH1 = TL1 = 253; //19200 TR0 = 0; //wy³±czam timer TH0 = 0; TL0 = 0x80; //ustawiam warto¶æ od której liczy TI = 0; RI = 0; PCON = 128; ET0 = 0x01; IE = 130; TMOD = 32; ES = 1; EA = 0x01; TR0 = 1;
//szeregowe z³±cze SCON = 0x40;
zn=49; for (;;) { petla(100); SBUF=zn; TI=0; if (zn==55)zn=49; }
}
dlaczego to niedziala, a kokretnie przerwanie wygenerowane przez przepe³nienie timera T0? no juz probowalem wielu kombinacji, ale moze gdzies robie glupi blad :/