Điều khiển đo và cắt chiều dài dùng vi xử lý

MỤC LỤC Chương 1: Thuyết minh Thiết kế và vận hành mô hình máy đo và cắt chiều dài. 1 I. Giới thiệu chung 1 II. Nguyên lí làm việc 2 III. Các Lưu đồ điều khiển hệ thống 8 Chương 2: Thiết kế phần cứng 13 1. Mạch Vi Xử Lí 13 2. Khối tạo địa chỉ 15 3. Khối giao tiếp Vi xử lý và RAM(62256) 18 4. Khối đếm xung 19 5. Khối hiển thị 20 6. Khối bàn phím 21 7. Khối Mạch động lực 22 8. Mạch đóng ngắt dao 23 Chương 3: Điều Chỉnh Vị Trí Động Cơ DC 25 I. Khái niệm 25 II. Điều khiển vị trí dùng các vòng phản hồi 25 III. Thuật toán điều khiển PID 26 IV. Điều khiển vị trí dùng logic mờ 39 Chương 4: A. Động Cơ DC 41 I. Đặc tính cơ của động cơ DC kích từ độc lập hoặc kích từ kích thích song song 41 II. Đặc tính cơ của động cơ kích từ nối tiếp 49 III. Các phương pháp điều chỉnh tốc độ động cơ điện một chiều 51 B. Bộ giải mã vị trí 54 I. Encoder số 54 Chương 5: Phụ lục 59 A. Giới Thiệu Vi Xử Lý AT89C52 59 B. Giới Thiệu Các IC Sử Dụng Trong Đề Tài 74 C. Chương trình điều khiển 80

