Ứng dụng kit 8051 dùng để chuyển đổi a/d & d/a

Vào đầu những năm thập niên 60, kỹ thuật số đã đưa vào ứng dụng trong thực tế nhưng ở phạm vi nhỏ. Cho đến ngày hôm nay kỹ thuật số đã được phát triển một cách mạnh mẽ và được ứng dụng vào mọi lãnh vực của cuộc sống. Từ những chiếc máy vi tính (computer), máy CD, máy VDC, truyền hình số cho đến các băng diã CD đã dần dần thay thế các máy và băng từ tín hiệu tương tự (analog) bởi bộ phân giải rộng, độ chính xác cao và dễ dàng trong quá trình xử lý tín hiệu. Tuy nhiên trong cuộc sống hằng ngày chúng ta lại thường tiếp xúc với những tín hiệu tương tự nhiều hơn. vd: Điện thoại, sóng đài truyền hình, dòng điện sinh hoạt, âm thanh vì thế phải cần có một sự chuyển đổi từ tín hiệu tương tự (Analog) – số (Digital) để xử lý dữ liệu, sau đó lại chuyển đổi ngược lại từ số (Digital) – tương tự (Analog) để đưa vào điều khiển, khống chế thiết bị. Đó là những lý do để em thực hiện đề tài này.

