Rzeszów 10.03.2010

Mikronapędy w systemach komputerowych

Laboratorium 2:


Algorytm komutacji silników skokowych
w układzie otwartym

Artur Charchut

Mirosław Borek
Gr. L02, 2FD

1. Wstęp

Celem laboratorium było napisanie programu w języku C, obsługującego obroty silnika o częstotliwości wprowadzonej przez użytkownika.

2. Program napisany na zajęciach:

0x08 graphic

3. Wniosek:

Efektem działania przedstawionego programu było „kręcenie się” silnika. Nie realizował on jednak regulacji częstotliwości wprowadzanej przez użytkownika. Należało uzupełnić podany program aby do zmiennej CRCH wprowadzał liczbę podaną przez użytkownika. Poniżej przedstawiam kod uzupełnionego programu.

4. Poprawiony kod programu:

0x08 graphic

#include <reg515.sfr>

#include <lcd.h>

int tab[4]={8,2,4,1};

int a=0;

_interrupt 5 void fun(void)

{

TF2=0;

P1=tab[a];

a++;

if(a==4)

a=0;

}

void main()

{

int znak;

int poprz;

int i;

int liczba=0;

EAL = 1;

ET2 = 1;

T2R1 = 1;

T2I0 = 1;

init();

znak = get_char();

while(1)

{

poprz=znak;

znak = get_char();

if(znak !='\0' && poprz == '\0' && znak!='g' && znak!='l' &&
znak!='p' && znak!='d')

{

if(znak != 'e')

{

put_char(znak);

for(i=0;i<20000;i++);

liczba=liczba*10;

liczba=liczba+znak-48;

}

else

{

if (znak=='e')

{

//put_char(liczba);

liczba = 0;

}

}

}

}

}

#include <reg515.sfr>

#include <lcd.h>

int tab[4]={8,2,4,1};

int a=0, T, temp;

_interrupt 5 void fun(void)

{

TF2=0;

P1=tab[a];

a++;

if(a==4)

a=0;

}

void main()

{

int znak;

int poprz;

int i;

int liczba=0;

EAL = 1;

ET2 = 1;

T2R1 = 1;

T2I0 = 1;

init();

znak = get_char();

while(1)

{

poprz=znak;

znak = get_char();

if(znak !='\0' && poprz == '\0' && znak!='g' && znak!='l' &&
znak!='p' && znak!='d')

{

if(znak != 'e')

{

put_char(znak);

for(i=0;i<20000;i++);

liczba=liczba*10;

liczba=liczba+znak-48;

}

else

{

if (znak=='e')

{

T = 1000000/liczba;

temp = 0xFFFF - T;

CRCH = temp >> 8;

liczba = 0;

}

}

}

}

}