hi members... i have a question today. i'm working with the sdcc cross compiler and metabolize c in assembler. i want to delay some programms but i can't use the function sleep or wait in sdcc. i have realized the delay with grinds at the moment but its very inexactly. sorry for the bad spelling i'm a german schoolboy i can't it superiorly. yours sincerely nick
i know that i could use a hardware timer or likewise...only how, that is the question! Do a search here on "the bible" and you will find what you need there. Erik An explanation since you are seemingly weak in english" "the bible" (lower case) is NOT "the Bible" (uppercase), but the basic document describing the function of a '51 oh well here are the links to "the bible" Chapter 1 http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_ARCH_1.pdf chapter 2 http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_PROG_GUIDE_1.pdf chapter 3 http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf
i have solved the problem alone... i have write the folowing timer function (delay of one second): void timer(void) { #define TF0_VECTOR 1 int R7=20; TR0=0; TF0=0; TMOD=TMOD | 0xF0; //Timer 0,16 bit Timer TMOD=TMOD & 0x01; TL0=0xAF; //Timer 0, set 1 second TH0=0x3C; TR0=1; //start timer while(R7!=0) { if(TF0!=0) //test if the timer overflow { TR0=0; //stop timer TF0=0; //clear the overflow flag R7--; TR0=1; } } } Thank's for you help yours sincerely nick