keil, ADuc831 i odmierzanie czasu

Mam problem z najszybszym stoperem na swiecie. Mimo wielu prob nie udalo mi sie go zwolnic. Moze ktos doswiadczony wiedzialby co robie zle. Oto fragmenty kodu: void obs_T0(void) interrupt 1 { a++; TL0=0xff; TH0=0x4b; if (a>20) { a=0; SekundyJedn++; itd..} }

void wyswietl(unsigned char pozycja, unsigned char cyfra) { pozycja=pozycja<<4; pozycja=pozycja|cyfra; P0=pozycja; } void main(void) { EA=1; ET0=1; TMOD=0x01; TH0=0x4b; TL0=0xff; TR0=1; while (1) {... } Ja juz kompletnie nie wiem co moze byc zle. Czasami Keil wyswietla taki komunikat:

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS SEGMENT: ?PR?_WYSWIETL?STOPER Za pomoc bede bardzo wdzieczny. Pozdrawiam

Dominik

Reply to
Dominik
Loading thread data ...

Nie znam się na keilu, ale czy zdefiniowałeś zmienną "a" jako "volatile" ?

Reply to
Sebastian Bialy

Użytkownik Dominik napisał:

...

A używanie C ma PODOBNO życie upraszczać... ;) Niestety, gdyby było w asm to bym Ci powiedział...

Reply to
A.Grodecki

Pewnego dnia A.Grodecki przemówił ludzkim głosem:

I upraszcza ! Tylko jak każdym narzędziem tak i c trzeba umieć się posługiwać i kontrolować to co wypluwa z siebie kompilator.

Reply to
Zbych

Dla potomnych - to byla wina Keila, czyli nie zawsze warto sugerowac sie symulatorami. W rzeczywistosci, na procku program chodzil ok. Pozdrawiam Dominik

Reply to
Dominik

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.