doc112 trang | Chia sẻ: banmai | Lượt xem: 2030 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Điều khiển đo và cắt chiều dài dùng vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
gioáng nhö nhieàu loaïi Encoder khaùc, boä giaûi maõ tuyeät ñoái goàm moät ñóa troøn, treân ñoù coù nhöõng khoaûng trong suoát vaø ñuïc. Aùnh saùng coù theå xuyeân qua nhöõng phaàn trong suoát ñeán boä caûm bieán quang ( Photo transistor ), khi ñóa quay thì boä caûm bieá baät leân 1 vaø phaàn aùnh saùng bò chaën bôûi nhöõng phaàn ñuïc laøm caûm bieán quang xuoáng 0. Nhö vaäy caûm bieán quang seõ taïo thaønh nhöõng xung tuaàn töï: Khi thieát bò maõ hoùa naøy ñöôïc söû duïng vôùi cuøng moät thieát bò khaùc, thì vò trí 0 cuûa truïc xem nhö goùc toïa ñoä. Khi truïc cuûa thieát bò maõ hoùa quay veà toïa ñoä goùc naøy thì goùc quay coù theå ñöôïc hieån thò treân boä chæ thò cuûa maùy. Tín hieäu ñaàu ra cuûa thieát bò maõ hoùa khoâng bò aûnh höôûng bôûi nhieãu cuûa thieát bò ñoùng, ngaét vaø khoâng yeâu caàu ñieàu chænh goùc quay chính xaùc. Hôn nöõa, thaäm chí neáu tín hieäu maõ hoùa ñaàu ra khoâng theå ñoïc vì truïc quay quaù nhanh, thì goùc quay chính xaùc ñöôïc ghi khi toác ñoä quay giaûm xuoáng, hoaëc ngay khi nguoàn cho thieát bò maõ hoùa bò ngaét. Theâm nöõa, maõ hoùa seõ khoâng hoaït ñoäng do söï rung ñoäng cuûa caùc thieát bòsöû duïng noù. Loaïi thieát bò maõ hoùa tuyeät ñoái, coù ñoä phaân giaûi cao hôn vaø cho ra caùc giaù trò thay ñoåi trong phaïm vi roäng hôn so vôùi thieát bò maõ hoùa taêng daàn ( Incremental Encoder ). Thieát bò maõ hoùa taêng daàn ( Incremental Encoder ) Laø loaïi thieát bò maõ hoùa coù daõy xung ra phuø hôïp vôùi goùc cuûa truïc quay. Thieát bò maõ hoùa naøy khoâng coù xung ra khi truïc khoâng laøm vieäc. Do ñoù caàn coù moät boä ñeáám ñeå xung ra. Thieát bò maõ hoùa cho bieát vò trí cuûa truïc quay baèng soá xung ñöôïc ñeám. Daïng thieát bò maõ hoùa naøy chæ coù 1 hay 2 keânh ngoõ ra : +Loaïi 1 chieàu ( chæ coù ñaàu keânh A ) laø loaïi chæ sinh ra xung khi truïc quay. +Loaïi 2 chieàu ( coù ñaàu ra keânh A vaø B ) cuõng coù theå cho bieát chieàu cuûa truïc quay, nghóa laø thuaän chieàu kim ñoàng hoà. Ngoaøi ra coøn coù ñaàu daây trung tính ( xung Z ) cho moãi voøng quay, coù nghóa laø neáu quay ñöôïc 1 voøng thì xung Z leân 1. - khi ñóa quay theo chieàu kim ñoàng hoà -Khi ñóa quay theo chieàu kim ñoàng hoà thì xung track 1 (B) treã pha hôn xung track 2 (A). -Ngöôïc laïi, khi ñóa quay ngöôïc chieàu kim ñoàng hoà thì xung track 1 (B) nhanh pha hôn xung track 2 (A). *Quay thuaän chieàu kim ñoàng hoà : Ñaàu A vöôït quaù B ( ñoä leäch pha ) = 90 +- 45 (T/4 +- T/8) *Quay ngöôïc chieàu kim ñoàng hoà : Moät soá thuaät ngöõ cô baûn ñeå xaùc ñònh Encoder: *Ñieän aùp nguoàn : Ñieän aùp ñaët treân 2 ñaàu Encoder. *Doøng tieâu thuï : Doøng ñieän lôùn nhaát coù theå chaïy qua Encoder khi ñaët ñieän aùp nguoàn. *Taàn soá ñaùp öùng cöïc ñaïi : -Laø taàn soá lôùn nhaát maø thieát bò maõ hoùa quay coù theå ñaùp öùng. Vôùi daïng maõ hoùa taêng daàn, taàn soá naøy töông öùng vôùi xung ra trong 1 giaây. Vì vaäy thieát bò phaûi thoûa maõn quan heä sau : ( Soá voøng quay + 60 voøng/phuùt ) x ñoä phaân giaûi <= taàn soá ñaùp öùng lôùn nhaát *Momen quaùn tính : -Laø moment cuûa quaùn tính truïc quay. Moment quaùn tính caøng nhoû truïc ñöôïc döøng caøng nhanh vaø eâm. *Ñaàu ra A vaø B: Ñoái vôùi thieát bò maõ hoùa 2 chieàu thì ngöôøi ta söû duïng 2 ñaàu ra song song ñeå xaùc ñònh truïc quay theo chieàu kim ñoàng hoà(CCW) döïa treân ñoä leäch pha cuûa ñaàu ra A vaø B. Maëc duø ñoä leäch pha lyù töôûng90 +- 0 song sai soá cho pheùp ñeán +-45. Ngoaøi ra coøn coù xung chuaånôû ñaàu ra cho moãi voøng quay cuûa truïc thieát bò, chöùc naêng chæ thò 0 naøy cuøng vôùi thieát bò maõ hoùa daïng soá ñöôïc duøng ñeå ñaët taïi ñieåm 0 cuûa moät boä ñeám noái beân ngoaøi hoaëc traïng thaùi nghæ cuûa boä nhaän bieát vò trí. *Ñoä phaân giaûi: Ñoái vôùi loaïi maõ hoùa taêng daàn, thì thuaät ngöõ naøy öùng vôùi soá xung ñaàu ra cho moãi voøng quay cuûa truïc. *Taûi troïng truïc: Laø taûi lôùn nhaát maø truïc coù theå chòu ñöôïc. Taûi troïng coù aûnh höôûng tröïc tieáp ñeán tuoåi thoï cuûa truïc. *Toác ñoä quay: Laø toác ñoä quay lôùn nhaát maø theát bò maõ hoùa coù theå chòu ñöïng veà maët cô hoïc. Moment khôûi ñoäng : Laø Moment caàn ñeå khôûi ñoäng truïc quay töø traïng thaùi nghæ, Moment khôûi ñoäng caøng nhoû thì truïc quay caøng eâm. Chöông 5: Phuï luïc. A. GIÔÙI THIEÄU VI XÖÛ LYÙ AT89C52 œ& VI ÑIEÀU KHIEÅN HOÏ MCS-51MCS-51tm Laø hoï vi ñieàu khieån do haõng intel saûn xuaát vaøo ñaàu nhöõng naêm 80 vaø ngaøy nay ñaõ trôû thaønh moät chuaån trong coâng nghieäp. baét ñaàu töø ic tieâu bieåu laø 8051 ñaõ cho thaáy khaû naêng thích hôïp vôùi nhöõng öùng duïng mang tính ñieàu khieån. vieäc xöû lí treân byte vaø caùc pheùp toaùn soá hoïc ôû caáu truùc döõ lieäu nhoû ñöôïc thöïc hieän baèng nhieàu cheá ñoä truy xuaát döõ lieäu nhanh treân ram noäi. taäp leänh cung caáp moät baûn tieän duïng cuûa nhöõng leänh soá hoïc 8 bit goàm caû leänh nhaân vaø leänh chia. noù cung caáp nhöõng hoã trôï môû roäng on-chip duøng cho nhöõng bieán 1 bit nhö laø kieåu döõ lieäu rieâng cho pheùp quaûn lí vaø kieåm tra bit tröïc tieáp trong ñieàu khieån vaø nhöõng heä thoáng logic ñoøi hoûi xöû lí luaän lí. Sau ñaây laø baûng so saùnh caùc IC trong hoï MCS-51TM : TEÂN LINH KIEÄN BOÄ NHÔÙ CHÖÔNGù TRÌNH ON CHIP BOÄ NHÔÙ DÖÕ LIEÄU ON CHIP TIMER 8051 4 KB MROM 128 Bytes 2 8031 0 KB 128 Bytes 2 8751 4 KB EPROM 128 Bytes 2 8951 4 KB Flash ROM 128 bytes 2 8052 8 KB MROM 256 Bytes 3 8032 0 KB 256 Bytes 3 8752 8 KB EPROM 256 Bytes 3 8952 8 KB Flash ROM 256 Bytes 3 2. VI ÑIEÀU KHIEÅN AT89C52 Do hoï MCS-51TM ñaõ trôû thaønh chuaån coâng nghieäp neân coù raát nhieàu haõng saûn xuaát ra noù, ñieån hình laø ATMEL Corporation. Haõng naøy ñaõ keát hôïp raát nhieàu tính naêng döïa treân neàn taûng kyõ thuaät cuûa mình ñeå taïo ra caùc vi ñieàu khieån töông thích vôùi MCS-51TM nhöng maïnh meõ hôn. AT89C52 laø moät vi ñieàu khieån 8 bit do ATMEL saûn xuaát, cheá taïo theo coâng ngheä CMOS, coù chaát löôïng cao, coâng suaát thaáp vôùi 8 KB Flash (flash programmable and erasable read only memory). Thieát bò naøy ñöôïc cheá taïo baèng caùch söû duïng kyõ thuaät boä nhôù khoâng boác hôi maät ñoä cao cuûa ATMEL vaø töông thích vôùi chuaån coâng nghieäp MCS-51TM veà taäp leänh vaø caùc chaân ra. Flash on-chip cho pheùp boä nhôù laäp trình ñöôïc laäp trình trong heä thoáng bôûi moät laäp trình vieân bình thöôøng. Baèng caùch noái 1 CPU 8 bit vôùi moät Flash treân moät chip ñôn, AT89C52 laø moät vi ñieàu khieån maïnh (coù coâng suaát lôùn), cung caáp moät söï linh ñoäng cao vaø giaûi phaùp veà giaù caû ñoái vôùi nhieàu öùng duïng vi ñieàu khieån. Caùc ñaëc ñieåm chuû yeáu cuûa AT89C52 : Töông thích hoaøn toaøn vôùi hoï MCS-51TM cuûa Intel. Boä nhôù chöông trình 8K Byte thuoäc loaïi Flash Memory.Ñoä beàn : 1000 laàn ghi/xoùa. Taàn soá hoaït ñoäng : 0 Hz ñeán 24 MHz.3 cheá ñoä khoùa boä nhôù. 256 x 8-Bit RAM noäi.32 ñöôøng I/O laäp trình ñöôïc (4 port). 3 timer/counter 16-bit.8 nguoàn ngaét. Cheá ñoä haï nguoàn vaø cheá ñoä löôøi tieâu toán coâng suaát thaáp. 2.1. Caáu taïo chaân Tuøy theo khaû naêng (veà kinh teá, kyõ thuaät, …) maø caùc nhaø saûn xuaát caùc saûn phaåm öùng duïng coù theå choïn moät trong 3 kieåu chaân do ATMEL ñöa ra. 2.2. Sô ñoà khoái 2.3. Moâ taû chöùc naêng cuûa caùc chaân Vcc : aùp nguoàn. GND : ñaát. Port 0 : laø moät port I/O 8-bit hai chieàu, cöïc maùng hôû. Khi xuaát ra, moãi chaân port coù theå laùi 8 ñaàu vaøo TTL. Neáu ghi caùc möùc 1 ra caùc chaân port thì caùc chaân naøy coù theå duøng nhö caùc ñaàu vaøo trôû khaùng cao. Port 0 cuõng coù theå ñöôïc caáu hình thaønh moät bus multiplex giöõa ñòa chæ thaáp vaø döõ lieäu khi truy caäp chöông trình hay döõ lieäu töø beân ngoaøi. Trong cheá ñoä naøy, port 0 coù ñieän trôû pullup noäi. Port 0 cuõng nhaän caùc byte maõ chöông trình khi laäp trình Flash vaø xuaát ra maõ chöông trình khi kieåm tra, khi ñoù caàn coù ñieän trôû pullup beân ngoaøi. Port 1 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 1 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 1 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân. Hôn nöõa, P1.0 vaø P1.1 coù theå ñöôïc duøng nhö laø ñaàu vaøo boä ñeám timer/counter 2 beân ngoaøi (P1.0/T2) vaø xung kích (P1.1/T2EX). Port 1 cuõng nhaän nhöõng byte ñòa chæ thaáp trong khi laäp trình Flash vaø trong khi kieåm tra Flash . Port 2 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 2 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 2 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân. Port 2 phaùt byte ñòa chæ cao trong khi nhaän leänh töø boä nhôù chöông trình ngoaøi vaø trong luùc truy xuaát ñeán boä nhôù döõ lieäu ngoaøi maø coù söû duïng ñòa chæ 16 bit (MOVX A, @DPTR). Trong öùng duïng naøy noù duøng ñieän trôû noäi keùo leân maïnh khi xuaát 1. Khi truy xuaát boä nhôù döõ lieäu ngoaøi duøng ñòa chæ 8 bit, port 2 seõ phaùt noäi dung cuûa thanh ghi P2 Port 2 cuõng nhaän byte ñòa chæ cao trong luùc laäp trình Flash vaø trong luùc kieåm tra Flash. Port 3 : laø moät port I/O 8-bit hai chieàu coù pullup noäi. Ñaàu ra port 3 coù theå laùi 4 ñaàu vaøo TTL. Khi vieát caùc möùc 1 ra caùc chaân port thì chuùng ñöôïc keùo leân do coù ñieän trôû noäi vaø coù theå duøng laøm ñaàu vaøo. Khi vai troø laø coång nhaäp, nhöõng chaân cuûa port 3 bò keùo xuoáng thaáp seõ ñoå doøng vì coù noäi trôû keùo leân. Port 3 cuõng coù nhöõng chöùc naêng cuûa hoï MSC-51 ñöôïc ieät keâ ôû baûng sau: BIT TEÂN ÑÒA CHÆ BIT CHÖÙC NAÊNG THAY THEÁ P3.0 RXD B0H Nhaän döø lieäu cho port noái tieáp P3.1 TXD B1H Truyeàn döø lieäu cho port noái tieáp P3.2 INT0 B2H Ngaét ngoaøi 0 P3.3 INT1 B3H Ngaét ngoaøi 1 P3.4 T0 B4H Ngoõ vaøo töø beân ngoaøi cho timer/counter 0 P3.5 T1 B5H Ngoõ vaøo töø beân ngoaøi cho timer/counter 1 P3.6 WR B6H Xung ghi boä nhôù döõ lieäu ngoaøi P3.7 RD B7H Xung ñoïc boä nhôù döõ lieäu ngoaøi Port 3 cuõng nhaän vaøi tín hieäu ñieàu khieån trong luùc laäp trình Flash vaø trong luùc kieåm tra Flash. RST : laø ngoõ vaøo Reset. Khi ngoõ naøy ñöôïc ñöa leân cao (trong ít nhaát hai chu kì maùy), caùc thanh ghi beân trong AT89C51 ñöôïc taûi nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng. ALE/PROG (Address Latch Enable) : ALE laø xung xuaát cho pheùp choát byte ñòa chæ thaáp khi truy caäp boä nhôù ngoaøi. Chaân naøy coøn laø ngoõ vaøo cuûa xung laäp trình (PROG) khi laäp trình Flash. Trong hoaït ñoäng bình thöôøng, ALE ñöôïc phaùt xung vôùi taàn soá 1/6 taàn soá dao ñoäng on-chip vaø coù theå ñöôïc duøng nhö xung thôøi gian chuaån beân ngoaøi. Tuy nhieân, caàn chuù yù laø moät xung ALE seõ bò maát khi truy caäp boä nhôù ngoaøi. Coù theå huûy boû chöùc naêng cuûa ALE baèng caùch set bit 0 cuûa thanh ghi ôû vò trí 8EH. Moät khi bit naøy ñöôïc set, ALE chæ tích cöïc khi coù leänh MOVX hoaëc MOVC. Neáu khoâng coù caùc leänh naøy thì ALE ôû möùc cao. Vieäc set bit 0 cuûa thanh ghi ôû vò trí 8EH khoâng laøm aûnh höôûng ñeán vi ñieàu khieån khi truy caäp boä nhôù ngoaøi. PSEN (Program Store Enable) : PSEN laø xung strobe baùo hieäu vieäc ñoïc boä nhôù chöông trình ngoaøi, PSEN tích cöïc hai laàn (möùc thaáp) moãi chu kì maùy, ngoaïi tröø hai xung PSEN bò maát khi truy xuaát döõ lieäu ngoaøi. Khi thi haønh chöông trình trong RAM noäi, PSEN seõ ôû möùc thuï ñoäng (möùc cao). EA/VPP (External Access) : EA laø ngoõ vaøo ñeå cho pheùp truy xuaát boä nhôù chöông trình töø beân ngoaøi khi ñöôïc noái vôùi GND. Khi EA ñöôïc treo leân nguoàn VCC, chöông trình seõ ñöôïc thöïc thi trong ROM noäi. Chaân naøy cuõng nhaän ñieän aùp 12v (VPP) trong khi laäp trình Flash. XTAL1 : Ñaàu vaøo cuûa boä khueách ñaïi dao ñoäng ñaûo vaø cuõng laø ñaàu vaøo ñeán maïch taïo xung clock noäi. XTAL2 : Ñaàu ra cuûa boä khueách ñaïi dao ñoäng ñaûo. 2.4. Caùc thanh ghi chöùc naêng (SFR-Special Funtion Reisters) AT89C52 coù 26 thanh ghi chöùc naêng ñöôïc thieát keá nhö laø moät thaønh phaàn cuûa RAM on-chip. Do ñoù moãi thanh ghi coù moät ñòa chæ cuûa noù, naèm trong vuøng töø 80H ñeán FFH. Tuy nhieân, vuøng naøy cuõng laø vuøng boä nhôù neân vieäc truy caäp caùc thanh ghi naøy thoâng qua caùc leänh duøng ñònh vò tröïc tieáp khaùc vôùi vieäc truy caäp vuøng nhôù duøng ñònh vò giaùn tieáp. Baûng vò trí caùc thanh ghi chöùc naêng : Chuù yù laø khoâng phaûi taát caû caùc ñòa chæ ñeàu coù caùc thanh ghi, nhöõng ñòa chæ khoâng coù thanh ghi naøy coù theå khoâng coù treân chip. Ñoïc nhöõng ñòa chæ naøy seõ coù nhöõng giaù trò ngaãu nhieân vaø ghi nhöõng giaù triï naøy coù nhöõng taùc ñoäng khoâng xaùc ñònh tröôùc. Phaàn meàm cuûa ngöôøi duøng khoâng neân ghi nhöõng giaù trò 1 ñeán caùc vò trí naøy, bôûi vì chuùng coù theå ñöôïc duøng trong töông lai. Trong tröôøng hôïp ñoù, giaù trò cuûa caùc bit luoân laø 0. Ngoaøi nhöõng thanh ghi töông töï 8051, AT89C52 coù theâm : Caùc thanh ghi Timer 2 caùc bit ñieàu khieån vaø traïng thaùi chöùa trong thanh ghi T2CON vaø T2MOD cho Timer 2. Caëp thanh ghi RCAP2H vaø RCAP2L laø nhöõng thanh ghi Capture/Reload trong cheá ñoä capture 16 bit hay cheá ñoä auto-reload 16 bit. Kyù hieäu Chöùc naêng TF2 Côø traøn Timer 2, set khi Timer 2 traøn vaø phaûi ñöôïc clear baèng phaàn meàm. TF2 seõ khoâng set khi RCLK = 1 hoaëc TCLK = 1. EXF2 Côø ngoaøi cuûa Timer 2, set khi xaûy ra capture hoaëc reload do T2EX xuoáng thaáp vaø EXEN2 = 1. Neáu ngaét Timer 2 ñöôïc kích hoaït, EXF2 = 1 seõ laøm CPU troû ñeán ISR cuûa Timer 2. EXF2 phaûi ñöôïc xoùa baèng phaàn meàm. EXF2 khoâng gaây neân ngaét trong cheá ñoä ñeám leân/xuoáng (DCEN = 1). RCLK Kích hoaït xung clock boä thu. Khi set, caùc xung traøn Timer 2 seõ laø xung clock cho boä thu port noái tieáp trong mode 1 vaø 3. RCLK = 0 thì boä thu port noái tieáp seõ duøng caùc xung traøn cuûa Timer 1. TCLK Kích hoaït xung clock boä phaùt. Khi set, caùc xung traøn Timer 2 seõ laø xung clock cho boä phaùt port noái tieáp trong mode 1 vaø 3. TCLK = 0 thì boä phaùt port noái tieáp seõ duøng caùc xung traøn cuûa Timer 1. EXEN2 Kích hoaït beân ngoaøi. Khi set, cho pheùp capture hay reload khi T2EX xuoáng thaáp (neáu Timer 2 khoâng söû duïng cho port noái tieáp). EXEN2 = 0 laøm cho Timer 2 boû qua caùc söï kieän treân T2EX. TR2 Khôûi ñoäng/Döøng Timer 2. TR2 = 1 laøm khôûi ñoäng Timer 2. C/T2 Bit löïa choïn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 : counter ñeám söï kieän beân ngoaøi (kích caïnh xuoáng). CP/RL2 Löïa choïn capture hay reload. CP/RL2 = 1: capture xaûy ra khi T2EX xuoáng thaáp neáu EXEN2 = 1. CP/RL2 = 0 : reload xaûy ra khi Timer 2 traøn hoaëc khi T2EX xuoáng thaáp neáu EXEN2 = 1. Neáu TCLK hay RCLK = 1, bit naøy bò boû qua vaø timer bò eùp vaøo cheá ñoä reload khi Timer 2 traøn. Caùc thanh ghi ngaét taäp caùc bit rieâng leû cho pheùp ngaét chöùa trong thanh ghi IE. Thieát laäp hai möùc öu tieân cho 6 nguoàn ngaét baèng caùch set caùc bit thanh ghi IP. 2.5. Boä nhôù döõ lieäu AT89C52 coù 256 byte boä nhôù RAM on-chip. Trong ñoù, 128 byte treân coù cuøng ñòa chæ vôùi vuøng thanh ghi chöùc naêng nhöng coù caáu taïo vaät lyù rieâng bieät. Khi moät leänh truy caäp moät vò trí noäi coù ñòa chæ treân 7FH, cheá ñoä ñòa chæ noù söû duïng seõ baùo cho CPU bieát vuøng ñòa chæ naøo noù caàn truy caäp : RAM hay SFR. Caùc leänh duøng ñòa chæ tröïc tieáp seõ truy caäp vuøng SFR. Ví duï nhö leänh sau ñaây seõ truy caäp SFR ôû ñòa chæ 0A0H (port 2) MOV 0A0H,#data Leänh duøng ñòa chæ giaùn tieáp seõ truy caäp 128 byte treân cuûa RAM. Ví duï nhö cuõng truy caäp ñòa chæ 0A0H nhöng giaùn tieáp thoâng qua R0. MOV R0,#0A0H MOV @R0,#data Chuù yù raèng caùc taùc vuï cuûa stack voán ñaõ söû duïng ñòa chæ giaùn tieáp neân vuøng 128 byte treân cuûa RAM raát tieän duïng ñeå laøm vuøng stack. 2.6. Ñaëc tính boä dao ñoäng XTAL1 laø ñaàu vaøo vaø ñaàu ra töông öùng cuûa boä khueách ñaïi ñaûo ñöôïc duøng laøm boä dao ñoäng noäi on-chip. Coù theå duøng thaïch anh hay boä coäng höôûng ceramic ñeàu ñöôïc. Ñeå laùi vi ñieàu khieån töø nguoàn xung clock beân ngoaøi, XTAL2 phaûi ñöôïc ñeå troáng trong khi XTAL1 noái ñeán nguoàn laùi. Khoâng coù yeâu caàu gì veà duty cycle nhöng phaûi chuù yù ñeán thôøi gian toái ña vaø toái thieåu cuûa möùc ñieän aùp cao cuõng nhö möùc ñieän aùp thaáp. 2.7. Cheá ñoä löôøi Trong cheá ñoä löôøi, CPU rôi vaøo traïng thaùi “nguû” trong khi taát caû thieát bò ngoaïi vi vaãn coøn tích cöïc. Cheá ñoä naøy ñöôïc taïo ra baèng phaàn meàm. Noäi dung cuûa RAM on-chip vaø giaù trò cuûa caùc SFR vaãn ñöôïc giöõ nguyeân. Keát thuùc cheá ñoä löôøi baèng caùch kích hoaït moät ngaét hoaëc reset phaàn cöùng. Chuù raèng khi keát thuùc cheá ñoä löôøi baèng caùch reset phaàn cöùng thì thoâng thöôøng vi ñieàu khieån seõ goïi laïi chöông trình maø noù vöøa thoaùt, cho ñeán hai chu kyø maùy tröôùc khi thuaät toaùn reset chieám quyeàn ñieàu khieån. Phaàn cöùng caám truy caäp RAM noäi trong tröôøng hôïp naøy nhöng khoâng caám truy caäp ñeán caùc chaân port, do ñoù coù theå xaûy ra nhöõng tröôøng hôïp khoâng mong muoán. Ñeå loaïi boû tröôøng hôïp naøy, leänh ngay sau leänh goïi cheá ñoä löôøi khoâng neân laø leänh ghi port hay ghi boä nhôù ngoaøi. 2.8. Cheá ñoä haï nguoàn Trong cheá ñoä haï nguoàn, boä dao ñoäng ngöøng, vaø leänh goïi haï nguoàn laø leänh cuoái cuøng ñöôïc thöïc thi. RAM on-chip vaø SFR duy trì giaù trò cuûa noù cho ñeán khi keát thuùc cheá ñoä haï nguoàn. Keát thuùc cheá ñoä haï nguoàn chæ baèng moät caùch duy nhaát : reset phaàn cöùng. Reset seõ taïo laïi giaù trò cho SFR nhöng khoâng thay ñoåi noäi dung cuûa RAM on-chip. Khoâng neân reset tröôùc khi Vcc phuïc hoài möùc ñieän aùp thoâng thöôøng cuûa noù vaø phaûi giöõ ñuû laâu ñeå boä dao ñoäng phuïc hoài vaø oån ñònh. 2.9. Traïng thaùi cuûa moät soá chaân trong cheá ñoä löôøi vaø cheá ñoä haï nguoàn IX. TAÄP LEÄNH CUÛA 89C51: AT89C51 coù 255 leänh chia thaønh caùc nhoùm leänh: + Nhoùm leänh chuyeån dôøi + Nhoùm leänh soá hoïc + Nhoùm leänh logic + Nhoùm leänh chuyeån ñieàu khieån Sau ñaây laø taäp leänh cô baûn cuûa vi xöû lyù AT89C51: Caùc chæ daån thieát laäp leänh Rn : Thanh ghi R0 ñeán R7 Data : 8 bit ñòa chæ vuøng döõ lieäu beân trong @Ri : Ñònh chæ giaùn tieáp qua R0 hay R1 #data : Haèng soá 8 bit #data16 : Haèng soá 16 bit addr 16 : 16 bit ñòa chæ ñích addr 11 : 11 bit ñòa chæ ñích rel : Ofset 8 bit coù daáu bit : Bit ñöôïc ñònh ñòa chæ tröïc tieáp a) Nhoùm leänh xöû lyù soá hoïc : ADD A,Rn (1 byte,1chu kyø maùy): (A) = (A)+(Rn) ADD A,data (2;1) : (A) = (A) + (data) ADD A,@Ri (1;1) : (A) = (A) + ((Ri)) ADD A,#data (2;1) : (A) = ( A) + #data ADDC A,Rn (1;1) : (A) = ( A) + (C) +(Rn) ADDC A,data ( 2;1) : (A) = (A) + (C) + (data) ADDC A,@Ri (1;1) : (A) = (A) + ((Ri)) + (C) ADDC A,#data ( 2;1) : (A) = (A) + (C) + #data SUBB A,Rn (1;1) : (A) = (A) - (C)- (Rn) SUBB A,data (2;1) : (A) = (A) - (C) -( data) SUBB A,@Ri (1;1) : (A) =(A) -(C) -((Ri)) SUBB A,#data (2;1) : (A) = (A) - (C) - #data INC A (1;1) : (A) = (A) +1 INC Rn (1;1) : (Rn) = (Rn) +1 INC data (2;1) : (data) = (data) +1 INC @Ri (1;1) : ((Ri)) =((Ri))+1 DEC A (1;1) : (A) =(A) – 1 DEC Rn (1;1) : (Rn) =(Rn) -1 DEC data (2;1) : (data) =(data) –1 DEC @Ri (1;1) : ((Ri)) =((Ri)) –1 INC DPTR (1;2) : (DPTR) =(DPTR) +1 MUL AB (1;4) : (A) = byte cao cuûa (A) * (B) (B) = byte thaáp cuûa (A)* (B) DIV AB (1;4) : chia (A) cho (B) ,keát quaû: ( A) = thöông soá (B) = soá dö DA A (1;1) : hieäu chænh thaäp phaân thanh ghi A b) Nhoùm leänh luaän lyù: ANL A,Rn (1;1) : (A) =(A) and (Rn) ANL A,data (2;1) : (A) =(A) and (data) ANL A,@Ri (1;1) : (A) = (A) and ((Ri)) ANL A,#data (2;1) : (A) = (A) and #data ANL data,A (2;1) : (data) = (data) and (A) ANL data,#data (3;2) : (data) =(data) and #data ANL C,bit (2;2) : (C) =(C) and (bit) ANL C, bit (2;2) : (C) =(C) and not (bit) ORL A,Rn (1;1) : (A) = (A) or (Rn) ORL A,data (2;1) : (A) = (A) or data ORL A,@Ri (1;1) : (A) = (A) or ((Ri)) ORL A,#data (2;1) : (A) = (A) or #data ORL data,A (2;1) : (data) = (data) or (A) ORL data,#data (3;2) : (data ) = (data) or # data ORL C,bit (2;2) : (C) = (C) or bit ORL C,/bit (2;2) : (C) = (C) or not bit XRL A,Rn (1;1) : (A) =(A) xor (Rn) XRL A,data (2;1) : (A) = (A) xor (data) XRL A,@Ri (1;1) : (A) = (A) xor ((Ri)) XRL A,#data (2;1) : (A) = (A) xor #data XRL data,A (2;1) : (data) = (data) xor (A) XRL data,#data (3;2) : (data) = (data) xor #data SETB C (1;1) : (C) =1 SET bit (2;1) : (bit) = 1 CLR A (1;1) : (A) = 0 CLR bit (2;1) : (bit) =0 CLR C (1;1) : (C) = 0 CPL A (1;1) : (A) = not (A) CPL C (1;1) : (C) = not (C) CPL bit (2;1) : (bit) = not (bit) RL A (1;1) : quay traùi noäi dung thanh ghi A RLC A (1;1) : quay traùi noäi dung thanh ghi A RR A (1;1) : quay phaûi noäi dung thanh ghi A RRC A (1;1) : quay phaûi noäi dung thanh ghi A qua côø nhôù SWAP A (1;1) : quay traùi noäi dung thanh ghi A moät nibble c) Nhoùm leänh chuyeån döõ lieäu : MOV A,Rn (1;1) : (A) =(Rn) MOV A,data (2;1) : (A) = (data) MOV A,@Ri (1;1) : (A) = ((Ri)) MOV A,#data (2;1) : (A) = #data MOV Rn,A (1;1) : (Rn) = (A) MOV Rn,data (2;2) : (Rn) = (data) MOV Rn,#data (2;1) : (Rn) = #data MOV data,A (2;1) :(data) = (A) MOV data,Rn (2;2) : (data) = (Rn) MOV data,data (3;2) : (data) = (data) MOV data,@Ri (2;2) : (data) = ((Ri)) MOV data,#data (3;2) : (data) = #data MOV @Ri,A (1;1) : ((Ri)) = (A) MOV @Ri,data (2;2) : ((Ri)) = (data) MOV @Ri,#data (2;1) : ((Ri)) = #data MOV DPTR,#data16 (3;2) : (DPTR) = #data16 MOV C,bit (2;1) : (C) = (bit) MOV bit,C (2;2) : (bit) = (C) MOVC A,@A+DPTR (1;2) : (A) = ((A)+(DPTR)) MOVC A,@A+PC (1;2) : (A) = ((A)+(PC)) MOVX A,@Ri (1;2) : chuyeån döõ lieäu ngoaøi 8 bít vaøo thanh ghi A . MOVX A,@DPTR (1;2) : chuyeån döõ kieäu ngoaøi 16 bit vaøo thanh ghi A. MOVX @Ri,A (1;2) : chuyeån noäi dung thanh ghi A ra döõ lieäu ngoaøi 8 bit ñòa chæ. MOVX @DPTR,A (1;2) : chuyeån noäi dung thanh ghi A ra döõ lieäu ngoaøi 16 bit ñòa chæ. PUSH data (2;2) : (SP) =(SP) +1 ((SP)) = (data) POP data (2;2) : (data) = ((SP)) (SP) = (SP) -1 XCH A,Rn (1;1) : trao ñoåi döõ lieäu giöõa thanh ghi Rn vaø thanh ghi A. XCH A,data (2;1) : trao ñoåi giöûa thanh ghi A vaø data. XCH A,@Ri (1;1) : trao ñoåi giöõa thanh ghi A vaø moät döõ lieäu giaùn tieáp. XCHD A,@Ri (1;1) : trao ñoåi giöõa nibble thaáp cuûa thanh ghi A vaø nibble thaáp cuûa byte döõ lieäu giaùn tieáp. d) Nhoùm leänh chuyeån ñieàu khieån : ACALL addr11 (2;2) : Goïi chöông trình con duøng ñòa chæ tuyeät ñoái. LCALL addr16 (3;2) : Goïi chöônhg trình con duøng ñòa chæ daøi. RET (1;2) : Trôû veà töø leänh goïi chöông trình con RETI (1;2) :Trôû veà töø leänh goïi ngaét AJMP addr11 (2;2) : Nhaûy tuyeät ñoái LJMP addr16 (3;2) : Nhaûy daøi SJMP rel (2;2) : Nhaûy ngaén JMP @A+DPTR (1;2) : Nhaûy giaùn tieáp töø con troû döõ lieäu JZ rel (2;2) : Nhaûy neáu A baèng 0 JNZ rel (2;2) : Nhaûy neáu A khoâng baèng khoâng JC rel (2;2) : Nhaûy neáu côø nhôù ñöôïc ñaët JNC rel (2;2) : Nhaûy neáucôø nhôù khoâng ñöôïc ñaët JB bit,rel (3;2) : Nhaûy töông ñoái neáu bit tröïc tieáp ñöôïc ñaët JNB bit,rel (3;2) : Nhaûy neáu bit khoâng ñöôïc ñaët JBC bit, rel (3;2) : Nhaûy töông ñoái neáu bit tröïc tieáp ñöôïc ñaët roài xoùa bit CJNE A,data,rel (3;2) : So saùnh döõ lieäu tröïc tieáp vôùi A vaø nhaûy neáu khoâng baèng CJNE A,#data,rel (3;2) : So saùnh döõ lieäu öùc thôøi vôùi Avaø nhaûy neáu khoâng baèng CJNE Rn,#data,rel (3;2) : So saùnh döõ lieäu töùc thôøi vôùi (Rn) vaø nhaûy neáu khoâng baèng CJNE @Ri,#data,rel (3;2) : So saùnh döõ lieäu töùc thôøi vôùi döõ lieäu giaùn tieáp vaø nhaûy neáu khoâng baèng DJNZ Rn,rel (2;2) : Giaûm thanh ghi Rn vaø nhaûy neáu khoâng baèng khoâng DJNZ data,rel (3;2) : Giaûm döõ lieäu tröïc tieáp vaø nhaûy neáu khoâng baèng B. GIÔÙI THIEÄU CAÙC IC SÖÛ DUÏNG TRONG ÑEÀ TAØI œ& PPI 8255 ( Programing Peripheral Interface ): Caáu truùc toång quaùt: Ñeäm data Kieåm soaùt ñoïc ghi Ñieàu khieån nhoùm B Ñieàu khieån nhoùm A Nhoùm A Port A Nhoùm A ½ port C Nhoùm B ½ port C Nhoùm B Port B RD WR CS RST A1 A2 WR CS PB0¸P B7 RTS A0 A 1 RD WR CS PB0¸P B7 RTS A0 A 1 WR CS PB0¸P B7 RTS A0 A 1 PC0¸PC3 PA0¸PA7 PC4¸P C7 PB0¸PB7 Bus data D0¸D7 Boä ñeäm truyeàn data : Boä ñeäm 8 bit , hai chieàu , ba traïng thaùi duøng ñeå giao tieáp bus data 8255 vôùi bus data CPU. Boä kieåm soaùt ñoïc ghi : kieåm soaùt taát caû söï truyeàn ñaït beân trong vaø ngoaøi cuûa töø ñieàu khieån vaø data nhaän tín hieäu A0,A1 töø bus ñòa chæ , caùc tín hieäu RD ,WR, CS, RST töø bus ñòa chæ phaùt ra caùc leänh cho hai nhoùm A vaø B Khoái töø ñieàu khieån : Ñeå ñieàu khieån hoaït ñoäng hai nhoùm A vaø B ta phaûi xuaát töø ñieàu khieån ñeán thanh ghi ñieàu khieån 8255 , töø ñieàu khieån bao goàm caùc thoâng tin veà choïn mode , set bit ,reset bit… Noù seõ khoûi ñoäng caáu hình hoaït ñoäng cho 8255, thanh ghi ñieàu khieån chæ ghi vaøo chöù khoâng ñoïc ra ñöôïc. Caùc port : 8255 goàm 3 port , kyù hieäu A,B,C, moãi port goàm 8 bit coù theå laäp trình ñöôïc ñeå xaùc ñònh cheá ñoä hoaït ñoäng thích hôïp, caùc port A vaø B goàm boä ñeäm choát ngoõ ra 8 bit vaø choát ngoõ vaøo 8 bit. Port C coù choát ngoõ ra 8bit vaø ñeäm khoâng choát ngoõ vaøo 8 bit , port C ñöôïc phaân ra laøm hai phaàn : 4 bit cao PC4¸PC7 cuøng vôùi port A hình thaønh nhoùm A, boán bit thaáp PC0¸PC4 cuøng port B hình thaønh nhoùm B . Caùc tín hieäu ñieàu khieån : + CS :choïn chip , tích cöïc möùc 0 + RD :ñoïc data , tích cöïc möùc 0 + WR : ghi data, tích cöïc möùc 0 + RST : Reset, xoùa caùc thanh ghi ñieàu ñieàu khieån vaø caùc port A, B ,C veà mode nhaäp , tích cöïc möùc 1. + Choïn mode: A1 A0 port 0 0 A 0 1 B 1 0 C 1 1 töø ñieàu khieån - Nguoàn cung caáp : 5V l 8255 coù nhieàu mode laøm vieäc , tuy nhieân mode laø mode ñöôïc söû duïng phoå bieán trong caùc öùng duïng cuûa noù, ñaây laø mode xuaát nhaäp ñôn giaûn : caùc port coù theå ñöôïc laäp trình laø ngoõ vaøo hay ngoõ ra. PC¸PC3 0:out put, 1: input Port B 0:output, 1: input Mode nhoùm A 00:mode0,01:mode 1 Mode nhoùm B: O:mode 0, 1:mode 1 PC4¸PC7 0:output,1 : input Port A 0:output, 1: input Choïn mode 0: BSR mode 1: I/O mode D7 D6 D5 D4 D3 D2 D1 D0 l Khôûi ñoäng 8255: Ñeå hoaït ñoäng ñaàu tieân ta phaûi khôûi ñoäng 8255: khôûi ñoäng 8255 laø ghivaøo töø ñieàu khieån moät giaù trò thích hôïp ñeå choïn mode laøm vieäc , qui ñònh ngoõ vaøo , ngoõ ra cho caùc port. lTöø ñieàu khieån : ( hình veõ treân ) II. RAM 62256: Boä nhôù Ram thöôøng ñöôïc duøng trong caùc thieát bò tính ñeå caát giöõ caùc keát quaû trung gian hay keát quaû taïm thôøi trong khi thöïc hieän caùc chöông trình ñieàu khieån. - Dung löôïng :32kbyte. Töø D0® D7 :Data Töø A0®A14 : Ñòa chæ Chaân /CE: cho pheùp RAM xuaát nhaäp data . Chaân /WE =0 : cho pheùp RAM ghi data Chaân /OE = 0 : cho pheùp RAM xuaát data. Sô ñoà chaân linh kieän : III. IC 75176: Laø IC chuyeån ñoåi tín hieäu ñieän aùp so vôùi mass thaønh tín hieäu ñieän aùp vi sai . Sô ñoà chaân linh kieän : IV. MAX 232: Laø vi maïch chuyeån ñoåi tín hieäu theo chuaån RS232 sang chuaån TTL vaø ngöôïc laïi. Trong thöïc teá coù raát nhieàu vi maïch chuyeån ñoåi töø RS_232 sang TTL vaø ngöôïc laïi. Theá nhöng MAX232 coù öö ñieåm hôn caùc vi maïch khaùc vaø raát phoå bieán hieän nay, öu ñieåm cuûa MAX 232 laø chæ söû duïng nguoàn ñôn cöïc +5V. Beân trong MAX 232 coù moät boä nhaân ñoâi ñieän aùp ñeå taïo ra ñieän aùp +10V vaø moät boä taïo ra ñieän aùp aâm. Nhö vaäy noù taïo ra boä nguoàn +/-10V,ñaùp öùng ñöôïc möùc ñieän aùp cho RS_232. Sô ñoà chaân linh kieän : Giaûi thích tín hieäu : R2IN: ngoõ vaøo RS_232 ®R2OUT: ngoõ ra TTL T2OUT: ngoõ ra RS_232¬T2IN: ngoõ vaøo TTL R1IN: ngoõ vaøoRS_232®R1OUT: ngoõ ra TTL T1OUT : ngoõ ra RS_232®T1 IN :ngoõ vaøo TTL C1+, C1-: tuï C1= 10mF beân ngoaøi C2+, C2-: tuï C2= 10mF beân ngoaøi +V: nguoàn +10V -V: nguoàn -10V VCC,GND: nguoàn cung caáp ñôn cöïc +5V IC 74573 : Laø IC choát coù ngoõ ra 3 traïng thaùi. sô ñoà chaân vaø baûng söï thaät : OC C Input (D) Output (Q) L H H H L H L L L L X Q1 H X X Z IC 74138 : Laø IC giaûi maõ 3 sang 8. Coù ngoõ ra tích cöïc möùc thaáp Sô ñoà chaân vaø baûng söï thaät : INPUTS OUTPUTS ENABLE SELECT G1 G2 C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 X H X X X H H H H H H H H L X X X X H H H H H H H H H L L L L L H H H H H H H H L L L H H L H H H H H H H L L H L H H L H H H H H H L L H H H H H L H H H H H L H L L H H H H L H H H H L H L H H H H H H L H H H L H H L H H H H H H L H H L H H L H H H H H H H L VII . IC74LS393. IC naøy coù 2 keânh 1, moãi keânh laø 1 boä ñeám 4 bit, ñöôïc duøng laøm boä ñeám, chia taàn soá, caùc öùng duïng khaùc. Moãi boä ñeám chöùa 4 Fiplop beân trong. Caùc Fiplop naøy ñöôïc kích caïnh xuoáng vaøo ngoõ A. Chöông trình ñieàu khieån PORTA1 EQU 4000H PORTB1 EQU 4001H PORTC1 EQU 4002H CTRWL1 EQU 4003H AL EQU 30H AH EQU 31H BL EQU 32H BH EQU 33H XL EQU 34H XH EQU 35H YL EQU 36H YH EQU 37H ZL EQU 38H ZH EQU 39H TEMP EQU 40H KPL EQU 41H KPH EQU 42H EORL EQU 43H EORH EQU 44H DUTY_CYCLE EQU 45H PULSL EQU 46H PULSH EQU 47H PULFL EQU 48H PULFH EQU 49H CONSTN EQU 50H CONSTD EQU 51H TEMP2L EQU 52H TEMP2H EQU 53H TEMP3L EQU 54H TEMP3H EQU 55H CL EQU 56H CH EQU 57H CBC EQU 58H DU EQU 59H TEMP4L EQU 60H SCKP1 EQU 61H SCKP2 EQU 62H LD1L EQU 63H LD1H EQU 64H CDAIT EQU 65H CDAIC EQU 66H SLCATT EQU 67H SLCATC EQU 68H TGCATT EQU 69H TGCATC EQU 6AH ORG 0000H JMP MAIN ORG 001BH LJMP ISR_TOKP ORG 0030H MAIN: CALL NAP_DULIEU CALL INIT SETB TF1 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DIEU KHIENDONG CO, DAO CAT ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * AGAIN: CALL PWM CALL DISPLAY JNB 03H,AGAIN CLR ET1 MOV A,#80H ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; NGAT DAO CAT ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MOV DPTR,#CTRWL1 MOVX @DPTR,A INC 3EH MOV A,3EH CJNE A,SLCATT,AGAIN4 AGAIN4: JNC AGAIN3 MOV A,3EH MOV B,#10 DIV AB SWAPA ORL A,B MOV 3CH,A MOV 6EH,#100 AGAIN1: CALL PWM CALL DISPLAY MOV 6FH,#100 DJNZ 6FH,$ DJNZ 6EH,AGAIN1 MOV DPTR,#CTRWL1 MOV A,#02H MOVX @DPTR,A MOV A,#03H MOVX @DPTR,A MOV A,#02H MOVX @DPTR,A ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; DONG DAO CAT ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MOV A,#90H MOV DPTR,#CTRWL1 MOVX @DPTR,A CLR 03H SETB ET1 JMP AGAIN AGAIN3: MOV A,#80H MOV DPTR,#CTRWL1 MOVX @DPTR,A CALL PWM CALL DISPLAY SJMP AGAIN3 RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * INIT: MOV TMOD,#11H MOV TH1,#HIGH(-10000) MOV TL1,#LOW(-10000) SETB TR1 MOV IE,#88H MOV A,#100 MOV B,#24 DIV AB CLR 00H CLR 01H CLR 02H CLR 03H CLR 10H CLR 11H CLR 12H CLR 13H CLR 14H CLR 15H SETB 30H CLR 31H CALL DKD MOV 5AH,#1 MOV 5BH,#0 MOV 5CH,#0 MOV 5DH,#0 MOV 5EH,#0 MOV 5FH,#0 MOV 7CH,#0 MOV 7DH,#2 ;VI TRI LED TRUY XUAT MOV 7EH,#0 MOV 7FH,#0 MOV 3CH,#0 MOV 3EH,#0 MOV DUTY_CYCLE,#0 MOV 3DH,#1 MOV 4AH,#40H MOV 4BH,#30H MOV 4CH,#20H MOV 4DH,#10H MOV 4EH,#60H MOV 4FH,#50H MOV R0,#3AH MOV R1,#4AH MOV R3,#0 MOV CONSTN,A MOV CONSTD,B MOV PULSL,CDAIT MOV PULSH,CDAIC MOV PULFL,#00H MOV PULFH,#00H MOV KPL,#1 MOV KPH,#0 MOV A,#92H MOV DPTR,#CTRWL1 MOVX @DPTR,A MOV A,#05H MOVX @DPTR,A MOV A,#07H MOVX @DPTR,A MOV A,#02H MOVX @DPTR,A MOV A,#03H MOVX @DPTR,A MOV A,#02H MOVX @DPTR,A MOV A,#90H MOV DPTR,#CTRWL1 MOVX @DPTR,A RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ; CT NGAT ISR_TOKP ;DOC XUNG,TINH TOAN DUTY_CYCLE ;CHU KI NGAT 10mS ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ISR_TOKP: CLR TR1 MOV TL1,#LOW(-10000) MOV TH1,#HIGH(-10000) SETB TR1 CALL DOC_XUNG MOV PULFL,R6 MOV PULFH,R7 MOV XL,PULSL MOV XH,PULSH MOV YL,PULFL MOV YH,PULFH CALL SUBB16 MOV EORL,ZL MOV EORH,ZH MOV AL,EORL MOV AH,EORH MOV BL,#0 MOV BH,#0 CALL COMPAB JNB 01H,EXIT7 JMP LABEL EXIT7: LJMP EXIT2 ;LENH THUC HIEN KHI A>B ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;TEMP2:=TEMP2H:TEMP2L:=E[N]*KP LABEL: MOV XL,EORL MOV XH,EORH MOV YL,KPL MOV YH,KPH CALL MUL_16 MOV TEMP2L,ZL MOV TEMP2H,ZH ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;(CONST:=CONSTD:CONSTN:=100/(Umax=24))*TEMP2 MOV XL,ZL MOV XH,ZH MOV YL,CONSTN MOV YH,#0 CALL MUL_16 MOV TEMP3L,ZL MOV TEMP3H,ZH MOV XL,TEMP2L MOV XH,TEMP2H MOV YL,CONSTD MOV YH,#0 CALL MUL_16 MOV R6,ZL MOV R7,ZH MOV B,#24 CALL DIV_16_8 MOV XL,R6 MOV XH,R7 MOV YL,TEMP3L MOV YH,TEMP3H CALL ADD16 ;TRUONG HOP TREN TINH VOI KP=(1....9) ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;DUOI DAY SE TINH THEM CHO SO CHIA CUA KP MOV CL,#1 MOV CH,#0 MOV XL,ZL MOV XH,ZH MOV CBC,SCKP1 CALL TG_DUNG MOV CL,#1 MOV CH,#0 MOV XL,ZL MOV XH,ZH MOV CBC,SCKP2 CALL TG_DUNG MOV DUTY_CYCLE,ZL MOV AL,DUTY_CYCLE MOV AH,#0 MOV BL,#50 MOV BH,#0 CLR 01H CALL COMPAB CLR 00H CLR 02H JNB 01H,LABEL2 MOV DUTY_CYCLE,LD1T CLR 01H LABEL2: MOV R5,DUTY_CYCLE CJNE R5,#7,STOP STOP: JNC EXIT2 MOV DUTY_CYCLE,#0 CLR ET1 SETB 03H JMP EXIT4 CLR 01H EXIT2: JNB 02H,EXIT3 ;LENH THUC HIEN KHI A<B MOV DUTY_CYCLE,#0 CLR 02H EXIT3: JNB 00H,EXIT4 ;LENH THUC HIEN KHI A=B MOV DUTY_CYCLE,#0 CLR 00H EXIT4: MOV R7,#0 MOV R6,DUTY_CYCLE ACALL BINTOBCD CALL CDL RETI ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;CT CON DOC_XUNG ;DOC XUNG TU PORTA,B CUA 8255 ; NGO RA PC1,PC2,PC3 DIEU KHIEN XOA,CHOT XUNG KHI LAY XUNG ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DOC_XUNG: MOV A,#04H MOV DPTR,#CTRWL1 MOVX @DPTR,A MOV A,#06H MOV DPTR,#CTRWL1 MOVX @DPTR,A MOV DPTR,#PORTA1 MOVX A,@DPTR MOV R6,A MOV A,#05H MOV DPTR,#CTRWL1 MOVX @DPTR,A MOV DPTR,#PORTB1 MOVX A,@DPTR MOV R7,A MOV A,#07H MOV DPTR,#CTRWL1 MOVX @DPTR,A RET ;***************************************************************** ;CHUONG TRINH CON DIEU RONG XUNG ; CHU KI DIEU RONG T= 200*R3uS ; T1\T*100= DUTY_CYCLE ;THOI GIAN THUC THI LA 1324uS ;***************************************************************** PWM: MOV R2, DUTY_CYCLE CJNE R2,#01H,MAIN_L2 MAIN_L2: JC MAIN_L3 MOV A,#01H MOV DPTR,#CTRWL1 MOVX @DPTR,A ACALL DELAY MAIN_L3: MOV A,#100 SUBB A,DUTY_CYCLE MOV R2,A CJNE R2,#01H,MAIN_L4 MAIN_L4: JC MAIN_L5 MOV A,#00H MOV DPTR,#CTRWL1 MOVX @DPTR,A ACALL DELAY MAIN_L5: RET ;***************************************************************** DELAY: MOV R3,#5 DELAY_L1: DJNZ R3,DELAY_L1 DJNZ R2,DELAY RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;Chuong trinh so sanh 2 so 16 bit ; A=AHAL B=BHBL ; IF A>B THEN 00 =1 ; IF A<B THEN 01 =1 ; IF A=B THEN 02 =1 ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * COMPAB: MOV A,AH CJNE A,BH,BIGGER MOV A,AL CJNE A,BL,BIGGER SETB 00H ; A=B JMP EXIT BIGGER: JC SMALLER SETB 01H JMP EXIT SMALLER: JNC EXIT SETB 02H EXIT: RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;Chuong trinh cong 2 so 16 bit ;INPUT X=XH_XL ; Y=YH_YL ;OUT PUT Z=X+Y ; Z=ZH_ZL ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ADD16: MOV A,XL ADD A,YL MOV ZL,A MOV A,XH ADDC A,YH MOV ZH,A RET ;***************************************************************** ;CHUONG TRINH TRU HAI SO NGUYEN 16 BIT ;INPUT X=XH_XL ; Y=YH_YL ;OUT PUT Z=X-Y ; Z=ZH_ZL ;***************************************************************** SUBB16: MOV A,XL SUBB A,YL MOV ZL,A MOV A,XH SUBB A,YH MOV ZH,A RET ;***************************************************************** ;CHUONG TRINH NHAN HAI SO NGUYEN 16 BIT ;INPUT X=XH_XL ; Y=YH_YL ;OUT PUT Z=X*Y ; Z=ZH_ZL ;***************************************************************** MUL_16: MOV A,XL MOV TEMP,A MOV B,YL MUL AB MOV ZL,A MOV A,YL XCH A,B XCH A,XH MUL AB ADD A,XH MOV XH,A MOV A,XH MOV A,YH MOV B,TEMP MUL AB ADD A,XH MOV ZH,A RET ;***************************************************************** ;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT ;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B ;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU ;***************************************************************** DIV_16_8: PUSH 02H PUSH ACC MOV R2,#16 CLR A DIVIDE: XCH A,R6 CLR C RLC A XCH A,R6 XCH A,R7 RLC A XCH A,R7 RLC A CJNE A,B,NOT_EQUAL SJMP A_GREATER_EQ_B NOT_EQUAL: JC BELOW A_GREATER_EQ_B: SUBB A,B XCH A,R6 ORL A,#1 XCH A,R6 BELOW: DJNZ R2,DIVIDE XCH A,B POP ACC POP 02H RET ;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** ;CT CON DELAY 1000US, DUNG TIMER 0 ;** *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** DELAY1: MOV TH0,#HIGH(-1000) MOV TL0,#LOW(-1000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** ** ; CTC BINTOBCD ; CHUYEN DOI TU SO NHI PHAN 16 BIT (<9999) SANG SO BCD ;INPUT : R7:R6 = SO NHI PHAN 16 BIT ;OUTPUT: R7:R6 = SO BCD, R7:R6=NGHIN,TRAM ,CHUC ,DON VI ; *** *** *** **** *** *** ** ** *** ** ** ** *** *** *** *** ****** *** ** BINTOBCD: PUSH ACC PUSH B MOV B,#10 ACALL DIV_16_8 PUSH B MOV B,#10 ACALL DIV_16_8 PUSH B MOV B,#10 MOV A,R6 DIV AB PUSH B SWAP A POP B ORL A,B MOV R7,A POP ACC SWAP A POP B ORL A,B MOV R6,A POP B POP ACC RET ;***************************************************************** ;CT CON CDT,CDC,XUAT PHUC VU XUAT LED ;***************************************************************** CDT: MOV A,@R0 ANL A,#0FH RET CDC: MOV A,@R0 SWAP A ANL A,#0FH RET XUAT: ORL A,@R1 MOV P1,A RET ;***************************************************************** ;CHUONG TRINH CHIA 1 S0 16 BIT CHO 1 SO 8 BIT ;INPUT SO(16BIT) BI CHIA R7:R6 SO CHIA 8 BIT THANH GHI B ;OUT PUT R7:R6=KET QUA CAN CHIA B: SO DU ;KET QUA SAI SO(O SO DU B) DOI VOI SO LE LON HON 128 ;***************************************************************** DIV_16_81: PUSH ACC MOV A,B JNB ACC.7,NH128 JNB ACC.0,EVEN INC A CJNE A,#0,EVEN MOV A,#0FEH EVEN: MOV B,#2 DIV AB MOV B,A MOV TEMP4L,A CALL DIV_16_8 MOV DU,B MOV B,#2 CALL DIV_16_8 MOV A,B JZ LAMT1 MOV A,TEMP4L ADD A,DU MOV B,A LAMT1: POP ACC JMP EXIT5 NH128: CALL DIV_16_8 POP ACC EXIT5: RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;CT CON TG_DUNG ;Chuong trinh tinh (A/B)*C=A1*C+B1*C/B=A1*C+A2*C+E(sai so) (C<B) ;INPUT: A=XL:XH, B=B, C:YL:YH ;OUTPUT: PHAN NGUYEN:ZL:ZH, PHAN DU B ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * TG_DUNG: MOV R6,XL MOV R7,XH MOV B,CBC CALL DIV_16_81 MOV XL,R6 MOV XH,R7 MOV TEMP3L,B MOV YL,CL MOV YH,CH CALL MUL_16 MOV TEMP2L,ZL MOV TEMP2H,ZH MOV XL,TEMP3L MOV XH,#0 MOV YL,CL MOV YH,CH CALL MUL_16 MOV R6,ZL MOV R7,ZH MOV B,CBC CALL DIV_16_81 MOV XL,R6 MOV XH,R7 MOV TEMP3H,B MOV YL,TEMP2L MOV YH,TEMP2H CALL ADD16 MOV B,TEMP3H RET CDL: MOV 3AH,R6 MOV 3BH,R7 RET ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ;CT CON HIEN THI CHIEU DAI KHI CAT ;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DISPLAY: MOV A,3DH MOV B,#2 DIV AB MOV A,B CJNE A,#0,ELSE CALL CDC CALL XUAT INC R0 JMP BQ1 ELSE: CALL CDT CALL XUAT BQ1: INC R1 INC 3DH MOV A,3DH CJNE A,#7,ELSE1 MOV 3DH,#1 MOV R0,#3AH MOV R1,#4AH ELSE1: RET DKD: CLR 26H CLR 25H CLR 24H CLR 23H CLR 22H CLR 21H MOV 7AH,#200 MOV 7BH,#200 RET ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** CHUONG TRINH CON NAP XUAT DU LIEU ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** NAP_DULIEU: NOP QUETPHIM: MOV R2,#100 BACK0: JB P2.2,PHIM_1 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ; TANG GIA TRI CAC LED(3->6) : 0 ->9->0 ;TANG GIA TRI CAC LED(2) : 0 ->4->0 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** DJNZ R2,BACK0 MOV A,7DH ADD A,#59H MOV R0,A INC @R0 MOV A,@R0 CJNE A,#10,$+7 JC $+4 MOV @R0,#0 CJNE R0,#5BH,$+10 CJNE A,#5,$+7 JC $+4 MOV @R0,#0 NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED 6 : NHAP NHAYKHI DUOC CHON ; : KHONG NHAP NHAY KHI DUOC KHONG CHON ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** PHIM_1: JNB 26H,QLED6ON MOV A,5FH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED6OFF CLR 26H MOV 7BH,#200 QLED6ON: MOV A,5FH ORL A,#40H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#6,QLED6OFF DJNZ 7AH,QLED6OFF MOV 7AH,#200 SETB 26H QLED6OFF: MOV R2,#100 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;GIAM GIA TRI CAC LED(3->6) : 9 ->0->9 ;GIAM GIA TRI CAC LED(2) : 4 ->0->4 ;XUAT LAI DATA DA NHAP THEO THU TU GIAM DAN THEO TUNG CHE ;DO ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** BACK1: JB P2.3,PHIM_2 DJNZ R2,BACK1 MOV A,7DH ADD A,#59H MOV R0,A DEC @R0 MOV A,@R0 CJNE A,#255,$+5 MOV @R0,#9 CJNE R0,#5BH,$+8 CJNE A,#255,$+5 MOV @R0,#4 MOV A,7DH CJNE A,#2,$+7 JNB 30H,$+4 CALL XUATDATA NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED 5 : NHAP NHAYKHI DUOC CHON ; : KHONG NHAP NHAY KHI DUOC KHONG CHON ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** PHIM_2: JNB 25H,QLED5ON MOV A,5EH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED5OFF CLR 25H MOV 7BH,#200 QLED5ON: MOV A,5EH ORL A,#30H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#5,QLED5OFF DJNZ 7AH,QLED5OFF MOV 7AH,#200 SETB 25H QLED5OFF: MOV R2,#100 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;CHON LED TU PHAI SANG TRAI : 6->2->6 ;LED DUOC CHON NHAP NHAY ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** BACK2: JB P2.4,PHIM_3 DJNZ R2,BACK2 DEC 7DH CALL DKD MOV A,7DH CJNE A,#2,$+8 MOV 5AH,#1 SETB 30H JMP $+5 MOV 5AH,#0 CLR 30H MOV A,7DH CJNE A,#1,$+5 MOV 7DH,#6 NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED 4 : NHAP NHAYKHI DUOC CHON ; : KHONG NHAP NHAY KHI DUOC KHONG CHON ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** PHIM_3: JNB 24H,QLED4ON MOV A,5DH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED4OFF CLR 24H MOV 7BH,#200 QLED4ON: MOV A,5DH ORL A,#20H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#4,QLED4OFF DJNZ 7AH,QLED4OFF MOV 7AH,#200 SETB 24H QLED4OFF: MOV R2,#100 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;CHON LED TU TRAI SANGPHAI : 2->6->2 ;LED DUOC CHON NHAP NHAY ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** BACK3: JB P2.5,PHIM_4 DJNZ R2,BACK3 INC 7DH CALL DKD MOV A,7DH CJNE A,#2,ST11 MOV 5AH,#1 SETB 30H ST11: MOV 5AH,#0 CLR 30H MOV A,7DH CJNE A,#7,ST MOV 7DH,#2 ST: NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED3 : NHAP NHAYKHI DUOC CHON ; : KHONG NHAP NHAY KHI DUOC KHONG CHON ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** PHIM_4: JNB 23H,QLED3ON MOV A,5CH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED3OFF CLR 23H MOV 7BH,#200 QLED3ON: MOV A,5CH ORL A,#10H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#3,QLED3OFF DJNZ 7AH,QLED3OFF MOV 7AH,#200 SETB 23H QLED3OFF: MOV R2,#100 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;LUU GIA TRI CAN NAP THEO TUNG CHE DO ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** BACK4: JB P2.6,PHIM_5 DJNZ R2,BACK4 INC 5AH MOV A,5AH MOV B,#2 DIV AB MOV A,B CJNE A,#0,$+8 MOV 5AH,#0 CLR 30H JMP $+7 MOV 5AH,#1 SETB 30H CALL NAPDATA NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED2 : NHAP NHAYKHI DUOC CHON ; : KHONG NHAP NHAY KHI DUOC KHONG CHON ; CHI DINH CHE DO TU : 0->4 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** PHIM_5: JNB 22H,QLED2ON MOV A,5BH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED2OFF CLR 22H MOV 7BH,#200 QLED2ON: MOV A,5BH ORL A,#60H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#2,QLED2OFF DJNZ 7AH,QLED2OFF MOV 7AH,#200 SETB 22H QLED2OFF: MOV R2,#100 ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ; KET HOP VOI LED1=1 THOAT KHOI CHUONG TRINH NHAP DATA ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** BACK5: JB P2.7,THOAT DJNZ R2,BACK5 INC 7FH MOV A,7FH MOV B,#2 DIV AB MOV A,B CJNE A,#0,$+8 MOV 7FH,#0 CLR 31H JMP $+5 MOV 7FH,#1 SETB 31H NOP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;HIEN THI LED1 : GOM 2 GIA TRI (0,1) ; 0: NAP GIA TRI ,0->1 :LUU GIA TRI ; 1:KET HOP VOI PHIM 5 XEM DATA DA NHAP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** THOAT: JNB 21H,QLED1ON MOV A,5AH ORL A,#00H MOV P1,A ACALL DELAY1 DJNZ 7BH,QLED1OFF CLR 21H MOV 7BH,#200 QLED1ON: MOV A,5AH ORL A,#50H MOV P1,A ACALL DELAY1 MOV A,7DH CJNE A,#1,QLED1OFF DJNZ 7AH,QLED1OFF MOV 7AH,#200 SETB 21H QLED1OFF: JNB 30H,$+3 JMP $+4 JMP QUETPHIM JNB 31H,TTQP1 CLR 30H CLR 31H MOV 7EH,#0 MOV 7FH,#0 JMP $+3 TTQP1: JMP QUETPHIM RET ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;CHUONG TRINH CON NHAP DATA ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** NAPDATA: MOV A,5BH CJNE A,#0,NAPDATA0 MOV A,5EH SWAP A ORL A,5FH MOV LENGTHL,A MOV A,5CH SWAP A ORL A,5DH MOV LENGTHH,A NAPDATA0: MOV A,5BH CJNE A,#1,NAPDATA1 MOV A,5EH SWAP A ORL A,5FH MOV TGCCL,A MOV A,5CH SWAP A ORL A,5DH MOV TGCCH,A NAPDATA1: MOV A,5BH CJNE A,#2,NAPDATA2 MOV A,5EH SWAP A ORL A,5FH MOV SLCCL,A MOV A,5CH SWAP A ORL A,5DH MOV SLCCH,A NAPDATA2: MOV A,5BH CJNE A,#3,NAPDATA3 MOV A,5EH SWAP A ORL A,5FH MOV SCKP1,A MOV A,5CH SWAP A ORL A,5DH MOV SCKP2,A NAPDATA3: MOV A,5BH CJNE A,#4,NAPDATA4 MOV A,5EH SWAP A ORL A,5FH MOV LD1L,A MOV A,5CH SWAP A ORL A,5DH MOV LD1H,A NAPDATA4: NOP RET ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;CHUONG TRINH CON XUAT DATA DA NHAP ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** XUATDATA: MOV A,5BH CJNE A,#0,XUATDATA0 MOV A,LENGTHL ANL A,#0FH MOV 5FH,A MOV A,LENGTHL SWAP A ANL A,#0FH MOV 5EH,A MOV A,LENGTHH ANL A,#0FH MOV 5DH,A MOV A,LENGTHH SWAP A ANL A,#0FH MOV 5CH,A XUATDATA0: MOV A,5BH CJNE A,#1,XUATDATA1 MOV A,TGCCL ANL A,#0FH MOV 5FH,A MOV A,TGCCL SWAP A ANL A,#0FH MOV 5EH,A MOV A,TGCCH ANL A,#0FH MOV 5DH,A MOV A,TGCCH SWAP A ANL A,#0FH MOV 5CH,A XUATDATA1: MOV A,5BH CJNE A,#2,XUATDATA2 MOV A,SLCCL ANL A,#0FH MOV 5FH,A MOV A,SLCCL SWAP A ANL A,#0FH MOV 5EH,A MOV A,SLCCH ANL A,#0FH MOV 5DH,A MOV A,SLCCH SWAP A ANL A,#0FH MOV 5CH,A XUATDATA2: MOV A,5BH CJNE A,#3,XUATDATA3 MOV A,SCKP1 ANL A,#0FH MOV 5FH,A MOV A,SCKP1 SWAP A ANL A,#0FH MOV 5EH,A MOV A,SCKP2 ANL A,#0FH MOV 5DH,A MOV A,SCKP2 SWAP A ANL A,#0FH MOV 5CH,A XUATDATA3: MOV A,5BH CJNE A,#4,XUATDATA4 MOV A,LD1L ANL A,#0FH MOV 5FH,A MOV A,LD1L SWAP A ANL A,#0FH MOV 5EH,A MOV A,LD1H ANL A,#0FH MOV 5DH,A MOV A,LD1H SWAP A ANL A,#0FH MOV 5CH,A XUATDATA4: NOP RET ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ;CT CON KIEM TRA 2 NUT STOP/START,PAUSE KHI CT DANG CHAY ;** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** Q1P: MOV R3,#100 BACK7: JB P2.7,EXITQ2P DJNZ 2,BACK7 SETB 31H EXITQ2P: NOP RET END

Các file đính kèm theo tài liệu này:

  • docThesis.doc
  • docCover.DOC
  • docIndex.doc