trình băy kỹ hơn phđn. phía dưới, thủ túc năy chỉ lăm việc khi có yíu cầu từ mây tính gửi tín hiệu cần về Home.
- N14 thủ tục năy lăm công việc kiểm tra trạng thâi câc cảm biến Home
của 3 trục x, y, z. thủ tục năy hoạt động lien tục khi có yíu cầu về Home. Vă
BNRNEENHEEEENNER nan. ớằớằớằĂŠ<--ằ-—
SVTH: Dương Văn Toăn - Dương Phú Tđn 34
Khoa Cơ khi Tự Động & Robot ——— —— Đồ Ân Tốt Nghiệ —--o-.Ầ-_ỀẺ.Ẻ...'.
kết thúc không lăm khi đê về Home.
- NIŠ thủ tục lăm công việc kiểm tra trạng thâi cảm biến cữ hănh trình, thủ tục luôn được gọi trong suốt quâ trình nội suy.
- N16, N17 lă câc thủ tục lăm công việc cho phĩp câc phím trín bảng điều khiển hoạt động hay không hoạt động.
Trín đđy lă hết phần khai bâo câc biến, thủ tục cũng như câc file trong thư viện phần mềm. Sau đđy nhóm tiếp tục trình băy phần chương trình chính của chương trình. void mán() ( trise=0x00; trisd=0x00; trisb=0x;
Set timer I(TI INTERNAL|TI DIV BY 4),/N18 setup trmer 2(12 DIV BY 4,159,16);
enable interrupts(INT TIMER2), /N20 enable_interrupts(int_rda); /N2I enable_interrupts(imt_EXT), N22 ext_int edge(L_ to_H); /N23 enable_imnterrupts(GLOBAL); /N24
POrte=7; N25
đelay_ms(1000); ¡N26
porte=0; N27
portd=255, /N28
set_ timer I(54286); N29
⁄ dem 65535(so) mat thoi gian 52.4 ms
⁄ vay 10ms đem đuoc 11250(o)
Trong chương trình chính đầu tiín lă việc khai bâo câc Port văo ra dữ liệu TrisE=0x00 lă công ra dữ liệu. tương tự cho PortD. PortB lă cổng văo dữ liệu.
- NI§ Căi đặt ngắt timerl với chu kỳ ngắt được xâc lập từ dòng N29. với hu kỳ ngắt lă 10ms. Timerl năy cứ 10ms gọi thực hiện một lần công việc thực hiện lă do ta viết trong chương trình ngắt timer1. Ở phần trín ta không thấy không có dòng lệnh năo cho phĩp ngắt timer Ï hoạt động, mă chỉ khai bâo vă xâc lập thời gian ngắt cho timerl. Như vậy ta cần theo dõi tiếp xem ngắt
timer1 hoạt động khi năo, vă khi đê hoạt động thì lăm những công việc gì.
- N19 lă một lệnh giống như căi đặt ngắt cho timer]. nhưng với chu kỳ ngắt lms, nếu như dung thạch anh 20Mhz. Khâc với timerl, timer2 được phĩp hoạt động ngay khi văo chương trình chính. Dòng lệnh cho phĩp timer2 hoạt động lă dòng N20. Công việc ngắt của timer2 lăm những công việc gì
——iiiiiiiii=-=-in=====ỷ-nnauirEnEnEỶc=Ằ===
SVTH: Dương Văn Toăn - Dương Phú Tđn 35
Khoa Cơ khi Tự Động & Robot Đồ Ân Tết Nghiệp
nhóm sẽ trình băy ngay sau khi giới thiệu hết câc dòng lệnh khai bâo trong chương trình chính.
- N21 Thông bâo cho chương trình biết ngất truyền giao tiếp hoạt động. N22 cho phĩp ngắt ngoăi hoạt động, ngắt năy thực thi khi có yíu cđu về Home, ngắt ngoăi nhận tâc động cạnh xuông vă được khai bâo ở dòng N23. N24 chỉ ra câc ngắt được khai bâo ở trín có giâ trị trong toăn chương trình. Câc dòng tiếp theo không có gì liín quan đến quâ trình điíu khiển mă chỉ BIÚp ta dễ theo dõi mỗi khi bắt đầu thực hiện chương trình led PortE sang lín trong thời gian l giđy.
Khi chương trình đi đến đđy nó sẽ chuyển xuống vòng lặp phía dưới vă sẽ lăm những yíu cầu ở trong vòng hỏi cung năy níu thoa yíu cđu.
while (1)
(—
Dibabhle interrups(INT TIMERI), N30
swifch(mode) /#M3i
{
case l: cw x(); breaR; ưM32 case 2: ccw x(); break;
case 3: cw_y(; break;
case 4: ccw v(; break,
case 5: cw_z(); break; case 6: ccw_z(); break; case 7' home xyzQ0; break,
case 8: on keyboard0; break;
case 9: of keyboard(); break;
Trong vòng lặp năy nếu như không thỏa câc yíu cầu bín trong vòng lặp nó không lăm gì cả, mă chỉ chạy vòng đi vòng lại trong đó với mục đích tìm - ra một điều kiện năo đó thoả để lăm.
- N30 dòng khai bâo không cho phĩp ngắt timerl hoạt động, như ta thấy ở trín timerl chỉ được khai bâo xâc lập câc thong số chu kỳ ngắt mă, chưa cho phĩp hoạt động. Tuy nhiín ở trong vòng hỏi cung năy timerl năy luôn bị vô hiệu hoâ ngắt timerl Xảy ra.