doc85 trang | Chia sẻ: Dung Lona | Lượt xem: 1264 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Ứng dụng kit 8051 dùng để chuyển đổi a/d & d/a, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
giaù trò maëc ñònh laø 07H. Do ñoù stack maëc ñònh baét ñaàu taïi 08H. Neáu trình khoâng khôûi ñoäng laïi stack thì caùc thanh ghi 1, 2, 3 khoâng theå söû duïng vì noù ñöôïc duøng laøm stack. Stack ñöôïc truy xuaát moät caùch roõ raøng baèng caùc leänh PUSH, POP ñeå löu tröõ taïm thôøi hay truy xuaát döõ lieäu. Noù cuõng coù theå ñöôïc truy xuaát ngaàm khi coù caùc leänh goïi ñeán chöông trình con. Caùc leänh ACALL, LCALL hay ngaét seõ ñaåy thanh ghi ñeám chöông trình (PC) vaøo stack. Leänh RET, RETI traû giaù trò trong stack laïi cho PC. Con troû döõ lieäu (DPTR) Con troû döõ lieäu duøng ñeå truy xuaát maõ hay döõ lieäu töø boä nhôù ngoaøi vaø thanh ghi 16 bit. Thanh ghi naøy goàm hai thanh ghi DPL (byte thaáp, ñòa chæ 82H) vaø DPH (byte cao, ñòa chæ 83H). Ba leänh sau ñaây seõ ghi giaù trò 55H vaøo RAM ngoaøi taïi ñòa chæ 1000H. MOV A, #55H; MOV DPTR, #1000H; MOV @DPTR, A; Caùc thanh ghi Port: Caùc port cuûa 8051 goàm coù port 0 ñòa chæ 80H, port 1 ñòa chæ 90H, port 2 ñòa chæ A0H, port 3 ñòa chæ B0H. Caùc port 0, 2 vaø 3 khoâng ñöôïc duøng ñeå xuaát nhaäp neáu ñang söû duïng boä nhôù ngoaøi. Coøn laïi port 1 coù theå duøng ñeå xuaát nhaäp (I/O). Taát caû caùc port ñeàu coù theå duøng truy xuaát bit. Ñieàu naøy cung caáp cho vi ñieàu khieån khaû naêng giao tieáp raát maïnh. Ta coù theå duøng chaân P1.7 ñeå ñoùng môû ñoäng cô. Chaân P1.7 noái vôùi transitor ñeå laùi moät relay ñoùng môû ñoäng cô. Leänh SETB P1.7 môû ñoäng cô. Leänh CLR P1.7 taét ñoäng cô. Hai leänh treân duøng toaùn töû daáu chaám ñeå xaùc ñònh ñòa chæ bit trong moät byte. Caùc thanh ghi boä ñònh thôøi: 8051 coù hai boä ñònh thôøi 16 bit. Timer 0 coù ñòa chæ 8AH (TL0 byte thaáp) vaø 8DH (TH1 byte cao). Ngoaøi boä ñònh thôøi coøn coù hai thanh ghi: thanh ghi ñieàu khieån TCON ñòa chæ 88H vaø thanh ghi xaùc ñònh mode cho timer TMOD ñòa chæ 89H. Trong ñoù chæ coù thanh ghi TCON truy xuaát ñöôïc töøng bit. Caùc thanh ghi coång noái tieáp: 8051 chöùa coång noái tieáp beân trong MCU ñeå giao tieáp vôùi caùc thieát bò noái tieáp nhö thieát bò ñaàu cuoái, modem v.v… Coång noái tieáp goàm coù hai thanh ghi: moät thanh ghi ñeäm SBUF laø naïp döõ lieäu ñeå truyeàn ñi. Ñoïc SBUF laø nhaän döõ lieäu ñaõ thu ñöôïc vaøo. Caùc mode truyeàn coù theå ñöôïc laäp trình thoâng qua thanh ghi ñieàu khieån coång keá tieáp. Thanh ghi naøy coù theå truy xuaát bit vaø coù ñòa chæ 98H. Caùc thanh ghi ngaét: 8051 coù 5 nguoàn ngaét vaø hai möùc öu tieân. Caùc ngaét bò caám khi reset heä thoáng. Caùc ngaét ñöôïc cho pheùp thoâng qua thanh ghi IE coù ñòa chæ 0AH. Caùc möùc öu tieân cuõng ñöôïc set bôûi thanh ghi IP taïi ñòa chæ B8H. Caû hai thanh ghi naøy ñeàu coù theå truy xuaát bit. IE coù ñòa chæ A8H. Ngaét chæ ñöôïc chaáp nhaän khi thanh ghi naøy ñaõ ñöôïc laäp trình. Thanh ghi PCON (Power Control Register) Thanh ghi PCON coù ñòa chæ 87H, chöùa caùc bits ñieàu khieån linh tinh, ñöôïc toùm taét trong baûng 4.4. Bit SMOD nhaân ñoâi toác ñoä truyeàn noái tieáp ôû caùc mode 1, 2 vaø 3. Caùc bit 4, 5, 6 khoâng ñöôïc ñònh nghóa. Bit 3 vaø 2 laø hai côø ñöôïc tuøy yù trong laäp trình öùng duïng. Caùc bit PD (power down) vaø IDL (idle) ñeàu coù trong caùc hoï IC MCS-51 nhöng chæ vôùi IC duøng CMOS maø thoâi. Leänh set bit IDL laø leänh ñöôïc thi haønh cuoái cuøng tröôùc khi CPU vaøo cheá ñoä idle. ÔÛ tín hieäu naøy cheá ñoä xung clock ñöôïc ngaét ra khoûi CPU, nhöng khoâng ngaét ra khoûi ngaét quaõng, timer vaø coång noái tieáp. Traïng thaùi CPU vaø noäi dung caùc thanh ghi ñöôïc baûo toaøn. Caùc chaân cuûa coång song song ñöôïc giöõ ôû möùc traïng thaùi cuûa chuùng. ALE vaø PSEN ôû möùc cao. Caùc cheá ñoä idle keát thuùc khi coù baát kyø moät ngaét naøo hoaëc reset heä thoáng, ñoàng thôøi bit IDL bò xoùa. + Power down Mode Bit Kyù hieäu Moâ taû 7 6 5 4 3 2 1 0 SOMD GF1 GF0 PD IDL Toác ñoä keùp; khi ñöôïc set, toác ñoä truyeàn noái tieáp ñöôïc nhaân ñoâi caùc cheá ñoä 1,2,3. Khoâng ñöôïc ñònh nghóa “nt” “nt” Côø duøng cho muïc ñích toång quaùt 1 Côø duøng cho muïc ñích toång quaùt 2 Power down, set mode power down. Chæ thoaùt khi reset Idle mode, set mode idle. Thoaùt khi coù ngaét hoaëc reset Baûng 4.4 Toùm taét thanh ghi PCON Leänh set bit PD laø leänh cuoái cuøng tröôùc khi CPU chuyeån sang mode power down. ÔÛ cheá ñoä naøy: (1) boä dao ñoäng noäi ngöng hoaït ñoäng, (2) caùc chöùc naêng bò döøng, (3) noäi dung RAM noäi ñöôïc giöõ ôû möùc logic cuûa chuùn, (5) ALE vaø PSEN ôû möùc thaáp. Chæ coù theå thoaùt khoûi cheá ñoä naøy khi reset heä thoáng. Khi ôû cheá ñoä power down, Vcc coù theå giaûm ñeán 2V. Löu yù caàn phaûi traû laïi möùc aùp 5V cho Vcc khi thoaùt khoûi cheá ñoä power down. VI – BOÄ NHÔÙ NGOAØI Môû roäng boä nhôù laø moät khaû naêng quan troïng ñoái vôùi vi ñieàu khieån nhaèm traùnh gaëp beá taéc trong vaán ñeà thieát keá. Hoï MCs-51 coù theå môû roäng 64Kbs vaø boä nhôù maõ leänh 64Kbs döõ lieäu. Caùc IC giao tieáp ngoaïi vi cuõng coù theå theâm vaøo ñeå taêng naêng xuaát nhaäp. Noù trôû thaønh moät phaàn cuûa boä döõ lieäu ngoaïi vaø ñöôïc giaûi maõ I/O nhö boä nhôù. Khi boä nhôù ngoaøi ñöôïc söû duïng, port 0 khoâng ñöôïc duøng laøm coång xuaát nhaäp. Noù trôû thaønh bus duøng ñeå phaân keânh ñòa chæ vaø döõ lieäu, ALE choát noù nhö laø bytes thaáp cuûa bus ñòa chæ khi baét ñaàu moãi chu kyø truy xuaát boä nhôù ngoaøi. Port 2 thöôøng duøng laøm byte cao cuûa bus ñòa chæ. Chu kyø boä nhôù A0 ¸ A15 Ñòa chæ D0 ¸ D7 Döõ lieäu (a) Khoâng phaân keânh (24 chaân) Chu kyø boä nhôù AD8 ¸ AD15 Ñòa chæ AD0 ¸ AD7 Ñòa chæ Döõ lieäu (b) Phaân keânh (16 chaân) Hình 4.5 Phaân keânh bus ñòa chæ vaø bus döõ lieäu Hình treân moâ taû vieäc phaân keânh vaø khoâng phaân keânh bus ñòa chæ vaø bus döõ lieäu. Neáu khoâng phaân keânh, vôùi 16 chaân ñòa chæ vaø 8 chaân döõ lieäu ta coù 24 chaân cho bus ñòa chæ vaø bus döõ lieäu. Trong khi ñoù neáu phaân keânh, 8 chaân döõ lieäu ñöôïc duøng chung vôùi 8 chaân thuoäc byte thaáp cuûa bus ñòa chæ neân chæ coù 16 chaân cho bus ñòa chæ vaø bus döõ lieäu. Ñieàu naøy coù yù nghóa lôùn trong vieäc cheá taïo IC. Thöù töï phaân keânh nhö sau : ôû nöõa chu kyø ñaàu, byte thaáp cuûa ñòa chæ xuaát ra port 0 vaø ñöôïc choát baèng ALE. Byte naøy ñöôïc choát ôû boä choát trong suoát chu kyø boä nhôù. Trong nöõa chu kyø tieáp theo port 0 laø bus döõ lieäu, coù theå xuaát nhaäp tuøy yù. Truy xuaát boä nhôù maõ leänh ngoaøi (External Code memory): Boä nhôù maõ ngoaøi ñöôïc ñoïc baèng tín hieäu PSEN (hình 4.6). Trong moät chu kyø maùy ALE taùc ñoäng 2 laàn vaø 2 bytes ñöôïc ñoïc töø boä nhôù chöông trình. Giaûn ñoà thôøi gian cuûa hoaït ñoäng naøy ñöôïc goïi laø chu kyø laáy leänh (hình 4.7). Truy xuaát boä nhôù döõ lieäu ngoaøi (External Code memory): Ñaây laø boä nhôù chöùa döõ lieäu, thöôøng laø RAM vaø ñöôïc truy xuaát bôûi tín hieäu RD vaø WR. Döõ lieäu naøy chæ ñöôïc truy xuaát baèng leänh MOVX thoâng qua thanh ghi con troû döõ lieäu DPTR, hoaëc R0, R1. RAM giao tieáp vôùi 8051 gioáng nhö EPROM. Ngoaïi tröø chaân RD ñöôïc noái vôùi chaân OE vaø chaân WR ñöôïc noái vôùi chaân W. Coøn laïi caùc bus döõ lieäu vaø ñòa chæ noái nhö EPROM. Vôùi 16 ñöôøng ñòa chæ ta coù theå coù ñeán 64Kbs cho vuøng nhôù döõ lieäu. Giaûn ñoà thôøi gian cuûa vieâc ñoïc vuøng nhoù döõ lieäu ngoaøi khi thi haønh leänh “MOV A,@DPRT” ñöôïc cho ôû hình 4.8. Löu yù chæ coù chaân RD ñöôïc duøng cho pheùp RAM. Giaûn ñoà thôøi gian cuûa vieäc ghi cuõng töông töï töø ñöôøng WR xuoáng möùc thaáp vaø döõ lieäu xuaát ra port 0. Port 2 coù theå khoâng duøng laøm byte cao cuûa bus ñòa chæ trong heä thoáng khoâng söû duïng vuøng nhôù maõ ngoaøi maø söû duïng vuøng nhôù döõ lieäu ngoaøi nhoû. Taùm bit ñòa chæ coù theå truy xuaát ñöôïc moät vuøng nhôù 256 bytes, ñöôïc goïi laø moät trang boä nhôù. Neáu vuøng nhôù naøy lôùn hôn 256 bytes ta coù theå duøng theâm moät vaøi chaân cuûa port 2 ñeå choïn trang. Khi truy xuaát moät trang (256 bytes) cuûa vuøng döõ lieäu ngoaøi ta coù theå duøng R0 hoaëc R1 ñeå laøm con troû ñòa chæ troû ñeán byte döõ lieäu caàn truy xuaát. Ví duï nhöõng leänh ñoïc noäi dung cuûa RAM ngoaøi coù ñòa chæ 0050H vaøo thanh tích luõy. MOV R0, #50H ; MOV A, @R0 ; Giaûi maõ ñòa chæ: Neáu 8051 söû duïng caû EPROM vaø RAM ngoaøi ñoøi hoûi phaûi giaûi maõ ñòa chæ. Vieäc giaûi maõ ñòa chæ raát quen thuoäc ñoái vôùi haàu heát vi xöû lyù. Ví duï neáu duøng EPROM 8K vaø RAM 8K, bus ñòa chæ giaûi maõ ñeå choïn IC giôùi haïn trong 8Kbytes: 0000H ñeán 1FFFH, vaø 2000H ñeán 3FFFH, v.v… Thoâng thöôøng ta duøng IC giaûi maõ 74138 vôùi ngoõ vaøo laø 3 bits cao nhaát cuûa bus ñòa chæ. Do ñoù moãi ngoõ töông öùng vôùi 8Kbs. Caùc ngoõ ra naøy ñöa vaøo caùc chaân CS cuûa caùc IC nhôù. Löu yù söï phaân chia tín hieäu cho pheùp xuaát cuûa EPROM vaø RAM khaùc nhau (RD cho RAM vaø PSEN cho EPROM). 8051 coù theå coù ñeán 64Kbytes cho moãi vuøng ROM vaø RAM. Hình 4.8: Giaûn ñoà thôøi gian khi ñoïc döõ lieäu töø boä nhôù ngoaøi Söï choàng laép cuûa vuøng maõ leänh vaø döõ lieäu ngoaøi: Vì boä nhôù maõ leänh chæ ñöôïc ñoïc neân seõ baát tieän trong vieäc phaùt trieån phaàn meàm. Laøm theá naøo ñeå söûa loãi cuûa chöông trình naèm trong kit khi boä nhôù maõ leänh chæ coù theå ñoïc. Bieän phaùp thöôøng ñöôïc söû duïng ôû ñaây laø choàng laép hai vuøng maõ leänh vaø döõ lieäu leân nhau. Tín hieäu PSEN duøng ñeå ñoïc maõ leänh vaø tín hieäu RD duøng ñeå ñoïc döõ lieäu trong cuøng moät boä nhôù. RAM chöùa caû chöông trình vaø döõ lieäu. Hai tín hieäu RD vaø PSEN ñöôïc ñöa vaøo coång AND. Ngoõ ra cuûa coång AND noái vôùi chaân OE cuûa RAM. Maïch ôû hình 4.9 cho pheùp ghi döõ lieäu vaøo RAM. Vì vaäy chöông trình coù theå ñöôïc load vaøo RAM (baèng caùch ghi döõ lieäu vaøo RAM) vaø thi haønh (baèng caùch truy xuaát nhö boä nhôù maõ leänh). RAM W OE WR RD PSEN Hình 4.9 Maïch taïo neân söï choàng laép hai vuøng nhôù VII – HOAÏT ÑOÄNG RESET 8051 ñöôïc reset khi giöõ chaân RST ôû möùc cao ít nhaát trong hai chu kyø maùy vaø sau ñoù traû veà möùc thaáp. RST coù theå ñöôïc noái vôùi switch hoaëc maïng tuï, trôû ñeå taïo tính reset. Traïng thaùi cuûa taát caû thanh ghi sau khi reset heä thoáng toùm taét trong baûng 4.5. Thanh ghi ñeám chöông trình ñöôïc naïp giaù trò 0000H sau khi reset. Khi RST xuoáng möùc thaáp chöông trình luoân baét ñaàu taïi ñieåm 0000H. Noäi dung caùc thanh ghi trong RAM noäi khoâng bò aûnh höôûng bôûi hoaït ñoäng reset. Thanh ghi Noäi dung PC ACC B PSW SP DPTR PORT 0..3 IP IE Timer registers SCON SBUF PCON (HMOS) PCON (CMOS) 0000H 00H 00H 00H 07H 0000H FFH XXX00000B 0XX00000B 00H 00H 00H 0XXXXXXXB 0XXX0000B Baûng 4.5 Giaù trò caùc thanh sau khi reset heä thoáng Chöông IV TOÙM TAÉT TAÄP LEÄNH I – GIÔÙI THIEÄU: Chöông trình ñöôïc xaây döïng neân töø taäp leänh, tuaân theo cuù phaùp vaø caáu truùc logic. Moät hoï vi xöû lyù luoân ñi keøm theo taäp leänh cuûa noù. Chöông naøy gôùi thieäu taäp leänh cuûa hoï MCs-51, vieäc ñònh vò vaø moät vaøi ví duï veà caùc tình huoáng gaëp phaûi khi laäp trình. Chöông naøy khoâng baøn veà kyõ thuaät laäp trình cuõng nhö veà trình bieân dòch. Taäp leänh hoï vi ñieàu khieån MCx-51 toái öu cho caùc ñieàu khieån öùng duïng 8 bit. Noù cung caáp caùc caùch ñònh vò nhanh, goïn thuaän tieän cho vieäc truy xuaát döõ lieäu 8 bit trong vuøng RAM noäi. Taäp leänh cuõng ñöa ra moät soá leänh thao taùc treân bit thuaän tieän cho vieäc ñieàu khieån vaø caùc heä thoáng logic coù yeâu caàu xöû lyù luaän lyù. Laø moät xöû lyù 8 bit, caùc leänh cuûa 8051 laø maõ 8 bit. Do ñoù taäp leänh coù toái ña 256 leänh. Trong ñoù 255 leänh ñöôïc ñònh nghóa. Trong moät leänh, ngoaøi maõ leänh (1 byte) ra coøn coù theå coù döõ lieäu vaø ñòa chæ. Trong taäp leänh 8051 coù 139 leänh 1 byte, 92 leänh 2 byte vaø 24 leänh 3 byte. Phaàn phuï luïc seõ moâ taû ñaày ñuû veà moãi maõ, veà maõ gôïi nhôù, soá byte leänh, soá chu kyø haønh leänh. II – CAÙC MODE ÑÒNH VÒ (ADDRESSING MODE) Khi leänh thao taùc treân döõ lieäu, moät caâu hoûi ñöôïc ñaët ra laø “döõ lieäu ôû ñaâu?”. Ñeå traû lôøi caâu hoûi naøy ta xem xeùt qua caùc mode ñònh vò cuûa 8051. Ñònh vò döõ lieäu laø moät phaàn quan troïng trong taäp leänh. Chuùng xaùc ñònh döõ lieäu nguoàn vaø ñích theo nhöõng caùch khaùc nhau tuøy theo caùch laäp trình. Trong phaàn naøy ta seõ lhaûo saùt kyõ töøng mode ñònh vò vaø cho moãi loaïi moät ví duï. Coù 8 mode ñònh vò: Thanh ghi Tröïc tieáp Giaùn tieáp Töùc thôøi (Immediate) Töông ñoái Xa Chæ soá Ñònh vò baèng thanh ghi: Ngöôøi laâp trình truy xuaát döõ lieäu chöùa trong caùc thanh ghi töø R0 ñeán R7 thoâng qua teân goïi cuûa chuùng. Ñòa chæ cuûa 8 thanh ghi naøy ñöôïc giaûi maõ thoâng qua bit thaáp nhaát cuûa chuùng. Do ñoù maõ leänh vaø toaùn haïng ñòa chæ ñöôïc gom chung vaøo 1 byte. Opcode 5-bit n n n Ví duï leänh sau coäng noäi dung R7 vaøo thanh ghi tích luyõ: ADD A, R7; Maõ leänh laø 001011111B. Trong ñoù 5 bit cao 00101 chæ maõ leänh 3 bit thaáp 111 chæ thanh ghi R7. Moät vaøi leänh xaùc ñònh tröïc tieáp treân thanh ghi nhö thanh ghi tích luyõ, con troû döõ lieäu …do ñoù khoâng caàn ñeán caùc bit ñòa chæ. Baûn thaân maõ leänh ñaõ moâ taû thanh ghi. Ñònh vò tröïc tieáp : Ñònh vò tröïc tieáp coù theå truy xuaát baát kyø byte naøo trong vuøng nhôù noäi hoaëc caùc thanh ghi chöùc naêng. Moät byte ñöôïc theâm vaøo maõ leänh ñeå xaùc ñònh vò trí thanh ghi ñöôïc duøng. Opcode 8-bit Direct Adress 8-bit Tuøy thuoäc vaøo bit cao nhaát cuûa byte ñòa chæ tröïc tieáp, moät trong hai vuøng nhôù seõ ñöôïc choïn. Khi bit 7 cuûa ñòa chæ tröïc tieáp baèng 0: ñòa chæ tröïc tieáp coù giaù trò töø 0 ñeán 127 (00H – 0FH) vaø 128 bytes thaáp cuûa on chip RAM ñöôïc tham khaûo ñeán, Taát caû caùc I/O port, thanh ghi chöùc naêng. Thanh ghi ñieàu khieån, thanh ghi traïng thaùi coù ñòa chæ töø 128 ñeán 255 (80H-FFh). Khi bit 7=1 byte ñòa chæ tröïc tieáp naèm trong giôùi haïn naøy, töông öùng vôùi thanh ghi chöùc naêng seõ ñöôïc truy xuaát. Ví duï port 0 vaø port 1 coù ñòa chæ töông öùng laø 80H vaø 90H. Ta khoâng caàn phaûi bieát ñòa chæ cuûa nhöõng thanh ghi naøy, trình bieân dòch luoân hieåu caùc maõ gôïi nhôù ngaén goïn cuûa noù nhö P0, P1, TMOD… Ñònh vò giaùn tieáp: Laøm theá naøo ñeå nhaän daïng moät bieán, neáu ñòa chæ cuûa noù ñöôïc xaùc ñònh, tính toaùn, thay ñoåi khi chöông trình ñang chaïy. Vaán ñeà naøy ñöôïc ñaët ra khi thao taùc caùc vò trí nhôù lieân tuïc, chuoãi soá, hay xaâu kyù töï. Thanh ghi vaø ñòa chæ tröïc tieáp khoâng theå duøng vì toaùn haïng ñòa chæ phaûi ñöôïc nhaân bieát trong thôøi gian bieân dòch. Ñeå giaûi quyeát vaán ñeà treân 8051 söû duïng ñòa chæ giaùn tieáp. R1 vaø R0 ñöôïc coi nhö nhöõng con troû. Noäi dung cuûa chuùng chæ ñeán moät ñòa chæ naøo ñoù trong RAM khi ñoïc hoaëc ghi döõ lieäu. Bit thaáp nhaát trong byte maõ leänh xaùc ñònh thanh ghi naøo (R0 hay R1) ñöôïc duøng laøm con troû. Ngoân ngöõ assembly cuûa 8051 duøng kyù hieäu @ ñaët tröôùc R0 hay R1 ñeå moâ taû ñònh vò giaùn tieáp. Ví duï, neáu R1 chöùa 40H vaø taïi vò trí 40H trong boä nhôù noäi chöùa giaù trò 55H, leänh: MOV A, @R1; Chuyeån giaù trò 55H vaøo thanh ghi tích luyõ. Opcode 7-bit i Ñònh vò giaùn tieáp trôû neân quan troïng khi phaûi thao taùc töøng byte boä nhôù noäi moät caùch lieân tuïc. Ví duï nhöõng leänh sau seõ xoùa vuøng RAM töø ñòa chæ 60H ñeán 70H: MOV R0, #60H; MOV @R0, #0; LOOP: INC R0; CJNE R0, #80H, LOOP; Leänh ñaàu tieân khôûi ñoäng thanh ghi vôùi ñòa chæ ñaàu tieân cuûa khoái boä nhôù. Leänh thöù hai duøng leänh giaùn tieáp ñeå chuyeån giaù trò 00H vaøo vò trí ñöôïc troû bôûi R0. Leänh thöù 3 taêng giaù trò con troû ñeán ñòa chæ tieáp theo. Vaø leänh cuoái kieåm tra xem con troû ñeán cuoái khoái chöa. Leänh kieåm tra duøng giaù trò 80H chöù khoâng phaûi giaù trò 7FH vì vieäc xaûy ra sau vieäc dòch chuyeån giaùn tieáp. Nhö vaäy chaéc chaén cuoái cuøng seõ ñöôïc ghi tröôùc khi keát thuùc. Ñònh vò töùc thôøi : Khi moät toaùn haïng nguoàn laø moät haèng soá khoâng phaûi laø moät bieán. Haèng soá coù theå ñöôïc gom vaøo trong leänh nhö moät döõ lieäu töùc thôøi. Byte ñöôïc theâm vaøo seõ chöùa giaù trò. Immediate data Opcode Trong ngoân ngöõ assembly toaùn haïng töùc thôøi ñöôïc ñaët tröôùc baèng kyù hieäu soá (#). Toaùn haïng coù theå laø moät haèng soá, kyù hieäu hoaëc toaùn töû. Trình bieân dòch seõ tính toaùn giaù trò vaø gaùn döõ lieäu töùc thôøi vaøo leänh. Taát caû caùc leänh duøng ñònh vò töùc thôøi ñeàu söû duïng haèng döõ lieäu 8 bit. Ngoaïi tröø khi khôûi ñoäng thanh ghi con troû döõ lieäu (DPTR) MOV DPTR, #40000H; Laø moät leänh 3 bytes naïp soá 16 bit vaøo thanh ghi con troû. Ñònh vò töông ñoái: Ñònh vò töông ñoái chæ duøng trong caùc leänh jump. Ñòa chæ töông ñoái (offset) laø moät soá 8 bit coù daáu ñöôïc coäng vaøo thanh ghi ñeám chöông trình ñeå chæ ra ñòa chæ cuûa leänh tieáp theo phaûi thi haønh. Vì offset laø moät soá 8 bit coù daáu neân taàm nhaûy chæ giôùi haïn trong khoaûng caùch +127 vaø –128 vò trí. Tröôùc khi coäng, thanh ghi ñeám chöông trình taêng leân ñeán ñòa chæ sau leänh jump. Vì vaäy, ñòa chæ môùi laø töông ñoái so vôùi ñòa chæ leänh keá tieáp chöù khoâng phaûi ñòa chæ leänh jump. Thoâng thöôøng chi tieát naøy khoâng lieân quan ñeán ngöôøi laäp trình, khi maø ñích nhaûy ñeán ñöôïc moâ taû baèng moät nhaõn. Trình bieân dòch seõ ñònh giaù trò offset töông ñoái töông öùng. Relative offset Opcode Ví duï neáu nhaõn THERE ñöôïc ñaët taïi leänh coù ñòa chæ 1040H vaø leänh SJMP THERE ÔÛ taïi vò trí 1000H vaø 1001H. Trình bieân dòch seõ gaùn giaù trò offset töông ñoái laø 3EH taïi byte thöù hai cuûa leänh. Ñònh vò tuyeät ñoái: Ñònh vò tuyeät ñoái chæ duøng ñoái vôùi caùc leänh ACALL, AJMP. Leänh 2 byte naøy cho pheùp reõ nhaùnh trong phaïm vi 2Kbytes boä nhôù. 5bit cao cuûa ñòa chæ ñích laø 5 bit cao hieän thôøi trong thanh ghi ñeám chöông trìng. Vì vaäy leänh theo sau leänh reõ nhaùnh vaø leänh keát thuùc reõ nhaùnh keát thuaùc naèm trong phaïm vi 2Kbytes. Addr7 - Addr0 Addr 10 – Addr8 Opcode 5-bit Ñònh vò xa: Ñònh vò xa chæ söû duïng cho caùc leänh LCALL vaø LMP. Caùc leänh 3-byte naøy coù ñòa chæ ñích laø soá 16-bit ñaët trong byte 2 vaø byte 3. Ñieàu thuaän tieän laø toaøn boä vuøng maõ leänh ñeàu coù theå ñöôïc söû duïng. Nhöng moät ñieàu baát tieän laø leänh 3-byte quaù daøi vaø phuï thuoäc vò trí (position-dependent). Phuï thuoäc vò trí laø moät ñieäu baát tieän bôûi vì chöông trình khoâng theå thi haønh taïi moät ñòa chæ khaùc. Opcode Addr15 – Addr8 Addr7 – Addr0 Ñònh vò chæ soá : Ñònh vò chæ soá duøng moät thanh ghi cô sôû (PC hoaëc DPTR) vaø moät thanh ghi laøm offset (ACC) taïo ra moät ñòa chæ seõ bò taùc ñoäng bôûi caùc leänh JMP hoaëc MOVC. Thanh ghi neàn offset ñòa chæ taùc ñoäng PC or DPTR + ACC = Caùc ví duï ñöôïc cung caáp trong phuï luïc cho caùc leänh: MOVC A, @A+ JMP @A+DPTR III – PHAÂN LOAÏI LEÄNH: Caùc leänh 8051 ñöôïc chia thaønh 5 nhoùm nhö sau: Soá hoïc Logic Trao ñoåi döõ lieäu Luaän lyù Reõ nhaùnh chöông trình Caùc leänh soá hoïc Caùc leänh soá hoïc thöôøng söû duïng 4 mode ñònh vò. Leänh ADD A coù theå ñöôïc vieát baèng nhieàu caùch khaùc nhau: ADD A, 7FH (Ñònh vò tröïc tieáp) ADD A, @R0 (---------giaùn tieáp) ADD A, R7 (---------thanh ghi) ADD A, #35H (--------- töùc thôøi) Taát caû caùc leänh soá hoïc thi haønh trong moät chu kyø maùy, ngoaïi tröø leänh INC DPTR (2 chu kyø maùy), MUL AB vaø DIV AB (4 chu kyø maùy). 8051 cung caáp caùch ñònh vò raát maïnh cho vuøng RAM noäi cuûa noù. Baát kyø byte nhôù naøo cuõng ñeàu coù teå taêng, giaûm baèng ñònh vò tröïc tieáp maø khoâng caàn thoâng qua thanh ghi tích luyõ. Leänh INC coù theå thao taùc treân con troû döõ lieäu (16 bit). Nhöng leänh DEC khoâng ñöôïc ñònh nghóa treân con troû. Do ñoù ñeå thöïc hieän ñöôïc ñieàu naøy ta coù caùc leänh sau: DEC DPL ; giaûm byte thaáp DPTR MOV R7, DPL ; chuyeån vaøo DPL CJNE R7, #0FFH, SKIP ; neáu vöôït quaù FF DEC DPH ; giaûm luoân byte cao SKIP : (tieáp tuïc) Caùc leânh MUL AB vaø DIV AB chæ thao taùc treân caùc thanh ghi A vaø B. Leänh Logic : Caùc leänh logic bieåu dieãn caùc toaùn töû luaän lyù nhö AND, OR, EA-OR vaø NOT … Caùc leänh naøy treân töøng bit cuûa byte döõ lieäu. Ví duï thanh ghi ACC chöùa soá 10101101B thì leänh: ANL A, #10110010B Chöùa keát quaû 10100000 vaøo thanh ghi ACC. Caùc mode ñònh vò trong leänh logic cuõng gioáng nhö trong leänh soá hoïc. Taát caû caùc leänh logic duøng ñeán thanh ghi ACC nhö moät toaùn haïng ñeàu laø nhöõng leänh moät chu kyø. Caùc leänh khaùc ñeàu chieám 2 chu kyø maùy. Leänh logic coù theå thao taùc tröïc tieáp baát cöù byte naøo trong vuøng nhôù noäi. Leänh XRL , #data ñaûo nhanh vaø deã daøng caùc bit cuûa port. XRL P1, #0FFH; Leänh naøy moâ taû hoaït ñoäng read-modify-write. 8 bit cuûa port 1 ñöôïc ñoïc, sau ñoù moãi bit cuûa XOR vôùi bit töông öùng trong byte döõ lieäu töùc thôøi ñeàu laø 1, XOR seõ ñaûo moãi bit ñöôïc ñoïc. Keát quaû ñöôïc vieát trôû laïi port 1. Caùc leänh chuyeån dòch döõ lieäu: RAM noäi Caùc leänh chuyeån dòch döõ lieäu trong vuøng RAM noäi chæ chieám 1 hoaëc 2 chu kyø maùy. Leänh coù daïng: MOV , Moät neùt ñaëc tröng cuûa hoï MSC-51 laø stack naèm trong vuøng RAM noäi vaø lôùn daàn leân phía teân cuûa boä nhôù. Leänh PUSH tröôùc tieân taêng con troû stack, sau ñoù môùi sao cheùp byte vaøo stack. PUSH vaø POP chæ duøng ñònh vò tröïc tieáp. Theá nhöng baûn thaân stack laïi duøng ñònh vò tröïc tieáp thoâng qua con troû stack (SP). 8031/8051 khoâng duøng 128 byte cao trong vuøng nhôù noäi laøm stack. Neáu SP vöôït quaù 127 bytes ñöôïc push bò maát vaø byte ñöôïc pop khoâng xaùc ñònh. Leänh dòch chuyeån döõ lieäu 16-bit (MOV duøng ñeå khôûi ñoäng con troû döõ lieäu. Leänh XCV A, Chuyeån ñoåi döõ lieäu giöõa A vaø byte ñöôïc ñònh vò. Leänh XCHD A, @R1 chuyeån ñoåi 4 bit thaáp cuûa thanh ghi ACC vôùi byte ñöôïc R1 chæ ñeán. RAM ngoaøi Dòch chuyeån döõ lieäu giöõa boä nhôù trong vaø ngoaøi söû duïng mode ñònh vò giaùn tieáp. Ñòa chæ giaùn tieáp coù theå laø moät byte hay 2 byte (DPTR). Caùc leänh dòch chuyeån döõ lieäu thao taùc treân boä nhôù ngoaøi ñeàu chieám hai chu kyø maùy vaø duøng thanh ghi tích luyõ laøm toaùn haïng nguoàn hoaëc ñích. Look-Up Tables Hai leänh ñöôïc cho saün ñeå ñoïc moät baûng döõ lieäu trong boä nhôù chöông trình. Khi truy xuaát ñeán vuøng nhôù chöông trình thì noäi dung cuûa baûng chæ ñöôïc ñoïc maø khoâng ñöôïc ghi. Töø gôïi nhôù MOVC töùc laø “move constant”. MOVC duøng thanh ghi ñeám chöông trình cuõng nhö con troû döõ lieäu kaøm thanh ghi neàn vaø thanh ghi tích luyõ laøm offset. MOVC A,@A+DPTR ; Coù theå ñoïc ñöôïc moät soá trong baûng 256 phaàn töû vaøo thanh ghi tích luyõ. Trong ñoù thanh ghi tích luyõ chæ ñeán moät vò trí trong coøn con troû DPTR chæ ñeán vò trí ñaàu baûng. MOVC A,@A+PC ; Cuõng töông töï nhö treân, chæ khaùc laø thanh ghi PC ñöôïc duøng laøm thanh ghi neàn vaø baûng ñöôïc truy xuaát thoâng qua chöông trình con. Tröôùc tieân chæ soá yeâu caàu ñöôïc naïp cho thanh ghi tích luyõ sau ñoù chöông trình con ñöôïc goïi. Vieäc khôûi ñoäng vaø goïi cuï theå nhö sau: MOV A,ENTRY_NUMBER CALL LOOK_UP . . . LOOK_UP : INC A MOVC A, @A+PC Ret TAB: DB data, data, data … Baûng ñöôïc ñaët ngay sau leänh RET cuûa chöông trình con. Leänh INC caàn thieát vì PC seõ chæ ñeán leänh RET sau khi thi haønh MOVC. Vieäc taêng thanh ghi A cho pheùp nhaûy qua khoûi leänh RET. Caùc leänh luaän lyù Caùc leänh luaän lyù cuûa 8051 thao taùc treân bit ñôn. RAM noäi cung caáp 128 bit vaø caùc thanh ghi chöùc naêng cung caáp 128 bit khaùc. Leänh truy xuaát ñeán caùc bit thoâng thöôøng nhö set, xoùa, ñaûo, AND, OR … Taát caû caùc bit ñeàu truy xuaát baèng ñònh vò tröïc tieáp vôùi caùc bit coù ñòa chæ töø 00H – 7Fh trong 128 ñòa chæ thaáp vaø 80H-FFH trong SFRs. Caùc bit trong vuøng ñòa chæ thaáp ñaït taïi 20F ñeán 2FH, ñöôïc ñaùnh soá laàn löôït töø bit 0 cuûa ñòa chæ 200H (bit 00H) ñeán bit 7 cuûa ñòa chæ 2FH (bit 7Fh). Ví duï SETB P.1.7 set bit 7 port 1 Bit carry trong PSW ñöôïc söû duïng nhö single-bit accumulator. Ví duï CLR C CLR CY ; xoùa carry Test bit Caùc leänh test bit thöôøng laø caùc leänh reõ nhaùnh chöông trình. Chuùng kieåm tra traïng thaùi caùc bit ñeå nhaûy ñeán chöông trình töông öùng neáu thoûa ñieàu kieän. Leänh reõ nhaùnh chöông trình Coù moät soá leänh ñieàu khieån doøng chöông trình, chuùng goàm caùc leänh goïi chöông trình con vaø traû veà töø moät chöông trình con hoaëc reõ nhaùnh coù ñieàu kieän vaø khoâng coù ñieàu kieän. Nhöõng khaû naêng naøy coù theå ñöôïc caûi tieán hôn nöõa khi söû duïng 3 mode ñònh vò trong caùc leänh reõ nhaùnh chöông trình. Coù 3 keänh JMP khaùc nhau:SJMP, LJMP vaø AJMP (töông öùng laø ñònh vò töông ñoái, ñònh vò xa vaø ñònh vò tuyeät ñoái). Trình bieân dòch Intel chaáp nhaän leänh chung chung JMP neáu ngöôøi laäp trình khoâng quan taâm ñeán söï thay ñoåi bieân dòch. Trong khi trình bieân dòch cuûa nhöõng haõng khaùc khoâng coù ñaëc tính naøy. JMP ñöôïc bieân dòch thaønh AJMP neáu ñích naèm ôû tröôùc vaø khoaûng nhaûy naèm trong phaïm vi 2Kbytes. Trong caùc tröôøng hôïp khaùc coù theå dòch thaønh LJMP. Leänh CALL cuõng töông töï nhö vaäy. Leänh SJMP ñònh ñòa chæ ñích nhö moät offset töông ñoái. Vì vaäy leänh naøy daøi 2 bytes. Khoaûng caùch nhaûy bò giôùi haïn töø –128 ñeán +127 bytes töông ñoái so leänh sau leänh SJMP. Leänh LJMP xaùc ñònh moät ñòa chæ ñích laø moät soá 16 bit. Vì vaäy leänh naøy daøi 3 bytes. Ñòa chæ ñích coù theå ôû baát kyø trong vuøng nhôù chöông trình 63KB. Leänh AJMP xaùc ñònh ñòa chæ ñích laø moät soá 11 bit. Gioáng nhö SJMP, leänh naøy daøi 2 bytes, nhöng ñöôïc bieân dòch khaùc. Maõ leänh chöùa 3 bit trong voøng 11 bit ñòa chuû vaø byte thöù hai chöùa 8 bit coøn laïi cuûa ñòa chæ ñích. Khi leänh ñöôïc thi haønh 11 bit naøy ñöôïc ñaët vaøo 11 bit thaáp trong thanh ghi PC vaø 5 bit cao trong thanh ghi PC khoâng ñoåi. Vì vaäy ñích phaûi naèm trong phaïm vi 2 Kbytes. Trong taát caû caùc tröôøng hôïp, ngöôøi laäp trình xaùc ñònh ñòa chæ bit baèng moät nhaõn hoaëc nhö moät soá 16 bit. Trình bieân dòch seõ ñaët ñòa chæ ñích vaøo vò trí ñuùng trong leänh ñöôïc bieân dòch. Jump Tables Leänh “JMP @ A+DPTR” cung caáp leänh nhaûy phuï thuoäc ñieàu kieän theo moät baûng nhaûy (jump tables). Ñòa chæ ñích seõ ñöôïc tính trong khi thi haønh chöông trình nhö toång cuûa DPTR vaø thanh ghi tích luyõ. Ñaàu tieân DPTR ñöôïc naïp ñòa chæ cuûa baûng vaø thanh ghi tích luyõ ñöôïc duøng laøm chæ soá. Ví duï neáu coù 5 tröôøng hôïp nhaûy, giaù trò töø 0 ñeán 4 ñöôïc naïp cho thanh ghi tích luyõ vaø leänh nhaûy töông öùng vôùi töøng tröôøng hôïp ñöôïc moâ taû nhö sau: MOV DPTR, #JUMP_TABLE ; MOV A, INDEX_NUMBER ; RL A JMP @A+DPTR Leänh RL ôû treân ñoåi chæ soá (töø 0 ñeán 4) thaønh caùc soá chaün töø 0 ñeán 8, vì moãi ñieåm xaâm nhaäp trong baûng laø moät ñòa chæ 2-byte. JNP_TABLE : AJMP CASE0 AJMP CASE1 AJMP CASE2 AJMP CASE3 Chöông trình vaø con ngaét Coù hai leänh CALL khaùc nhau: ACALL vaø LCALL duøng ñònh vò tuyeät ñoái vaø xa. Gioáng nhö leänh JMP, leänh CALL ñöoâc trình bieân dòch cuûa Intel duøng khi ngöôøi laäp trình khoâng quan taâm ñeán ñòa chæ ñöôïc bieân dòch. Leänh naøy ñaåy thanh ghi PC vaøo stack vaø naïp PC vôùi giaù trò ñöôïc chæ ra trong leänh. Löu yù PC seõ ñöôïc traû laïi giaù trò ñòa chæ sau leänh CALL khi noù chaám döùt chöông trình con. Caùc leänh LJMP vaø ACALL ñeàu coù nhöõng haïn cheá gioáng nhö LJMP vaø AJMP ñöôïc moâ taû ôû treân. Chöông trình con keát thuùc baèng leänh RET, noù seõ traû ñieàu khieån laïi cho chöông trình chính. Khoâng coù gì bí aån khi RET traû ñieàu khieån laïi cho chöông trình chính, noù chæ ñôn giaûn laáy 2 bytes cuoái cuøng cuûa stack vaø ñaët chuùng vaøo thanh ghi PC. Leänh RETI duøng ñeå quay trôû veà chöông trình chính töø trong chöông trình phuïc vuï ngaét. Söï khaùc nhau giöõa RET vaø RETI chæ laø RETI kyù hieäu cho ngaét ñieàu khieån heä thoáng. Leänh nhaûy coù ñieàu kieän 8051 cung caáp moät soá leänh nhaûy coù ñieàu kieän. Taát caû nhöõng leänh naøy ñeàu xaùc ñònh ñòa chæ ñích baèng ñònh vò töông ñoái. Giôùi haïn khoaûng caùch nhaûy töø –128 ñeán +127 bytes keå töø sau leänh nhaûy coù ñieàu kieän. Tuy nhieân ngöôøi laäp trình cuõng coù theå ñònh moät ñòa chæ baèng nhhaõn hoaëc moät soá 16 bit. Khoâng coù bit zero trong thanh ghi PSW. JZ vaø JNZ test noäi dung thanh ghi ACC cho ñieàu khieån nhaûy. Leänh DJNZ (nhaûy neáu khaùc 0) ñöôïc duøng ñeå ñieàu khieån voøng laëp. Ñeå voøng laäp thi haønh N laàn, naïp bieán ñeám vôùi N vaø ñaët DJNZ ôû cuoái voøng laëp ñeå baét ñaàu voøng laëp. Ví duï voøng laëp sau thi haønh 10 laàn: MOV R0,#10 ; LOOPP: (baét ñaàu voøng laëp) . . . (keát thuùc voøng laëp) DJNZ R7, LOOP ; (tieáp tuïc) Leänh CJNZ (so saùnh vaø nhaûy neáu khoâng baèng) cuõng duøng ñeå ñieàu khieån voøng laëp. Hai bytes ñöôïc xaùc ñònh trong vuøng toaùn haïng cuûa leänh vaø leänh nhaûy seõ thi haønh neáu hai bytes naøy khaùc nhau. Ví duï, neáu moät kyù töï ñöôïc ñoïc vaøo thanh ghi ACC töø coång noái tieáp vaø nhaûy ñeán nhaõn TERMINAL neáu kyù töï ñoïc vaøo laø CONTROL-C (03H) . CJNE A, #03, SKIP ; SJMP TERMINAL ; SKIP: (tieáp tuïc) Leänh jump chæ xaûy ra khi A=03H. Moät öùng duïng khaùc cuûa leänh naøy laø so saùnh lôùn hôn vaø beù hôn. Hai byte trong mieàn toaùn haïng laø nhöõng soá khoâng daáu. Neáu toaùn haïng ñaàu nhoû hôn toaùn haïng thöù hai thì côø carry ñöôïc set. Neáu toaùn haïng ñaàu lôùn hôn hoaëc baèng toaùn haïng thöù hai thì côø carry ñöôïc xoùa. Ví duï neáu muoán nhaûy ñeán BIG neáu ACC lôùn hôn hoaëc baèng 20H, ta coù caùc leänh sau: CJNE A,#20H,$+3 JNC BIG Kyù hieäu dollars “$” laø moät kyù hieäu ñaët bieät cuûa trình bieân dòch thay theá cho ñòa chæ cuûa leänh hieän thôøi. Vì CJNE laø moät leänh 3-bytes, “$+3” laø ñòa chæ cuûa leänh tieáp theo. Chöông V GIÔÙI THIEÄU VEÀ KIT VI ÑIEÀU KHIEÅN 8051 I –CHÖÙC NAÊNG CAÙC PHÍM: 1 – Baøn phím: Kít vi ñieàu khieån coù taát caû laø 26 phím nhaán nhö hình 1 ñöôïc chia thaønh caùc nhoùm nhö sau: 16 phím nhaäp döõ lieäu cuûa chöông trình daïng soá thaäp luïc phaân töø 0 ñeán F. Caùc phím chöùc naêng Hình 1 Q G T P K I C D E F R 8 9 A B S 4 5 6 7 0 1 2 3 Q 2 – Chöùc naêng cuûa phím: Khi môùi caáp ñieän cho maùy 4 Led beân traùi seõ hieån thò 4 soá 0000, boán led beân phaûi taét Neáu khoâng hieån thò ñuùng haõy nhaán phím “Q”. Phím “Q” coù chöùc naêng Reset maïch khi khôûi ñoäng hoaëc khi muoán thoaùt khoûi chöông trình vi ñieàu khieån ñang thöïc hieän (chöùc naêng nhö phím RESET cuûa maùy vi tính) ­ S 3 – Chöùc naêng cuûa phím: Muoán nhaäp döõ lieäu môùi vaøo oâ nhôù coù ñòa chæ ví duï 4000, haõy duøng caùc phím nhaäp döõ lieäu ñaùnh soá 4000, ñòa chæ naøy seõ xuaát hieän ôû 4 led beân phaûi. Nhaán phím “S” thì ñòa chæ 4000 seõ thay theá cho ñòa chæ tröôùc ñoù ôû 4 led beân traùi. 4 led coøn laïi chæ coù 2 led saùng ñoù chính laø noäi dung cuûa oâ nhôù töông öùng vôùi ñòa chæ 4 led beân traùi 4 – Chöùc naêng cuûa phím: Duøng ñeå löu tröõ döõ lieäu vaøo oâ nhôù coù ñòa chæ ôû 4 led beân traùi, ví duï muoán löu tröõ döõ lieäu laø “3F” vaøo oâ nhôù coù ñòa chæ laø 4000, haõy ñaùnh “3F” töø caùc phím döõ lieäu, döõ lieäu môùi “3F” seõ thay theá döõ lieäu cuõ tröôùc ñoù. Sau ñoù nhaán phím “­” ñeå löu tröõ döõ lieäu naøy vaøo oâ nhôù 4000. Ñòa chæ seõ taêng leân 1 laø 4001 ñeå saün saøng nhaän döõ lieäu tieáp theo vaø 2 led beân traùi hieån thò noäi dung cuûa oâ nhôù 4001. ¯ Chöùc naêng cuûa phím naøy löu tröõ döõ lieäu ñoàng thôøi taêng ñòa chæ cuûa oâ nhôù. 5 – Chöùc naêng cuûa phím: Coù chöùc naêng giaûm ñòa chæ cuûa oâ nhôù xuoáng 1 ñôn vò töông öùng vôùi moãi laàn nhaán. Ví duï muoán kieåm tra laïi oâ nhôù vöøa nhaäp laø 4000 xem coù ñuùng laø döõ lieäu “3F” khoâng, haõy nhaán phím “¯”. Neáu sai thì nhaäp laïi, neáu ñuùng thì nhaán phím taêng ñòa chæ ñeå naïp caùc döõ lieäu tieáp theo. P 6 – Chöùc naêng cuûa phím: Sau khi nhaäp döõ lieäu cuûa moät chöông trình taïi ñòa chæ 4000, ñeå vi ñieàu khieån thöïc hieän chöông trình naøy haõy nhaán ohím “P”. Khi ñoù treân maøn hình 8 Led seõ xuaát hieän “PC 4000”. Neáu muoán thöïc hieän chöông trình taïi ñòa chæ 4000 haõy nhaán phím taêng ñòa chæ, khi ñoù treân maøn hình seõ xuaát hieän theâm daáu “=” nhö sau: “PC =4000”. Sau ñoù nhaán phím “G”. Chöông trình seõ ñöôïc thi haønh. Neáu chöông trình löu taïi ñòa chæ khaùc vôùi ñòa chæ 4000 thì tröôùc khi nhaán phím taêng ñòa chæ haõy ñaùnh ñòa chæ cuûa chöông trình ñoù vaøo baèng caùc phím nhaäp döõ lieäu. Sau ñoù nhaán phím taêng ñòa chæ, ví duï muoán thöïc hieän chöông trình taïi ñòa chæ 5000 thì treân maøn hình 8 led seõ hieån thò “PC =5000”. Nhaán tieáp phím “G” chöông trình seõ ñöôïc thi haøn htaïi ñòa chæ 5000. 7 - Chöùc naêng cuûa phím: Duøng ñeå xem noäi dung caùc thanh ghi, tröôùc tieân nhaán phím “R” vaø sau ñoù nhaán phím thaäp phaân töông öùng töø “6” cho ñeán “F” Nhaán phím thaäp phaân “A”: xem noäi dung thanh ghi A Nhaán phím thaäp phaân “B”: xem noäi dung thanh ghi B Nhaán phím thaäp phaân “C”: xem noäi dung thanh ghi C R Nhaán phím thaäp phaân “D”: xem noäi dung thanh ghi D Nhaán phím thaäp phaân “E”: xem noäi dung thanh ghi E Nhaán phím thaäp phaân “F”: xem noäi dung thanh ghi F Nhaán phím thaäp phaân “8”: xem noäi dung thanh ghi H Nhaán phím thaäp phaân “9”: xem noäi dung thanh ghi L Nhaán phím thaäp phaân “7”: xem noäi dung caëp thanh ghi SP Nhaán phím thaäp phaân “6”: xem noäi dung caëp thanh ghi PC I 8 – Chöùc naêng cuûa phím: Phím naøy taùc ñoäng ñeán ngaét cöùng cuûa heä thoáng vi xöû lyù. Chöông trình seõ bò ngöøng sau khi nhaán phím “I”, neáu nhaán “I” theâm laàn nöõa heä thoáng seõ ñöôïc ñaët laïi traïng thaùi maëc ñònh ban ñaàu töông ñöông vôùi reset maùy baèng phím “Q” T 9 – Chöùc naêng cuûa phím: Chöùc naêng cuûa phím naøy laø thöïc hieän chöông trình töøng böôùc. Trình töï nhaán phím gioáng nhö phím “G”. Neáu nhaán phím “G” ñeå thöïc hieän caû chöông trình taïi ñòa chæ chöùa trong caëp thanh ghi PC, ta nhaán phím “T” chöông trình seõ ñöôïc thöïc hieän töøng leänh taïi ñòa chæ chöùa trong PC. * Chuù yù: neáu nhaán phím “G” khoâng thoâng qua phím “P” vaø caùc phím khaùc thì chöông trình maëc nhieân seõ thöïc hieän taïi ñòa chæ 4000. Coù 1 soá chöông trình chöùc naêng chöa naïp vaøo EPROM II – GIÔÙI THIEÄU CAÁU TRUÙC PHAÀN CÖÙNG KIT VI XÖÛ LYÙ: 1 – Taàn soá laøm vieäc: Kit vi ñieàu khieån söû duïng vi ñieàu khieån 8051 hoaëc 8951 cuûa Intel vôùi taàn soá hoaït ñoäng 12MHz. Caùc chöông trình veà thôøi gian ñöôïc vieát töông öùng vôùi ñòa chæ naøy. 2 – Toå chöùc boä nhôù: a . Boä nhôù EPROM: Coù dung löôïng 16KB söû duïng 2 EPROM 2764, chöông trình heä thoáng chöùa ôû EPROM thöù nhaát, EPROM thöù 2 chöa söû duïng ñöôïc thieát keá ôû daïng socket. EPROM 1 coù ñòa chæ töø 0000H – 1FFFH EPROM 2 coù ñòa chæ töø 2000H – 3FFFH b . Boä nhôù RAM: Boä nhôù RAM coù dung löôïng 16KB söû duïng 2 IC 6264: RAM 1 coù ñòa chæ töø 4000H – 5FFFH RAM 2 coù ñòa chæ töø 6000H – 7FFFH Chöông trình coù theå söû duïng toaøn boä caùc vuøng nhôù RAM 3 – Caùc IC ngoaïi vi: trong heä thoáng coù söû duïng 2 IC 8255A duøng ñeå giao tieáp vôùi thieát bò ngoaïi vi. Ñòa chæ cuûa caùc port 8255-1 8255-2 Port A 8000H A000H Port B 8001H A001H Port C 8002H A002H Thanh ghi ñieàu khieån 8003H A003H Baûng ñoà nhôù cuûa 2 IC 8255 Caùc ngoõ ra cuûa IC 8255A –1, 8255 – 2, ñöa ra beân ngoaøi baèng connector 64 chaân coù sô ñoà chaân ôû baûng tra. Moãi IC 8255A coù 3 port, moãi port coù 8 chaân ñieàu khieån neân soá chaân ñöa ra beân ngoaøi ñeå ñieàu khieån laø 48. 4 – Khoái giaûi maõ hieån thò – queùt phím söû duïng IC 8279: Vuøng ñòa chæ söû duïng cuûa IC 8279 laø C000H – C001H , trong ñoù: Ñòa chæ C000H laø ñòa chæ duøng ñeå gôûi döõ lieäu caàn hieån thò vaø ñoïc maõ phím. Ñòa chæ C001H laø ñòa chæ duøng ñeå gôûi töø ñieàu khieån ra 8279 – ñoïc thanh ghi traïng thaùi. a . Phaàn giaûi maõ hieån thò: Goàm coù 8 led vôùi thöù töï Led1 ñeán Led8 theo höôùng töø phaûi sang traùi nhö hình 2. LED4 LED5 LED6 LED 7 LED 1 LED 2 LED 3 LED8 a b c d e f g p Caáu truùc byte döõ lieäu cuûa led p g f e d c b A Heä thoáng söû duïng Led loaïi Anode chung neân muoán ñoaïn naøo saùng thì bit döõ lieäu töông öùng vôùi ñoaïn ñoù baèng 1. Ñoaïn naøo taét thì bit töông öùng vôùi ñoaïn ñoù baèng 0. Ví duï muoán saùng soá “9” thì byte döõ lieäu seõ gôûi ra led laø: 0 1 1 0 1 1 1 1 Töông öùng vôùi soá hex laø 6FH. Sau ñaây laø maõ 7 ñoaïn cuûa 1 chöõ soá vaø chöõ caùi: p G f e d c b a Hex Soá 0 0 0 1 1 1 1 1 1 3F Soá 1 0 0 0 0 0 1 1 0 06 Soá 2 0 1 0 1 1 0 1 1 5B Soá 3 0 1 0 0 1 1 1 1 4F Soá 4 0 1 1 0 0 1 1 0 66 Soá 5 0 1 1 0 1 1 0 1 6D Soá 6 0 1 1 1 1 1 0 1 7D Soá 7 0 0 0 0 0 1 1 1 07 Soá 8 0 1 1 1 1 1 1 1 7F Soá 9 0 1 1 0 1 1 1 1 6F Chöõ A 0 1 1 1 0 1 1 1 77 Chöõ b 0 1 1 1 1 1 0 0 7C Chöõ C 0 0 1 1 1 0 0 1 39 Chöõ d 0 1 0 1 1 1 1 0 5E Chöõ E 0 1 1 1 1 0 0 1 79 Chöõ F 0 1 1 1 0 0 0 1 71 Chöõ P 0 1 1 1 0 0 1 1 73 Chöõ H 0 1 1 1 0 1 1 0 76 Chöõ U 0 0 1 1 1 1 1 0 3E Coù theå tìm caùc maõ töông öùng coøn laïi Coù 2 caùch hieån thò döõ lieäu treân caùc Led: Caùch 1: khi gôûi caùc döõ lieäu môùi ra ñòa chæ C000H thì döõ lieäu naøy seõ hieån thò ôû Led 1, döõ lieäu tröôùc ñoù cuûa caùc led seõ dòch sang traùi theo chieàu muõi teân trong hình 3. Rieâng byte döõ lieäu tröôùc ñoù cuûa led 8 seõ dòch vaø maát ñi. LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Muõi teân naèm ngang chæ chieàu nhaän döõ lieäu töø vi ñieàu khieån ñöa ñeán led 1. Caùc muõi teân voøng cung chæ chieàu dòch chuyeån döõ lieäu. * Chuù yù: neáu muoán xoùa heát maøn hình 8 led thì gôûi 8 byte 00h lieân tieáp ra A000h. Caùch 2: kieåu gôûi döõ lieäu ôû caùch 1 coøn ñöôïc goïi laø kieåu dòch chuyeån döõ lieäu tuaàn töï. Beân caïnh ñoù 8279 coøn cho pheùp gôûi döõ lieäu tröïc tieáp ñeán baát kyø led naøo trong 8 led – toå chöùc cuûa led khoâng coù gì thay ñoåi ñòa chæ gôûi döõ lieäu vaãn laø C000H nhöng moãi led coøn coù theâm 1 ñòa chæ ñieàu khieån nhö trong hình 4. Ñòa chæ ñieàu khieån cuûa led phaûi gôûi ra ñòa chæ C001H tröôùc khi gôûi döõ lieäu ra ñòa chæ C000H. LED 1 LED 2 LED 3 LED4 LED5 LED6 LED 7 LED8 80H 81H 82H 83H 84H 85H 86H 87H b. Phaàn giaûi maõ baøn phím: Chöông trình con giaûi maõ baøn phím ñöôïc vieát taïi ñòa chæ 0223H söû duïng caùc thanh ghi R2, A, DPTR, R6, R7, oâ nhôù 41h. Khi goïi chöông trình con 0223H: Neáu khoâng aán phím thì sau khi thöïc hieän xong chöông trình seõ trôû veà chöông trình chính vôùi noäi dung thanh ghi A =FFH Neáu coù aán phím thì maõ cuûa phím aán chöùa trong A. Chöông trình naøy neáu coù aán phím hoaëc khoâng aán phím ñeàu trôû veà chöông trình sau khi thöïc hieän xong vaø phaûi chuù yù caát döõ lieäu trong caùc thanh ghi khi goïi chöông trình con naøy Baûng maõ caùc phím soá: Phím Maõ Phím Maõ Phím Maõ Phím Maõ 0 00 4 04 8 08 C 0C 1 01 5 05 9 09 D 0D 2 02 6 06 A 0A E 0E 3 03 7 07 B 0B F 0F Baûng maõ caùc phím chöùc naêng: Phím Maõ Phím Maõ T 10 S 14 G 11 15 R 12 P 16 13 K 17 PHAÀN II THIEÁT KEÁ Chöông I THIEÁT KEÁ PHAÀN CÖÙNG I – MAÏCH CHUYEÅN ÑOÅI AD: 1 – Giôùi thieäu ADC 0809 ADC 0809 laø thieát bò bieán ñoåi töông töï soá duøng kyõ thuaät CMOS. Toång coäng ngöôøi söû duïng coù 8 keânh laøm vieäc hoaøn toaøn ñoäc laäp vôùi nhau ñeå löïa choïn. ÔÛ ñaây coøn chuù yù laø caùc ñieän aùp ñöôïc ño so vôùi ñieän theá 0V. Coøn moät ñaëc ñieåm ñaùng quan taâm hôn laø söï tieâu thuï doøng ñieän cuûa vi maïch haàu nhö khoâng ñaùng keå (chæ côõ 300uA). Thôøi gian bieán ñoåi khoaûng 100 us. Caùc thoâng soá kyõ thuaät cuûa boä bieán ñoåi ADC 0809 ñöôïc keå ra nhö sau: Khoâng caàn ñoøi hoûi ñieàu chænh ñieåm 0. Queùt ñoäng 8 keânh baèng caùc logic ñòa chæ. Giaûi tín hieäu loái vaøo Analog khi ñieän aùp nguoàn laø +5V. Taát caû caùc tín hieäu töông thích TTL. Ñoä phaân giaûi 8 bit. Thôøi gian bieán ñoåi 100us. Doøng tieâu thuï (bình thöôøng): 0.3 mA. Taàn soá cung caáp cho chaân clock: 10KHz ÷ 1280KHz. Thoâng thöôøng vaøo khoaûng 640KHz. Tín hieäu giöõ nhòp duøng cho boä bieán ñoåi AD caàn phaûi taïo ñöôïc ôû beân ngoaøi vaø ñöôïc daãn ñeán chaân clock. Ñieän aùp so saùnh ñöôïc ñöa qua taàng laëp laïi ñieän aùp ñeå laøm chaân REF+. Chaân naøy coù ñieäntrôû loái vaøo côõ 2.5K. Maãu bit ôû caùc loái vaøo ñòa chæ A, B, C seõ xaùc ñònh xem keânh naøo phaûi ñöôïc löïa choïn. 2 – Nguyeân taéc hoaït ñoäng Nguyeân taéc laøm vieäc cuûa boä bieán ñoåi ADC 0809 cuõng khoâng coù gì phöùc taïp. Moät xung döông ôû chaân start kích hoaït söï bieán ñoåi. Qua ñoù maãu bit ôû loái vaøo ñòa chæ A, B, C cuõng ñoàng thôøi ñöôïc choát vaø xaùc ñònh keânh caán bieán ñoåi. Trong quaù trình bieán ñoåi, chaân ra EOC (End of Conversion) ñöùng ôû möùc Low. Sau caû 100us möùc naøy seõ chuyeån sang high vaø baùo hieäu keát thuùc quaù trình chuyeån ñoåi. Sau ñoù keát quaû cuûa quaù trình chuyeån ñoåi seõ xeáp haøng ôû ñöôøng daãn döõ lieäu D0 ÷ D7. Khi OE (Output Enable) = 1, caùc ñöôøng daãn coù theå ñoïc tieáp. 3 – Maïch taïo dao ñoäng cho ADC 0809: 0,7 V0 (f= ) RC Do taàn soá laøm vieäc töông ñoái cao, ta söû duïng boä ña haøi taïo soùng xuoáng duøng Trigger Schmitt theo coâng ngheä TTL. Vôùi maïch ñieän nhö treân ta coù taàn soá dao ñoäng: F » 0,7 » 700 KHz RC 4 – Maïch so saùnh laëp laïi ñieän aùp: Ta söû duïng OP-AMP LM 358 ñeå laäp laïi ñieän aùp nhaèm phoái hôïp toång trôû vôùi ngoõ vaøo REF+ cuûa ADC 0809: ñoàng thôøi cung caáp möùc aùp chuaån ñeå ñöa vaøo REF+ ñeå taïo caùc möùc logic ôû ngoõ ra töông öùng. Caùc ñieän trôû 1K, 2K. 10K vaø VR 10K nhaèm taïo caàu phaân aùp vaø choïn möùc aùp chuaån ñöa vaøo REF+ VZ = 5,6V oån aùp, giöõ ñieän aùp coá ñònh Ngoõ ra boä so saùnh laø 5V. Vôùi giaù trò naøy ta coù söï thay ñoåi AV ôû ngoõ vaøo ñeå thay ñoåi 1 möùc logic ôû ngoõ ra laø: AV = 5/256 » 20mV 5 – Maïch taïo giao tieáp vôùi KIT 8051: 8 bit ra cuûa 0809 ñöôïc noái vôùi PortA cuûa 8255 –1 3 chaân choïn keânh A0, A1, A2 cuûa 0809 ñöôïc noái PB0 ¸ PB2. Vì vaäy khi ghi moät döõ lieäu vaøo vuøng nhôù cuûa 0809 töùc choïn keânh cuûa noù. Chaân Start noái PC4, ALE noái PC5 Chaân OE ñöôïc noái leân Vcc. Luoân ôû traïng thaùi cho pheùp ñoïc döõ lieäu. Chaân EOC ñöôïc noái vôùi PCC. Trong quaù trình thöïc hieän chuyeån ñoåi vi ñieàu khieån seõ ñoïc giaù trò EOC taïi PCO. Neáu EOC = 1: hoaøn thaønh quaù trình chuyeån ñoåi, vi ñieàu khieån seõ ñoïc döõ lieäu löu tröõ vaøo RAM ñeå xöû lyù. PC1 ñöôïc noái qua R1KW ñöa leân +5V (PC1 = 1). Khi coù aán phím PC1 = 0, ñöôïc ñöa vaøo vi ñieàu khieån ñeå baùo choïn keânh. II – MAÏCH CHUYEÅN ÑOÅI DA 0808 DAC 0808 coù nhieäm vuï bieán ñoåi maõ nhò phaân thaønh doøng (tín hieäu analog). Doøng naøy coù chieàu chaïy vaøo Iout cuûa DAC 0808 vaø coù cöôøng ñoä thay ñoåi theo tæ leä vôùi data ôû ngaõ vaøo. Khi data thay ñoåi töø 0 ¸ 255 Iref, ôû maïch doøng maõ nhò phaân ñöôïc ñöa töø KIT 8051 qua Port A cuûa 8255-2 ñeå ñöa vaøo DAC 0808. Tín hieäu DAC 0808 taïo ra doøng neân coøn phaûi coù maïch chuyeån doøng thaønh aùp duøng LM324. Ta caàn ñieän aùp thay ñoåi töø 0-5V maø doøng thay ñoåi töø 0 ¸ 2mA neân ta caàn ñieàu chænh VR 5K cho phuø hôïp. Sô ñoà nguyeân lyù card chuyeån ñoåi A/D – D/A SÔ ÑOÀ BOÁ TRÍ LINH KIEÄN SÔ ÑOÀ MAÏCH IN MAËT TREÂN Chöông II THIEÁT KEÁ PHAÀN MEÀM I – LÖU ÑOÀ GIAÛI THUAÄT 1 – Löu ñoà chöông trình chính: START Khôûi ñoäng 8255-1 MODE0 Naïp ñòa chæ cho keânh ñaàu tieân vaøo r7 Chöông trình xoùa 8LED Chöông trình hieån thò thöù töï keânh choïn taïi LED 8 Chöông trình chuyeån ñoåi data Chöông trình xuaát data ra D/A Chöông trình ñoåi HEX-BCD Chöông trình giaûi maõ LED 7 ñoaïn Chöông trình hieån thò Chöông trình delay Khôûi ñoäng Port C Kieåm tra nhaán phím N PC4 = 0 Y Taêng R7 ñeå doø keânh keá N R7= 08 Y 2 – Löu ñoà chöông trình con chuyeån ñoåi: Khôûi ñoäng Port B 8255 -1 Ghi A vaøo 0809 Choïn keânh Khôûi ñoäng 0809 ALE = 1, ST = 1 Löu keát quaû START Nhaäp keânh caàn queùt r7 ® a Chuyeån ñoåi N keát thuùc Y END II- CHÖÔNG TRÌNH: Chöông trình chính chuyeån ñoåi A/D – D/A: ORG 4000H MOV A, #91H ; Khôûi taïo 8255-1 port A MOV DPTR, #8003H MOV @DPTR, A X1 : MOV R7, #00H ; Naïp ñòa chæ ñeå choïn keânh queùt X2: LCALL CLEAR ; Goïi chöông trình xoùa LCALL DISPLAY – 1 ; Hieån thò soá keânh choïn ôû LED LCALL CHUYENDOI ; Goïi chöông trình chuyeån ñoåi LCALL OUT ; Goïi chöông trình xuaát ra D/A LCALL HEX – BCD ; Goïi chöông trình chuyeån soá hex sang BCD LCALL DECODE ; Goïi chöông trình giaûi maõ 7 ñoaïn LCALL DISPLAY – 2 ; Goïi chöông trình hieån thò döõ lieäu vöøa chuyeån ñoåi LCALL DELAY ; Goïi chöông trình delay MOV DPTR, #8002 ; Kieåm tra nhaán phím MOV A, @DPTR ANL A, 02H JNZ X2 INC R7 ; Taêng leân ñeå doø keânh keá CJMP 08, X2 ; Kieåm tra ñaõ doø heát keânh chöa LJMP X1 ; quay trôû laïi *********************************************************** Caùc chöông trình con phuïc vuï cho chöông trình chính *********************************************************** Chöông trình con xoùa vuøng data hieån thò cho 8 keânh töø 5000h – 507Fh ORG 4880H MOV DPTR, #5000H ; Duøng ram ngoaøi ñeå löu tröõ MOV A, #00H MOV R0, #80H ; Xoùa töø 5000h ñeán 507Fh CLE1: MOVX @DPTR, A INC DPTR DJNZ R0, CLE1 RET *********************************************************** Chöông trình con thöïc hieän quaù trình chuyeån ñoåi keânh thöù n trong R7 *********************************************************** ORG 4500H MOV A, R7 ;Choïn keânh thöù n, ALE =0 MOV DPTR, A ; Ñieàu khieån quaù trình chuyeån ñoåi cho keânh thöù n ORL A, #10H ; Cho ALE =1 MOVX @DPTR, A ORL A, #20H ; Cho ALE =1, ST =1 MOVX @DPTR, A NOP NOP NOP CLR A ; Cho ALE =0, ST =0 MOVX @DPTR, A ; Kieåm tra quaù trình chuyeån ñoåi keát thuùc hay chöa CTC1: MOV DPTR, #PORTC MOVX A, @DPTR ANL A, #01H JZ CTC1 ; Neáu chöa xong thì quay laïi ; Xong quaù trình bieán ñoåi baét ñaàu nhaän döõ lieäu MOV DPTR, #PORTA MOVX A,@DPTR RET *********************************************************** Chöông trình hieån thò thöù töï soá keânh choïn *********************************************************** ORG 4100H MOV A, #80H ; Choïn vò trí led ñeå hieån thò MOV DPTR, C001 MOVX @DPTR, A MOV A, R7 MOV 83, 43 ; Naïp byte cao ñòa chæ chöùa maõ hieån thò MOV 82, A ; Naïp byte thaáp ñòa chæ chöùa maõ hieån thò MOV A, @DPTR ; Hieån thò ra Led MOV DPTR, C000 MOVX @DPTR, A LCALL DELAY RET *********************************************************** Chöông trình xuaát ra D/A *********************************************************** ORG 4200H MOV R0, A ; Caát döõ lieäu vaøo thanh ghi R0 MOV A, #80 ; Khôûi taïo 8255 – 2 Mode 0 MOV DPTR, A003 MOV @DPTR, A MOV A, R0 ; Naïp trôû laïi döõ lieäu vaøo thanh ghi A MOV DPTR, A000 ; Xuaát döõ lieäu ra Port A MOV @DPTR, A RET *********************************************************** Chöông trình chuyeån soá HEX sang soá BCD *********************************************************** ORG 4600H MOV DPTR, #5008H MOV B, #10 ; Naïp 10 vaøo thanh ghi B DIV AB MOV R0, A ; Caát taïm A sang R0 MOV A, B MOVX @DPTR, A ; Caát data ñôn vò vaøo 5008H INC DPTR ; Taêng leân ñeå löu haøng chuïc MOV A, R0 ; Laáy laïi data haøng chuïc, haøng traêm MOV B, #10 ; Naïp 10 vaøo thanh ghi B DIV AB MOV R0, A ; Caát taïm A sang R0 MOV A, B MOVX @DPTR, A ;Caát data haøng chuïc vaøo 5009H INC DPTR ;Taêng leân ñeå löu haøng traêm MOV A, R0 ;Laáy laïi data haøng traêm MOVX @DPTR, A ;Caát data haøng traêm vaøo 500AH RET *********************************************************** Chöông trình giaûi maõ 7 ñoaïn *********************************************************** ORG 4700H MOV R0, #08H ;Quaûn lyù byte ñòa chæ thaáp MOV DPTR, #5000H DECO1:PUSH 82 ; Caát DPTR PUSH 83 ;Caát DPTR MOV DPTR, #5000H MOV A, R0 MOVC A, @A+DPTR MOV DPTR, #0200H MOVC A, @A+DPTR POP 83H POP 82H MOVX @DPTR, A INC DPTR INC R0 CJNE R0, #0BH, DECO1 RET ******************************************************** Chöông trình hieån thò ******************************************************** ORG 4800H MOV R0, #87H ; Töø ñieàu khieån 8279 MOV R1, #00 ; Ñòa chæ töông ñoái vuøng data DISP: MOV DPTR, #CW79 ; Ñòa chæ ñieàu khieån 8279 MOV A, R0 MOV @DPTR, A MOV DPTR, #5000H MOV A, R1 ;Chuyeån ñòa chæ töông ñoái töø R1 sang A MOVC A, @A+DPTR ;Laáy byte döõ lieäu MOV DPTR, #DT79 ;Ñòa chæ hieån thò 8279 MOVX @DPTR, A DEC R0 INC R1 CJNE R1, #08, DISP RET *********************************************************** Vuøng chöùa maõ hieån thò keânh choïn taïi LED 8 *********************************************************** ORG 4300H 4300 3F 4301 06 4302 5B 4303 4F 4304 66 4305 6D 4306 7D 4307 07 *********************************************************** Chöông trình con delay *********************************************************** ORG 488CH MOV 7DH, #05H DEL3: MOV 7FH, #0A0H DEL2: MOV 7EH, #0FFH DEL1: DJNZ 7EH, DEL1 DJNZ 7FH, DEL2 DJNZ 7DH, DEL3 RET KEÁT LUAÄN Sau 6 tuaàn thöïc hieän ñeà taøi döôùi söï höôùng daãn cuûa thaày Leâ Thanh Ñaïo em nhaän thaáy kieán thöùc cuûa mình ñaõ ñöôïc cuûng coá vaø môû roäng hôn. Tuy vaäy ñeà taøi vaãn coøn raát nhieàu thieáu soùt, vì theá em raát mong ñöôïc söï ñoùng goùp chaân thaønh cuûa quyù thaày coâ ñeå ñeà taøi ngaøy caøng trôû neân phong phuù vaø hoaøn thieän. Ngaøy 25 Thaùng 02 Naêm 2000 Sinh vieân thöïc hieän Nguyeãn Vuõ Anh Duy PHAÀN III PHUÏ LUÏC TAØI LIEÄU THAM KHAÛO 1 –Vi ñieàu khieån trong ño löôøng vaø ñieàu khieån - Ngoâ Dieân Taäp 2 – Ño löôøng vaø ñieàu khieån baèng maùy tính - Ngoâ Dieân Taäp 3 – Digital system principles and applications - Ronald J.Tocci 4 – Electronic divices and circuits - Theodore F.Bogart 5 – The 8051 Microcontroller - I.Scott Mackenzie

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

  • docDO15.DOC
Tài liệu liên quan