4 випадках)
if (! F0 && Gx! = 0) {if (i == 1) then i = 8; else i = i/2; Gx + +; xx -;}// рух // назад по Х (F1 && Gx! = 0) {if (j == 8) then j = 1; else j = j * 2; Gy -; yy + +;}// рух// вперед по Y (! F1 && Gx! = 0) {if (j == 1) then j = 8; else j = j/2; Gy + +; yy -;}// рух// назад по Y
}
cmh = j * 0x10 + i ;//формування позицій двигунів
P1 = cmh ;//передача їх в порт.
} interrupt 4
{short x, y;
TR0 = 0 ;//зупинка Т/С0
If (SBUF == 0xff)// якщо прийняте число дорівнює 0xFF, (для порушення переривання.)
{While (! RI); x = SBUF; RI = 0;// 1) чекаємо наступний байт.2) прийом Х. 3) скидання// біта готовності прийому.
While (! RI); y = SBUF; RI = 0;}// аналогічно.
if (x> chx) x = chx; if (x <0) x = 0;// захист від помилок введення.
Gx = x-xx; if (Gx <0) then F0 = 0; else F0 = 1;// обчислення зсуву і// спрямування.
if (y> chy) y = chy; if (y <0) y = 0;// аналогічно для Y
Gy = y-yy; if (Gy <0) then F1 = 0; else F1 = 1;
TR0 = 1 ;//запуск T0/C.
} main ()
{short n ;//для зчитування з порту.
EX1 = 1; EX0 = 1;// Дозвіл зовнішніх переривань
N = P1; i = N && 0x0f; j = N && 0xF0; j = j/0x10;
TMOD = 0x22 ;//режими таймерів T0/c-2, T1/C-2.
TH0 = 0xf3; TL0 = 0xf3 ;//частота обертання двигуна 3000 об/хв = 50 об/сек. // 48 кроків * 50 об/сек = 2400 кроків/сек
TH1 = 0xf3; TL1 = 0xf3 ;//счетчік1 - генератор частоти. обмін з ЕОМ - 2400 Бод
SCON = 0x40// 8 біт UART таймер2/32 * 2 (другий режим управління швидкістю)
TR0 = 1 ;//запускаємо таймери
TR1 = 1;
IT0 = 1; IT1 = 1 ;//виставляємо зовнішнє переривання по фронту (0,2 біти TCON).
IE = 0x8f ;//дозвіл переривань і конкретно від таймерів і зовнішніх.
F0 = F1 = 1 ;//виставляємо напрям осей для ініціалізації вперед.
While (1);
}
Висновок
При виконанні даної курсової роботи було вивчено однокристальний мікроконтролер Temic 80C51, вивчено основні принципи дії крокових двигунів і придбані навички програмування однокристальних контролерів.
Додаток
В