I need to write only numbers (every second) in string on display (memory mapped on 0x8001 adress) which are divding with 2 .
I must use counter not delay () for interrupt ...
Code:#include <reg51.h> #include <math.h> typedef unsigned char byte; byte a[3]= {2,1,8}; byte counter, frequency,displ; int i=0; byte xdata display _at_ 0x8001; sbit switcher=P0^0; void Inic(void) { EA=1; ET0=1; TMOD=1; TH0=0x3C; TL0=0xB0; TR0=1; counter=1; frequency=0; } void timer0(void) interrupt 1 using 2 { TR0=0; TH0=0x3C; TL0=0xB0; TR0=1; if(switcher) { if(!(--counter)) { counter=frequency; display=displ; }} } void main(void) { Inic(); while(1) { if(switcher) { for (i=0;i<3;i++) { if(a[i]/2) { displ=a[i]; frequency=20; } } } } }


Reply With Quote
