#include "ADuC812.h" #include "max.h" #define SV 0x7 unsigned char mTikPulse, T, VihodZaPredeli; unsigned char mTikPer1s=175, mCountTik=0; unsigned char des, edin = 0x80; char mas[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0xFF, 0x6F}; void WriteMax(unsigned char xdata *regnum, unsigned char val){ unsigned char oldDPP=DPP; DPP=8; *regnum=val; DPP=oldDPP; } //========Timer INTERRUPT========= void t0ISR(void) interrupt 1 { TR0=0; TH0=0; TL0=0; TR0=1; mCountTik++; mTikPulse++; if (mCountTik == mTikPer1s) { des = (T/10); edin =(T-T/10); WriteMax(SV,0x01); while(1){ WriteMax(EXT_LO , 0x01); WriteMax(EXT_HI , mas[des]); WriteMax(EXT_LO , 0x00); WriteMax(EXT_LO , 0x02); WriteMax(EXT_HI , mas[edin]); WriteMax(EXT_LO , 0x00); } } return; } void t2ISR(void) interrupt 5 { if (EXF2 == 1){ EXF2 = 0; T = 4*mTikPulse; mTikPulse = 0; if ((T>=8)|(T<=28)) mCountTik = 0; } if (TF2 == 1){ TF0 = 0; } return; } //================================ void main(void){ PLLCON = 0; //16MHZ while(!(PLLCON&LOCK)); EA=1; //Timer0 and 2 On TMOD|=0x01; TR0=1; ET0=1; T2CON = 0x9; ET2=1; T2CON |= 0x4; while(1){ } }