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:
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:
#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;
}
}
}
}
}