nie mogê wcelowaæ 1 sekundê. Chce ¿eby na porcie P1 co 1s zmienia³ siê stan. Wyliczy³em sobie to w ten deseñ ¿e:
11059200/12=921600 cykli w ci±gu 1s zatem
0.05 (1/20 sekundy) * 921600 = 46080 cyrkli w wci±gu 1/20 sekundy zatem max warto¶æ 65535 (16bit timer T0) - 46080 = 19456 przek³adaj±c to na HEX daje 4C00 gdzie TH0=0x4c a TL0=0 nastêpnie odpalam zmienna inkrementuj±c ja i je¶li bêdzie 20 zmieniam stan, ale jako¶ z 1 sekunda to siê trochê mocno mija, czy mo¿e kto¶ wie gdzie mog³em zrobiæ b³±d? Przedstawiam poni¿ej kod
#include <8051.h>
unsigned char zn;
void pr1() interrupt 1 using 1 { if ( zn == 19 ) P1 = 0; if ( zn == 38 ) {P1 = 1; zn = 0;} TR0 = 0; TH0 = 0x4c; TL0 = 0; TR0 = 1; zn++; }
void main(void) {
TH0 = 0x4C; TL0 = 0; TMOD = 0x01; EA = 1; ET0 = 1;
TR0 = 1; zn = 0;
while(1) { }
}