Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "iodefine.h"
- #include "lcd.h"
- #include "inline.h"
- #define klawiatura_Obszar 0x20000
- #define klawiatura_bufor (*(volatile unsigned char*)(klawiatura_Obszar+1))
- const short sin_table[360] = {
- 0x07FF,0x0822,0x0846,0x086A,0x088D,0x08B1,0x08D5,0x08F8,0x091C,0x093F,
- 0x0962,0x0985,0x09A8,0x09CB,0x09EE,0x0A11,0x0A33,0x0A55,0x0A77,0x0A99,
- 0x0ABB,0x0ADC,0x0AFE,0x0B1F,0x0B3F,0x0B60,0x0B80,0x0BA0,0x0BC0,0x0BDF,
- 0x0BFF,0x0C1D,0x0C3C,0x0C5A,0x0C78,0x0C95,0x0CB2,0x0CCF,0x0CEB,0x0D07,
- 0x0D23,0x0D3E,0x0D59,0x0D73,0x0D8D,0x0DA7,0x0DC0,0x0DD8,0x0DF0,0x0E08,
- 0x0E1F,0x0E36,0x0E4C,0x0E62,0x0E77,0x0E8C,0x0EA0,0x0EB4,0x0EC7,0x0EDA,
- 0x0EEC,0x0EFE,0x0F0F,0x0F1F,0x0F2F,0x0F3F,0x0F4D,0x0F5C,0x0F69,0x0F76,
- 0x0F83,0x0F8F,0x0F9A,0x0FA5,0x0FAF,0x0FB9,0x0FC2,0x0FCA,0x0FD2,0x0FD9,
- 0x0FDF,0x0FE5,0x0FEB,0x0FEF,0x0FF3,0x0FF7,0x0FFA,0x0FFC,0x0FFD,0x0FFE,
- 0x0FFF,0x0FFE,0x0FFD,0x0FFC,0x0FFA,0x0FF7,0x0FF3,0x0FEF,0x0FEB,0x0FE5,
- 0x0FDF,0x0FD9,0x0FD2,0x0FCA,0x0FC2,0x0FB9,0x0FAF,0x0FA5,0x0F9A,0x0F8F,
- 0x0F83,0x0F76,0x0F69,0x0F5C,0x0F4D,0x0F3F,0x0F2F,0x0F1F,0x0F0F,0x0EFE,
- 0x0EEC,0x0EDA,0x0EC7,0x0EB4,0x0EA0,0x0E8C,0x0E77,0x0E62,0x0E4C,0x0E36,
- 0x0E1F,0x0E08,0x0DF0,0x0DD8,0x0DC0,0x0DA7,0x0D8D,0x0D73,0x0D59,0x0D3E,
- 0x0D23,0x0D07,0x0CEB,0x0CCF,0x0CB2,0x0C95,0x0C78,0x0C5A,0x0C3C,0x0C1D,
- 0x0BFF,0x0BDF,0x0BC0,0x0BA0,0x0B80,0x0B60,0x0B3F,0x0B1F,0x0AFE,0x0ADC,
- 0x0ABB,0x0A99,0x0A77,0x0A55,0x0A33,0x0A11,0x09EE,0x09CB,0x09A8,0x0985,
- 0x0962,0x093F,0x091C,0x08F8,0x08D5,0x08B1,0x088D,0x086A,0x0846,0x0822,
- 0x07FF,0x07DB,0x07B7,0x0793,0x0770,0x074C,0x0728,0x0705,0x06E1,0x06BE,
- 0x069B,0x0678,0x0655,0x0632,0x060F,0x05EC,0x05CA,0x05A8,0x0586,0x0564,
- 0x0542,0x0521,0x04FF,0x04DE,0x04BE,0x049D,0x047D,0x045D,0x043D,0x041E,
- 0x03FE,0x03E0,0x03C1,0x03A3,0x0385,0x0368,0x034B,0x032E,0x0312,0x02F6,
- 0x02DA,0x02BF,0x02A4,0x028A,0x0270,0x0256,0x023D,0x0225,0x020D,0x01F5,
- 0x01DE,0x01C7,0x01B1,0x019B,0x0186,0x0171,0x015D,0x0149,0x0136,0x0123,
- 0x0111,0x00FF,0x00EE,0x00DE,0x00CE,0x00BE,0x00B0,0x00A1,0x0094,0x0087,
- 0x007A,0x006E,0x0063,0x0058,0x004E,0x0044,0x003B,0x0033,0x002B,0x0024,
- 0x001E,0x0018,0x0012,0x000E,0x000A,0x0006,0x0003,0x0001,0x0000,0x0000,
- 0x0000,0x0000,0x0000,0x0001,0x0003,0x0006,0x000A,0x000E,0x0012,0x0018,
- 0x001E,0x0024,0x002B,0x0033,0x003B,0x0044,0x004E,0x0058,0x0063,0x006E,
- 0x007A,0x0087,0x0094,0x00A1,0x00B0,0x00BE,0x00CE,0x00DE,0x00EE,0x00FF,
- 0x0111,0x0123,0x0136,0x0149,0x015D,0x0171,0x0186,0x019B,0x01B1,0x01C7,
- 0x01DE,0x01F5,0x020D,0x0225,0x023D,0x0256,0x0270,0x028A,0x02A4,0x02BF,
- 0x02DA,0x02F6,0x0312,0x032E,0x034B,0x0368,0x0385,0x03A3,0x03C1,0x03E0,
- 0x03FE,0x041E,0x043D,0x045D,0x047D,0x049D,0x04BE,0x04DE,0x04FF,0x0521,
- 0x0542,0x0564,0x0586,0x05A8,0x05CA,0x05EC,0x060F,0x0632,0x0655,0x0678,
- 0x069B,0x06BE,0x06E1,0x0705,0x0728,0x074C,0x0770,0x0793,0x07B7,0x07DB
- };
- void Ekran_startowy(void);
- short k=0, j=0;
- short count;
- short Fzad = 8;
- short Dzad = 5;
- short Przetwornik;
- short wy_filtr = 0;
- short reszta = 0;
- unsigned short fi = 5;
- char stan_pracy = 0;
- short wypelnienie = 5;
- unsigned long xxx;
- void przerwanie2()
- {
- k++;
- j++;
- if(k>=360)
- {
- k = 0;
- }
- if(j>=360) j -= 360;
- ITU2.GRB= (xxx*(((long)sin_table[j]*2800)/0x0FFF))/100;
- ITU3.GRB=(xxx*(((long)sin_table[j]*2800)/0x0FFF))/100;
- ITU3.TSR.BIT.IMFA = 0;
- }
- void STOP_PWM3()
- {
- ITU.TSTR.BIT.STR3=0;
- ITU3.GRB=ITU3.GRA;
- ITU3.TIER.BYTE=0x00;
- }
- void STOP_PWM2()
- {
- ITU.TSTR.BIT.STR2=0;
- ITU2.GRB=ITU2.GRA;
- ITU2.TIER.BYTE=0x00;
- }
- void odczytaj_klawiature(void)
- {
- unsigned char sk;
- sk = klawiatura_bufor&0x7f;
- switch(sk)
- {
- case 0x7d:stan_pracy=0;GotoXY(2,1);puts("STOP ");STOP_PWM3();STOP_PWM2();break;
- case 0x7e:stan_pracy=1;GotoXY(2,1);puts("START");init_ITU3();init_ITU2();break;
- case 0x77:
- if(fi<175)
- {
- fi++;
- j=k+fi;
- GotoXY(1,11);
- putfi(fi);
- };break;
- case 0x7b:
- if(fi>5)
- {
- fi--;
- j=k+fi;
- GotoXY(1,11);
- putfi(fi);
- };break;
- }
- GotoXY(2,9);
- if(fi <= 5)
- puts("MIN");
- else if(fi == 175)
- puts("MAX");
- else if(fi > 5 && fi <175)
- puts(" ");
- }
- void Ekran_startowy(void)
- {
- GotoXY(1,1);
- puts("A=");
- GotoXY(1,8);
- puts("Fi=");
- putfi(fi);
- GotoXY(1,14);
- puts("st");
- GotoXY(2,1);
- puts("STOP ");
- }
- void puts(char * c)
- {
- do
- {
- putchar(*c);
- c++;
- }while(*c);
- }
- void putI(unsigned short i)
- {
- putchar(i/10+'0');
- putchar(i%10+'0');
- }
- void putI2(unsigned short i)
- {
- if(i/1000)putchar((i/1000)+'0');
- putchar((i/100)%10+'0');
- putchar(',');
- putchar((i/10)%10+'0');
- putchar(i%10+'0');
- }
- void putfi(unsigned short i)
- {
- if(i/1000)putchar((i/1000)+'0');
- putchar((i/100)%10+'0');
- putchar((i/10)%10+'0');
- putchar(i%10+'0');
- }
- void puthz(unsigned short i)
- {
- putchar(i+'0');
- }
- void init_ITU0(void)
- {
- ITU.TSTR.BIT.STR0 = 0;
- ITU0.TCR.BYTE = 0xC3;
- ITU0.GRB=1999;
- ITU.TSTR.BIT.STR0 = 1;
- }
- void init_ITU3(void)
- {
- ITU.TMDR.BIT.PWM3 = 1;
- ITU.TSTR.BIT.STR3 = 0;
- ITU3.TCR.BYTE = 0xA1;
- ITU3.TIER.BYTE = 0xF9;
- ITU3.TIOR.BYTE= 0xF8;
- ITU3.GRA = 2800;
- }
- void init_ITU2(void)
- {
- ITU.TMDR.BIT.PWM2 = 1;
- ITU.TSTR.BIT.STR2 = 0;
- ITU2.TCR.BYTE = 0xA1;
- ITU2.TIER.BYTE = 0xF8;
- ITU2.TIOR.BYTE= 0xF8;
- ITU2.GRA = 2800;
- ITU.TSTR.BIT.STR2 = 1;
- ITU.TSTR.BIT.STR3 = 1;
- }
- void init_AC(char l_kanalow)
- {
- AD.ADCSR.BIT.ADF = 0;
- AD.ADCSR.BIT.ADIE = 0;
- AD.ADCSR.BIT.SCAN = 1;
- AD.ADCSR.BIT.CKS = 0;
- AD.ADCSR.BIT.CH = l_kanalow;
- AD.ADCSR.BIT.ADST = 1;
- }
- short odczyt_AC(char nr_kanalu)
- {
- if(AD.ADCSR.BIT.ADF){
- switch(nr_kanalu)
- {
- case 0: Przetwornik = (AD.ADDRA>>6); break;
- case 1: Przetwornik = (AD.ADDRB>>6); break;
- case 2: Przetwornik = (AD.ADDRC>>6); break;
- case 3: Przetwornik = (AD.ADDRD>>6); break;
- }
- }
- return Przetwornik;
- }
- void filtr_cyfrowy(short wejscie, short * wyjscie)
- {
- long temp,temp1;
- temp=(255*(long)*wyjscie) + ((255*(long)reszta)>>8) + wejscie;
- temp1 = (temp>>8);
- *wyjscie = (short)temp1;
- reszta = (short)(temp - (temp1<<8));
- }
- void czestotliwosc_zadana()
- {
- filtr_cyfrowy(odczyt_AC(2),&wy_filtr);
- xxx =2+(((long)wy_filtr*97) / 1023);
- GotoXY(1,3);
- putI2(xxx);
- if(xxx == 0) xxx = 50;
- }
- int main (void)
- {
- IniLCD();
- Ekran_startowy();
- init_ITU0();
- init_AC(2);
- STOP_PWM2();
- STOP_PWM3();
- ITU.TSTR.BIT.STR1=0;
- ITU1.TCR.BYTE=0xA3;
- ITU1.GRA=1000;
- ITU1.TIOR.BYTE=0x88;
- ITU1.TIER.BYTE=0xF8;
- ITU.TSTR.BIT.STR1=1;
- while(1)
- {
- if(ITU0.TSR.BIT.IMFB)
- {
- ITU0.TSR.BIT.IMFB = 0;
- count++;
- czestotliwosc_zadana();
- if(count>=1000)
- {
- count = 0;
- }
- if(!(count%100))
- {
- odczytaj_klawiature();
- }
- if(!(count%10))
- {
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement