Hệ thống điều khiển nhiệt độ bằng Vi xử lý

Phần 1: Giới thiệu lý thuyết .1 chương i: Giới thiệu về hệ thống điều khiển nhiệt độ 1 i. Khái niệm về hệ thống điều khiển nhiệt độ 1 ii. Các nguyên tắc điều khiển 1 iii. Các loại điều khiển .2 iv. Mô hình tổng quát và các phương pháp đo nhiệt độ 3 chương ii: Cảm biến nhiệt .7 i. Các thông số cảm biến 7 ii. Các loại cảm biến thông dụng .7 chương iii: Giới thiệu họ microcontroller .12 i. Phần cứng .12 ii. Tập lệnh của 8051/8031 .25 iii. Hoạt động của bộ định thời ( timer ) .31 iv. Hoạt động của port nối tiếp 35 v. Hoạt động ngắt ( interrupt) 38 chương iv: Giới thiệu ic at 8952 .42 i. đặc điểm về phần tổ chức bộ nhớ 42 ii. Các mode hoạt động .43 chương v: Mở rộng port dùng pii 8255 .46 i. Cấu tạo phần cứng 8255 .46 ii. Cấu trúc phần mềm của 8255 .47 iii. Giao tiếp giữa vi xử lý với 8255 48 chương vi: Biến đổi tương tự_ số .51 i. Tổng quát .51 ii. Các kỹ thuật adc .53 iii. Giao tiếp phần mềm 60 iv. Giao tiếp phần cứng 61 phần 2: Thiết kế và chương trình 62 chương i : Thiết kế kit vi xử lý at 8952 65 i. Giới thiệu chung .65 ii. Giới thiệu các linh kiện chính trong mạch 65 chương ii: Thiết kế bàn phím và khối hiển thị 68 i. Thiết kế mạch bàn phím 68 ii. Thiết kế khối hiển thị 69 chương iii: Thiết kế mạch công suất và mạch giao tiếp xuất 71 i. Mạch công suất 71 ii. Phương pháp điều khiển độ rộng xung 72 iii. Thiết kế mạch giao tiếp xuất 73 chương iv :thiết kế mạch thu thập dữ liệu .75 i. Cảm biến nhiệt .75 ii. Chọn biến đổi adc .76 chương v :thiết kế khâu hiệu chỉnh pid số .80 i. đối tượng lò nhiệt .80 ii. Thiết kế bộ hiệu chỉnh pid số .81 chương vi: Giải thuật và chương trình 87 i. Giải thuật .87 ii. Chương trình 92

doc59 trang | Chia sẻ: banmai | Lượt xem: 1945 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Hệ thống điều khiển nhiệt độ bằng Vi xử lý, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ôn +127 hoaëc nhoû hôn –128 seõ set bit OV. b)Thanh ghi B: Thanh ghi B ôû ñòa chæ F0H ñöôïc duøng cuøng vôùi thanh ghi tích luõy A cho caùc pheùp toaùn nhaân vaø chia. Leänh MUL AB seõ nhaân caùc giaù trò khoâng daáu 8 bit trong A vaø B roài traû veà keát quûa 16 bit trong A (byte thaáp) vaø B (byte cao). Leänh DIV AB seõ chia A cho B roài traû veà keát quûa nguyeân trong A vaø phaàn dö trong B. Thanh ghi B cuõng coù theå ñöôïc xem nhö thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa ttöøng bit baèng caùc ñòa chæ bit FOH ñeán F7H. Con troû ngaên xeáp:(SP) Thanh ghi SP laø thanh ghi 8 bit ñònh vò taïi ñòa chæ 81H .Noù chöùa ñòa chæ cuûa ñata hieän taïi ôû ñænh stack .Caùc pheùp toaùn lieân quan ñeán stack boa goàm vieäc ñöa döõ lieäu vaøo stack(PUSH) vaø laáy ( POP) ñata ra khoûi stack .Vieäc ñöa data vaøo stack laøm taêng SP tröôùc khi ghi data vaøo stack ,vaø vieäc laáy data ra khoûi stack seõ laøm giaûm noäi dung SP troû döõ lieäu: Con troû döõ lieäu (DPTR) ñöôïc duøng ñeå truy xuaát boä nhôù ngoaøi laø moät thanh ghi 16 bit ôû ñòa chæ 82H(DPL: byte thaáp) vaø 83H (DPH:byte cao). Ba leänh sau seõ ghi 55H vaøo RAM ngoaøi ôû ñòa chæ 1000H: MOV A,#55H MOV DPTR,#1000H MOVX @DPTR,A Leänh ñaàu tieân duøng ñòa chæ töùc thôøi ñeå taûi döõ lieäu 55H vaøo thanh ghi tích luõy, leänh thöù hai cuõng duøng ñòa chæ töùc thôøi, laàn naøy ñeå taûi döõ lieäu 16 bit 1000H vaøo con troû döõ lieäu. Leänh thöù ba duøng ñòa chæ giaùn tieáp ñeå di chuyeån döõ lieäu trong A (55H) ñeán RAM ngoaøi ôû ñòa chæ ñöôïc chöùa trong DPTR (1000H) c)Caùc thanh ghi port xuaát nhaäp: Caùc port cuûa 8051/8031 bao goàm Port 0 ôû ñòa chæ 80H, Port 1 ôû ñòa chæ 90 H, Port 2 ôû ñòa chæ A0H vaø Port 3 ôû ñòa chæ B0H. Taát caû caùc Port ñeàu ñöôïc ñòa chæ hoùa töøng bit. Ñieàu ñoù cung caáp moät khaû naêng giao tieáp thuaän lôïi. d)Caùc thanh ghi timer: 8051/8031 chöùa 2 boä ñònh thôøi ñeám 16 bit ñöôïc duøng trong vieäc ñònh thôøi hoaëc ñeám söï kieän. Timer 0 ôû ñòa chæ 8AH (TL0:byte thaáp) vaø 8CH (TH0:byte cao).Timer 1 ôû ñòa chæ 8BH (TL1:byte thaáp) vaø 8DH (TH1: byte cao). vieäc vaän haønh timer ñöôïc set bôûi thanh ghi Timer Mode (TMOD) ôû ñòa chæ 89H vaø thanh ghi ñieàu khieån timer (TCON) ôû ñòa chæ 88H. Chæ coù TCON ñöôïc ñòa chæ hoùa töøng bit. e)Caùc thanh ghi port noái tieáp: 8051/8031 chöùc moät port noái tieáp treân chip daønh cho vieäc trao ñoåi thoâng tin vôùi caùc thieát bò noái tieáp nhö maùy tính, modem hoaëc cho vieäc giao tieáp vôùi caùc IC khaùc coù giao tieáp noái tieáp (coù boä chuyeån ñoåi A/D, caùc thanh ghi dòch..). Moät thanh ghi goïi laø boä ñeäm döõ lieäu noái tieáp (SBUF) ôû ñòa chæ 99H seõ giöõ caû hai giöõ lieäu truyeàn vaø nhaän. Khi truyeàn döõ lieäu thì ghi leân SBUf, khi nhaän döõ lieäu thì ñoïc SBUF. Caùc mode vaän haønh khaùc nhau ñöôïc laäp trình qua thanh ghi ñieàu khieån port noái tieáp (SCON) (ñöôïc ñòa chæ hoùa töøng bit) ôû ñòa chæ 98H. f)Caùc thanh ghi ngaét: 8051/8031 coù caáu truùc 5 nguoàn ngaét, 2 möùc öu tieân. Caùc ngaét bò caám sau khi reset heä thoáng vaø seõ ñöôïc cho pheùp baèng vieäc ghi thanh ghi cho pheùp ngaét (IE) ôû ñòa chæ 8AH. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit. g)Caùc thanh ghi ñieàu khieån coâng suaát: Thanh ghi ñieàu khieån coâng suaát (PCON) ôû ñòa chæ 87H chöùa nhieàu bit ñieàu khieån. Chuùng ñöôïc toùm taét trong baûng sau: Bit Kyù hieäu YÙ nghóa 7 6 5 4 3 2 1 0 SMOD _ _ _ GF1 GF0 PD IDL Bit naøy lieân quan ñeán toác ñoä baud trong Port noái tieáp Khoâng ñònh nghóa Khoâng ñònh nghóa Khoâng ñònh nghóa Bit côø ña duïng 1 Bit côø ña duïng 0 Giaûm coâng suaát Chuyeån sang cheá ñoä nghæ. BaûngThanh ghi ñieàu khieån coâng suaát (PCON) 3.5. Boä nhôù ngoaøi. Khi duøng boä nhôù ngoaøi, port 0 khoâng coøn laø moät port I/O thuaàn tuùy nöõa. Noù ñöôïc hôïp keânh giöõa bus ñòa chæ (A0-A7) vaø bus döõ lieäu (D0-D7) vôùi tín hieäu ALE ñeå choát byte thaáp cuûa ñòa chæ khi baét ñaàu moãi chu kyø boä nhôù. Port 2 thoâng thöôøng ñöôïc duøng cho byte cao cuûa bus ñòa chæ. Trong nöûa ñaàu cuûa moãi chu kyø boä nhôù, byte thaáp cuûa ñòa chæ ñöôïc caáp trong port 0 vaø ñöôïc choát baèng xung ALE. Moät IC choát 74HC373 (hoaëc töông ñöông) seõ giöõ byte ñòa chæ thaáp trong phaàn coøn laïi cuûa chu kyø boä nhôù. Trong nöûa sau cuûa chu kyø boä nhôù port 0 ñöôïc duøng nhö bus döõ lieäu vaø ñöôïc ñoïc hoaëc ghi tuøy theo leänh. a) Truy xuaát boä nhôù chöông trình ngoaøi: Boä nhôù chöông trình ngoaøi laø moä IC ROM ñöôïc pheùp bôûi tín hieäu PSEn. Hình sau moâ taû caùch noái moät EPROM vaøo 8051/8031: ALE D G Q Port 2 /PSEN /OE A8¸A15 Port 0 D0¸D7 A0¸A7 EPROM 8051 74CH373 Giao tieáp giöõa 8051/8031 vaø EPROM EA Moät chu kyø maùy cuûa 8051/8031 coù 12 chu kyø xung nhòp. Neáu boä dao ñoäng treân chip ñöôïc laùi bôûi moät thaïch anh 12MHz thì chu kyø maùy keùo daøi 1ms. Trong moät chu kyø maùy seõ coù 2 xung ALE vaø 2 byte ñöôïc ñoïc töø boä nhôù chöông trình (neáu leänh hieän haønh laø moät byte thì byte thöù hai seõ ñöôïc loaïi boû). Giaûn ñoà thôøi gian cuûa moät laàn laáy leänh ñöôïc veõ ôû hình sau: Giaûn ñoà thôøi gian ñoïc boä nhôù chöông trình ngoaøi b/ Truy xuaát boä nhôù döõ lieäu ngoaøi: ALE D G Q Port 2 /PSEN /WR A8¸A15 Port 0 D0¸D7 A0¸A7 RAM 8051 74CH373 Giao tieáp giöõa 8051/8031 vaø RAM /OE /WR /RD /CS NC EA Boä nhôù döõ lieäu ngoaøi laø moät boä nhôù RAM ñöôïc cho pheùp ghi/ñoïc baèng caùc tín heäu WR vaø RD (caùc chaân P3.6 vaø P3.7 thay ñoåi chöùc naêng). chæ coù moät caùch truy xuaát boä nhôù döõ lieäu ngoaøi laø vôùi leänh MOVX duøng con troû döõ lieäu (DPTR) 16 bit hoaëc R0 vaø R1 xem nhö thanh ghi ñòa chæ. Keát noái bus ñòa chæ vaø bus döõ lieäu giöõa RAM vaø 8051/8031 cuõng gioáng EPROM vaø do ñoù cuõng coù theå leân ñeán 64 byte boä nhôù RAM. Ngoaøi ra, chaân RD cuûa 8051/8031 ñöôïc noái tôùi chaân cho pheùp xuaát (OE) cuûa RAM vaø chaân WR ñöôïc noái tôùi chaân ghi (WR) cuûa RAM. Giaûn ñoà thôøi gian cho leänh ñoïc boä nhôù döõ lieäu ngoaøi ñöôïc veõ treân hình sau ñoái vôùi leänh MOVX A, @DPTR: Giaûn ñoà thôøi gian cuûa leänh MOVX Giaûn ñoà thôøi gian cho leänh ghi (MOVX @DPTR, A) cuõng töông töï chæ khaùc ñöôøng WR seõ thay vaøo ñöôøng RD vaø döõ lieäu ñöôïc xuaát ra treân port 0 (RD vaãn giöõ möùc cao). 3.6. Leänh reset. 8051/8031 ñöôïc reset baèng caùch giöõ chaân RST ôû möùc cao ít nhaát trong 2 chu kyø maùy vaø traû noù veà muùc thaáp. RST coù theå ñöôïc kích khi caáp ñieän duøng moät maïch R-C. Maïch Reset heä thoáng Traïng thaùi cuûa taát caû caùc thanh ghi cuûa 8051/8031 sau khi reset heä thoáng ñöôïc toùm taét trong baûng sau: Thanh ghi Noäi dung Ñeám chöông trình Tích luõy B PSW SP DPTR Port 0-3 IP IE Caùc thanh ghi ñònh thôøi SCON SBUF PCON(HMOS) PCON(CMOS) 0000H 00H 00H 00H 07H 0000H FFH XXX00000B 0XX00000B 00H 00H 00H 0XXXXXXB 0XXX0000B Baûng Traïng thaùi caùc thanh ghi sau khi reset Quan troïng nhaát trong caùc thanh ghi treân laø thanh ghi ñeám chöông trình, noù ñöôïc ñaët laïi 0000H. Khi RST trôû laïi möùc thaáp, vieäc thi haønh chöông trình luoân baét ñaàu ôû ñòa chæ ñaàu tieân trong boä nhôù trong chöông trình: ñòa chæ 0000H. Noäi dung cuûa RAM treân chip khoâng bò thay ñoåi bôûi leänh reset. II. TAÄP LEÄNH CUÛA 8051/8031. Taäp leänh 8051/8031 coù 255 leänh goàm 139 leänh 1 byte, 92 leänh 2 byte vaø 24 leänh 3 byte. 1. Caùc cheá ñoä ñaùnh ñòa chæ: trong taäp leänh coù 8 cheá ñoä ñaùnh ñòa chæ: a)Thanh ghi ñòa ghi: 8051/8031 coù 4 bank thanh ghi, moãi bank coù 8 thanh ghi ñ1nh soá töø R0 ñeán R7. Taïi moãi thôøi ñieåm chæ coù moät bank thanh ghi ñöôïc tích cöïc. Ñòa chæ thanh ghi Ngoaøi ra, moät soá thanh ghi ñaëc bieät nhö thanh ghi tích luõy ACC,B,DPTR. b)Ñòa chæ tröïc tieáp: Trong cheá ñoä naøy, caùc thanh ghi beân trong 8051/8031 ñöôïc ñaùnh ñòa chæ tröïc tieáp baèng 8 bit ñòa chæ naèm trong byte thöù hai cuûa maõ leänh. Maõ leänh Ñòa chæ tröïc tieáp Ñòa chæ tröïc tieáp c)Ñòa chæ giaùn tieáp: R0 vaø R1 ñöôïc duøng ñeå chöùa ñòa chæ oâ nhôù maø leänh taùc ñoäng ñeán. ngöôøi ta quy öôùc duøng daáu @ tröôùc R0 hoaëc R1. Ñòa chæ giaùn tieáp d)Ñòa chæ töùc thôøi: Ngöôøi ta duøng # tröôùc caùc toaùn haïng töùc thôøi. Caùc toaùn haïng ñoù coù theå laø moät haèng soá, moät kyù soá hay moät bieåu thöùc toaùn hoïc... Maõ leänh Döõlieäu töùc thôøi Ñòa chæ töùc thôøi e)Ñòa chæ töông ñoái: Ñòa chæ töông ñoái ñöôïc duøng trong caùc leänh nhaûy 8051/8031 duøng giaù trò 8 bit coù daáu ñeå coäng theâm vaøo thanh ghi ñeám chöông trình (PC). Taàm nhaûy cuûa leänh naøy trong khoaûng töø –128 ñeán 127 oâ nhôù. Tröôùc khi coäng , thanh ghi PC seõ taêng ñeán ñòa chæ theo sau leänh nhaûy roài tính toaùn ñòa chæ offset caàn thieát ñeå nhaûy ñeán ñòa chæ yeâu caàu. Nhö vaäy ñòa chæ môùi laø ñòa chæ töông ñoái so vôùi leänh keá tieáp chöù khoâng phaûi laø baûn thaân leänh nhaûy. Thöôøng leänh naøy coù lieân quan ñeán nhaõn ñöôïc ñònh nghóa tröôùc. Ñòa chæ töông ñoái f)Ñòa chæ tuyeät ñoái: Ñòa chæ tuyeät ñoái chæ duøng trong caùc leänh ACALL vaø JIMP. Caùc leänh 2 byte naøy duøng ñeå reõ nhaùnh vaøo moät trang 2 Kbyte cuûa boä nhôù tröông trình baèng caùch caáp 11 bit ñòa chæ thaáp (A0-A10) ñeå xaùc ñònh ñòa chæ ñích trong trang maõ. Coøn 5 bit cao cuûa ñòa chæ ñích (A11-A15) chính laø 5 bit cao hieän haønh trong thanh ghi ñeám chöông trình. Vì vaäy ñòa chæ cuûa leänh theo sau leänh reõ nhaùnh vaø ñòa chæ ñích cuûa leänh reõ nhaùnh vaø ñòa chæ ñích cuûa leänh reõ nhaùnh caàn phaûi cuøng trang maõ 2 Kbyte (coù cuøng 5 bit ñòa chæ cao). A15 A11 A10 A0 Xaùc ñònh trang maõ xaùc ñònh ñòa chæ trong trang maõ Ñòa chæ tuyeät ñoái g)Ñòa chæ daøi: Ñòa chæ daøi chæ duøng cho leänh LCALL vaø LJIMP. Caùc leänh naøy chieám 3 byte vaø duøng 2 byte sau (byte 2 vaø byte 3) ñeå ñònh ñòa chæ ñích cuûa leänh (16 bit). Öu ñieåm cuûa leänh naøy coù theå söû duïng trong toaøn boä vuøng nhôù 64 Kbyte. Tuy nhieân, leänh naøy chieám nhieàu byte vaø leä thuoäc vaøo vò trí vuøng nhôù. Maõ leänh A15-A8 A7-A0 Ñòa chæ daøi h)Ñòa chæ tham chieáu: Ñòa chæ tham chieáu duøng moät thanh ghi cô baûn (hoaëc thanh ghi ñeám chöông trình PC hoaëc thanh ghi con troû döõ lieäu DPTR) vaø ñòa chæ offset (trong thanh ghi tích luõy A) ñeå taïo ñòa chæ ñöôïc taùc ñoäng cho caùc leänh JMP hoaëc MOVC. Caùc baûng nhaûy vaø baûng tìm kieám deã daøng ñöôïc taïo ra ñeå söû duïng ñòa chæ tham chieáu Ñòa chæ tham chieáu 2. Caùc nhoùm leänh cuûa 8051/8031: Taäp leänh cuûa 8051/8031 ñöôïc chia thaønh 5 nhoùm: Soá hoïc. Luaän lyù. Chuyeån döõ lieäu. Chuyeån ñieàu khieån. a)Nhoùm leänh xöû lyù soá hoïc: ADD A,Rn (1byte,1chu kyø maùy): coäng noäi dung thanh ghi Rn vaøo thanh ghi A ADD A,data (2,1): Coäng tröïc tieáp 1 byte vaøo thanh ghi A. ADD A,@Ri (1,1): Coäng giaùn tieáp noäi dung RAM chöùa taïi ñòa chæ ñöôïc khai baùo trong Ri vaøo thanh ghi A. ADD A,#data (2,1):Coäng döõ lieäu töùc thôøi vaøo A. ADD A,Rn (1,1): Coäng thanh ghi vaø côø nhôù vaøo A. ADD A,data (2,1): Coäng tröïc tieáp byte döõ lieäu vaø côø nhôù vaøo A. ADDC A,@Ri (1,1): Coäng giaùn tieáp noäi dung RAM vaø côø nhôù vaøo A. ADDC A,#data (2,1): Coäng döõ lieäu töùc thôøi vaø côø nhôù vaøo A. SUBB A,Rn (1,1): Tröø noäi dung thanh ghi A cho noäi dung thanh ghi Rn vaø côø nhôù. SUBB A,data (2,1): Tröø tröïc tieáp A cho moät soá vaø côø nhôù. SUBB A,@Ri (1,1): Tröø giaùn tieáp A cho moät soá vaø côø nhôù. SUBB A,#data (2,1): Tröø noäi dung A cho moät soá töùc thôøi vaø côø nhôù. INC A (1,1): Taêng noäi dung thanh ghi A leân 1. INC Rn (1,1): Taêng noäi dung thanh ghi Rn leân 1. INC data (2,1): Taêng döõ lieäu tröïc tieáp leân 1. INC @Ri (1,1): Taêng giaùn tieáp noäi dung vuøng RAM leân 1. DEC A (1,1): Giaûm noäi dung thanh ghi A xuoáng 1. DEC Rn (1,1): Giaûm noäi dung thanh ghi Rn xuoáng 1. DEC data (2,1): Giaûm döõ lieäu tröïc tieáp xuoáng 1 DEC @Ri (1,1): Giaûm giaùn tieáp noäi dung vuøng RAM xuoáng 1. INC DPTR (1,2): Taêng noäi dng con troû döõ lieäu leân 1. MUL AB (1,4): Nhaân noäi dung thanh ghi A vôùi noäi dung thanh ghi B. DIV AB (1,4): Chia noäi dung thanh ghi A cho noäi dung thanh ghi B. 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): AND noäi dung thanh ghi A vôùi noäi dung thanh ghi Rn. ANL A,data (2,1):AND noäi dung thanh ghi A vôùi döõ lieäu tröïc tieáp. ANL A,@Ri (1,1): AND noäi dung thanh ghi A vôùi döõ lieäu giaùn tieáp trong RAM. ANL A,#data (2,1): AND noäi dung thanh ghi vôùi döõ lieäu töùc thôøi. ANL data,A (2,1): AND moät döõ lieäu tröïc tieáp vôùi A. ANL data,#data (3,2): AND moät döõ lieäu tröïc tieáp vôùi A moät döõ lieäu töùc thôøi. ANL C,bit (2,2):AND côø nhôù vôùi 1 bit tröïc tieáp. ANL C,/bit (2,2): AND côø nhôù vôùi buø 1 bit tröïc tieáp. ORL A,Rn (1,1): OR thanh ghi A vôùi thanh ghi Rn. ORL A,data (2,1): OR thanh ghi A vôùi moät döõ lieäu tröïc tieáp. ORL A,@Ri (1,1): OR thanh ghi A vôùi moät döõ lieäu giaùn tieáp. ORL A,#data (2,1):OR thanh ghi A vôùi moät döõ lieäu töùc thôøi. ORL data,A (2,1): OR moät döõ lieäu tröïc tieáp vôùi thanh ghi A. ORL data,#data (3,1):OR moät döõ lieäu tröïc tieáp vôùi moät döõ lieäu töùc thôøi. ORL C,bit (2,2): OR côø nhôù vôùi moät bit tröïc tieáp. ORL C,/bit (2,2): OR côø nhôù vôùi buø cuûa moät bit tröïc tieáp. XRL A,Rn (1,1): XOR thanh ghi A vôùi thanh ghi Rn. XRL A,data (2,1): XOR thanh ghi A vôùi moä döõ lieäu tröïc tieáp. XRL A,@Ri (1,1): XOR thanh ghi A vôùi moät döõ lieäu giaùn tieáp. XRL A,#data (2,1): XOR thanh ghi A vôùi moä döõ lieäu töùc thôøi. XRL data,A (2,1): XOR moät döõ lieäu tröïc tieáp vôùi thanh ghi A. XRL dara,#data (3,1): XOR moät döõ lieäu tröïc tieáp vôùi moät döõ lieäu töùc thôøi. SETB C (1,1): Ñaët côø nhôù. SETB bit (2,1): Ñaët moät bit tröïc tieáp. CLR A (1,1): Xoùa thanh ghi A. CLR C (1,1): Xoùa côø nhôù. CPL A (1,1): Buø noäi dung thanh ghi A. CPL C (1,1): Buø côø nhôù. CPL bit (2,1): Buø moät bit tröïc tieáp. 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 qua côø nhôù. 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 (1,1): Quay traùi noäi dung thanh ghi A 1 nibble (1/2byte). c) Nhoùm leänh chuyeån döõ lieäu: MOV A,Rn (1,1):Chuyeån noäi dung thanh ghi Rn vaøo thanh ghi A. MOV A,data (2,1): Chuyeån döõ lieäu tröïc tieáp vaøo thanh ghi A. MOV A,@Ri (1,1): Chuyeån döõ lieäu giaùn tieáp vaøo thanh ghi A. MOV A,#data (2,1): Chuyeån döõ lieäu töùc thôøi vaøo thanh ghi A. MOV Rn,data (2,2): Chuyeån döõ lieäu tröïc tieáp vaøo thanh ghi Rn. MOV Rn,#data (2,1): Chuyeån döõ lieäu töùc thôøi vaøo thanh ghi Rn. MOV data,A (2,1): Chuyeån noäi dung thanh ghi A vaøo döõ lieäu tröïc tieáp. MOV data,Rn (2,2):Chuyeån noäi dung thanh ghi Rn vaøodöõ lieäu tröïc tieáp. MOV data,@Ri (2,2): Chuyeån moät döõ lieäu giaùn tieáp vaøo döõ lieäu giaùn tieáp. MOV @Ri,A (1,1): Chuyeån noäi dung thanh ghi A vaøo döõ lieäu giaùn tieáp. MOV @Ri,data (2,2): Chuyeån moät döõ lieäu tröïc tieáp vaøo döõ lieäu giaùn tieáp. MOV @Ri,#data (2,1): Chuyeån döõ lieäu töùc thôøi vaøo döõ lieäu giaùn tieáp. MOV DPTR,#data (3,2): Chuyeån moät haèng 16 bit vaøo thanh ghi DPTR. MOV C,bit (2,1): Chuyeån moät bit tröïc tieáp vaøo côø nhôù. MOV bit,C (2,2): Chuyeån côø nhôù vaøo moät bit tröïc tieáp. MOV A,@A+DPTR (1,2): Chuyeån byte boä nhôù chöông trình coù ñòa chæ laø @A+DPRT vaøo thanh ghi A. MOVC A,@A+PC (1,2): Chuyeån byte boä nhôù chöông trình coù ñòa chæ laø @A+PC vaøo thanh ghi A. MOV A,@Ri (1,2): Chuyeån döõ lieäu ngoaøi (8 bit ñòa chæ) vaøo thanh ghi A. MOVX A,@DPTR (1,2): Chuyeån döõ lieäu ngoaøi (16 bit ñòa chæ) vaøo A. MOVX @Ri,A (1,2): Chuyeån noäi dung A ra döõ lieäu ngoaøi (8 bit ñòa chæ). MOVX @DPTR,A (1,2): Chuyeån noäi dung A ra döõ lieäu ngoaøi (16 bit ñòa chæ). PUSH data (2,2) : Chuyeån döõ lieäu tröïc tieáp vaøo ngaên xeáp vaø taêng SP. POP data (2,2) : Chuyeån döõ lieäu tröïc tieáp vaøo ngaên xeáp vaø giaûm SP. XCH A,Rn (1,1) : Trao ñoåi döõ lieäu giöõa thanh ghi Rn v2 thanh ghi A. XCH A,data (2,1) : Trao ñoåi giöõa thanh ghi A vaø moät döõ lieäu tröïc tieáp. 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,@R (1,1) : Trao ñoåi giöõa nibble thaáp (LSN) cuûa thanh ghi A vaø LSN cuûa 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öông 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=0. JNZ rel (2,2): Nhaûy neáu A khoâng baèng 0. JC rel (2,2): Nhaûy neáu côø nhôù ñöôïc ñaët. JNC rel (2,2): Nhaûy neáu côø 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 töông ñoái neáu bit tröïc tieáp 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 töùc thôøi vôùi A vaø 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 noäi dung thanh ghi 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ûn thanh ghi Rn vaø nhaûy neáu khoâng baèng. DJNZ data,rel (3,2): Giaûm döõ lieäu tröïc tieáp vaø nhaûy neáu khoâng baèng. III.HOAÏT ÑOÄNG CUÛA BOÄ ÑÒNH THÔØI (TIMER) 1.Giôùi thieäu: 8051/8031 coù hai timer 16 bit ,moãi timer coù 4 caùch laøm vieäc ngöôøi ta söû duïng caùc timer ñeå : ñònh khoaûng thôøi gian ñeám söï kieän taïo toác ñoä bad cho Port noái tieáp coù saün trong 8051/8031 Truy xuaát caùc timer duøng 6 thanh ghi chöùc naêng ñaëc bieät SFR MUÏC ÑÍCH ÑÒA CHÆ Ñòa chæ hoùa töøng bit TCON TMOD TL0 TL1 TH0 TH1 Ñieàu khieån timer Cheá ñoä timer Byte thaáp cuûa timer 0 Byte thaáp cuûa timer 1 Byte cao cuûa timer 0 Byte cao cuûa timer 1 88H 89H 8AH 8BH 8CH 8DH Coù Khoâng Khoâng Khoâng Khoâng Khoâng 2. Thanh ghi cheá ñoä timer (TMOD): Thanh ghi TMOD chöùa hai nhoùm 4 bit duøng ñeå ñaët cheá ñoä laøm vieäc cho timer 0 vaø timer 1. Bit Bit Teân Timer Moâ taû 7 GATE 1 Bit (môû) coång, khi set thì Timer chaïy khi INT1 ôû möùc cao 6 C/T* 1 Bit choïn cheá ñoä timer/counter 1: ñeám söï kieän 0: ñònh thôøi 5 M1 1 Bit 1 cuûa cheá ñoä 4 M0 1 Bit 0 cuûa cheá ñoä 00: cheá ñoä 0 (timre 13 bit) 01: cheá ñoä 1 (timer 16 bit) 10: cheá ñoä 2 (8 bit töï ñoäng naïp laïi) 11: cheá ñoä 3 (taùch timer) 3 GATE 0 Bit (môû ) coång 2 C/T* 0 Bit choïn timer/counter 1 M1 0 Bít cuûa cheá ñoä 0 M0 0 Bit 0 cuûa cheá ñoä 3. Thanh ghi ñieàu khieån timer (TCON): Thanh ghi TCON chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån cho timer 0 vaø timer 1. BIT Kyù hieäu Ñòa chæbit Moâ taû TCON.7 TF1 8FH Côø baùo traøn timer 1. TCON.6 TR1 8EH Bit ñieàu khieån timer 1 chaïy/ngöng. TCON.5 TF0 8DH Côø baùo traøn timer 0 TCON.4 TR0 8CH Bit ñieàu khieån timer 0 chaïy/ngöng. TCON.3 IE1 8BH Côø caïnh interrupt 1 beân ngoaøi . TCON.2 IT1 8AH Côø kieåu interrupt 1 beân ngoaøi ñaët/xoùa baèng phaàn meàm vôùi interrupt beân ngoaøi taùc ñoäng möùc thaáp/caïnh xuoáng TCON.1 IE0 89H Côø caïnh interrupt 0 beân ngoaøi TCON.0 IT0 88H Côø kieåu interrupt 0 beân ngoaøi 4. Caùc cheá ñoä timer: a)Cheá ñoä 0, cheá ñoä timer 13 bit: Ñeå töông thích vôùi 8048 (coù tröùôùc 8051) Ba bit cao cuûa TLX (TL0 vaø/hoaêc TL1) khoâng duøng TLx THx (5 bit) (8 bit) TFx Xung nhòp timer Côø baùo traøn b)Cheá ñoä 1- cheá ñoä timer 16 bit. Hoaït ñoäng nhö timer 16 bit ñaày ñuû. Côø baùo traøn laø bit TFx trong TCON coù theå ñoïc hoaëc ghi baèng phaàm meàm. MSB cuûa giaù trò trong caùc thanh ghi timer laø bit 7 cuûa THx vaø LBS laø bit 0 cuûa TLx. Caùc thanh ghi timer (Tlx/THx) coù theå ñöôïc ñoïc hoaëc ghi baát cöù luùc naøo baèng phaàm meàm. TLx THx (8 bit) (8 bit) TFx Xung nhòp timer Côø baùo traøn c)Cheá ñoä2- cheá ñoä töï ñoäng naïp laïi 8 bit. TLx hoaït ñoäng nhö moät timer 8 bit, trong khi ñoù THx vaãn giöõ nguyeân giaù trò ñöôïc naïp. Khi soá ñeám traøn töù FFH ñeán 00H, khoâng nhöõng côø timer ñöôïc set maø giaù trò trong THx ñoàng thôøi ñöôïc naïp vaøo TLx. Vieäc ñeám tieáp tuïc töø giaù trò naøy leân ñeán FFH xuoáng 00H vaø naïp laïi... cheá ñoä naøy raát thoâng duïng vì söï traøn timer xaûy ra trong nhöõng khoaûng thôøi gian nhaát ñònh vaø tuaàn hoaøn moät khi ñaõ khôûi ñoäng TMOD vaø THx. Xung nhòp timer Côø baùo traøn Naïp laïi TFx THx (8 bit) TLx (8 bit) d)Cheá ñoä 3- cheá ñoä taùch timer Timer 0 ñöôïc taùch thaønh hai Timer 8 bit vôùi côø baùo traøn laø TF0 vaø TF1. Timer 1 khoâng coøn bò taùc ñoäng bôûi côø traøn TF1.Timer ngöng ôû cheá ñoä 3, nhöng coù ñöôïc khôûi ñoäng baèng caùch chuyeån sang cheá ñoä khaùc. TH0 TF1 Xung nhòp timer Côø baùo traøn Xung nhòp timer TL0 TF0 Côø baùo traøn TL1 TH1 TH1 1/12fosc 5.Nguoàn taïo xung nhòp: Coù hai nguoàn taïo xung nhòp coù theå coù, ñöôcï choïn baèng caùch ghi vaøo bit C/T (counter/timer) trong TMOD khi khôûi ñoäng timer. Moät nguoàn taïo xung nhòp duøng cho ñònh khoaûng thôøi gian, caùi khaùc cho ñeám söï kieän. Clock (T0 or T1) On chip Osillator ¸12 0=Up (Internal Timing) 1=Down (Event Counting) Nguoàn taïo xung nhòp -Ñònh khoaûng thôøi gian (interval timing) Neáu C/T =0 hoaït ñoäng timer lieân tuïc ñöôïc choïn vaø timer ñöôïc duøng cho vieäc ñònh khoaûng thôøi gian. Luùc ñoù, timer laáy xung nhòp töø boä dao ñoäng treân chip. Boä chia 12 ñöôïc theâm vaøo ñeå giaûm taàn soá xung nhòp ñeán giaù trò thích hôïp cho phaàn lôùn caùc öùng duïng. Nhö vaäy thaïch anh 12 MHz seõ cho toác ñoä xung nhòp timer 1 MHz. Baùo traøn timer xaûy ra sau moät soá (coá ñònh) xung nhòp, phuï thuoäc vaøo giaù trò ban ñaàu ñöôïc naïp vaøo caùc thanh ghi timer TLx/THx. Ñeám söï kieän (Event counting) Neáu C/T=1, timer laáy xung nhòp töø nguoàn beân ngoaøi. Trong haàu heát caùc öùng duïng nguoàn beân ngoaøi naøy cung caáp cho timer moät xung kh xaûy ra moät “söï kieän “, timer duøng ñeám söï kieän ñöôïc xaùc ñònh baèng phaàn meàm baèng caùch ñoïc caùc thanh ghi TLx/THx vì giaù trò 16 bit trong caùc thanh ghi naøy taêng theâm 1 cho moãi söï kieän. Nguoàn xung nhòp ngoaøi coù töø thay ñoåi chöùc naêng cuûa caùc chaân port3. Bit 4 cuûa port 3 (P3.4) duøng laøm ngoõ vaøo taïo xung nhòp beân trong timer 0 vaø ñöôïc goïi laø“T0”.Vaø p3.5 hay “T1” laø ngoõ vaøo taïo xung nhòp cho timer1 6.Baét ñaàu döøng vaø ñieàu khieån caùc timer: Phöông phaùp môùi ñôn giaûn nhaát ñeå baét ñaàu (cho chaïy) vaø döøng caùc timer laø duøng caùc bit ñieàu khieån chaïy :TRx trong TCON, TRx bò xoùa sau khi reset heä thoáng. Nhö vaäy, caùc timer theo maëc nhieân laø bò caám (bò döøng). TRx ñöôïc ñaët leân 1 baèng phaàn meàm ñeå cho caùc timer chaïy. Xung nhòp timer TRx 0=leân : timer döøng 1=xuoáng : timer chaïy Caùc thanh ghi timer Ví duï: Cho timer 0 chaïy duøng leänh SET TR0 Cho timer 0 döøng duøng leänh CLR TR0 7.Khôûi ñoäng vaø truy xuaát caùc thanh ghi timer: Thoâng thöôøng caùc thanh ghi ñöôïc khôûi ñoäng moät laàn ôû ñaàu chöông trình ñeå ñaët cheá ñoä laøm vieäc cho ñuùng. Sau ñoù trong thaân chöông trình caùc timer ñöôïc cho chaïy, döøng , caùc bit côø ñöôïc kieåm tra vaø xoùa, caùc thanh ghi timer ñöôïc ñoïc vaø caäp nhaät... theo ñoøi hoûi cuûa caùc öùng duïng. TMOD laø thanh ghi thöù nhaát ñöôïc khôûi ñoäng vì noù ñaët cheá ñoä hoaït ñoäng. Ví duï caùc leänh sau khi khôûi ñoäng timer 1 nhö timer 16 bit (cheá ñoä 1) coù xung nhòp töø boä dao ñoäng treân chíp cho vieäc ñòng khoaûng thôøi gian. MOV TMOD,#00010000B Leänh naøy seõ ñaët M1=0 vaø M0=1 cho cheá ñoä 1, C/T=0 vaø GATE=0 cho xung nhòp noäi vaø xoùa caùc bit cheá ñoä timer 0. Dó nhieân timer thaät söï khoâng baét ñaàu ñònh thôøi cho ñeán khi bit ñieàu khieån chaïy TR1 ñöôïc ñaët leân 1. Neáu caàn soá ñeám ban ñaàu, caùc thanh ghi timer TL1/TH1 cuõng phaûi ñöôïc khôûi ñoäng. Khi timer traøn ,caàn döøng timer vaø xoùa côø baùo traøn trong phaàn meàm baèng leänh sau: CLR TRx CLR TFx 8. Caùc khoaûng ngaén vaø caùc khoaûng daøi : Khoaûng thôøi gian ngaén nhaát coù theå coù bò giôùi haïn khoâng chæ bôûi taàn soá xung nhòp cuûa timer maø coøn bôûi phaàn meàm. Do aûnh höôûng cuûa thôøi khoaûng thöïc hieän moät leänh. Leäng ngaén nhaát 8051/8031 laø moät chu kyø maùy hay 1ms. Sau ñaây laø baûng toùm taét caùc kyõ thuaät ñeå taïo nhöõng khoaûng thôøi gian coù chieàu daøi khaùc nhau (vôùi giaû söû xung nhòp cho 8051/8031 coù taàn soá 12 MHz). Khoaûng thôøi gian toái ña Kyõ thuaät »10 Baèng phaàn meàm 256 Timer 8 bit töï ñoäng naïp laïi 65535 Timer 16 bit Khoâng giôùi haïn Timer 16 bit coäng vôùi caùc voøng laëp phaàn meàm. IV. HOAÏT ÑOÄNG CUÛA PORT NOÁI TIEÁP. 1. Giôùi thieäu: 8051/8031 coù moät port noái tieáp trong chip coù theå hoaït ñoäng ôû nhieàu cheá ñoä khaùc treân moät daõy taàn soá roäng. Chöùc naêng chuû yeáu cuûa moät port noái tieáp laø thöïc hieän chuyeån ñoåi song song sang noái tieáp vôùi döõ lieäu xuaát vaø chuyeån ñoài noái tieáp sang song song vôùi döõ lieäu nhaäp. Truy xuaát phaàn cöùng ñeán port noái tieáp qua caùc chaân TXD(P3.0)vaø RXD(P3.1).Hai thanh ghi chöùc naêng ñaëc bieät cho pheùp phaàn meàm truy xuaát ñeán port noái tieáp laø : SBUF(99H) vaø SCON(98H).Ñaây laø hai thanh ghi rieâng bieät thanh ghi chæ ghi ñeå phaùt vaø thanh ghi chæ ñoïc ñeå thu. RXD (P3.0) A SBUF A SBUF TXD (P3.1) Thanh ghi ñieàu khieån port noái tieáp (SCON) ôû ñòa chæ 98H laø thanh ghi coù ñòa chæ bit chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån. Caùc bit ñieàu khieån ñaët cheá ñoä hoaït ñoäng cho port noái tieáp, vaø caùc bit traïng thaùi baùo caùo keát thuùc vieäc phaùt hoaëc thu kyù töï. Caùc bit traïng thaùi coù theå ñöôïc kieåm tra baèng phaàn meàm hoaëc coù theå ñöôïc laäp trình ñeå taïo ngaét. Taàn soá laøm vieäc cuûa port noái tieáp coøn goïi laø toác ñoä baund coù theå coá ñònh (laáy töø boä giao ñoäng cuûa chip). Neáu söû duïng toác ñoä baud thay ñoåi, timer 1 seõ cung caáp xung nhòp toác ñoä baud vaø phaûi ñöôïc laäp trình. 2. Thanh ghi ñieàu khieån port noái tieáp: Cheá ñoä hoaït ñoäng cuûa port noái tieáp ñöôïc ñaët baèng caùch ghi vaøo thanh ghi cheá ñoä port noái tieáp (SCON) ôû ñòa chæ 98H. Sau ñaây caùc baûng toùm taét thanh ghi SCON vaø caùc cheá ñoä cuûa port noái tieáp : Bit Kyù hieäu Ñòa chæ Moâ taû SCON.7 SM0 9FH Bit 0 cuûa cheá ñoä Port noái tieáp. SCON.6 SM1 9EH Bit 1 cuûa cheá ñoä Port noái tieáp. SCON.5 SM2 9DH SM2=0:hoaït ñoäng bình thöôøng. SM2=1:cheá ñoä truyeàng thoâng ña xöû lyù. SCON.4 REN 9CH Cho pheùp thu khi ñöôïc set leân 1. SCON.3 TB8 9BH Bit phaùt thöù 9 trong cheá ñoä phaùt 9 bit. SCON.2 RB8 9AH Bit thu thöù 9 trong cheá ñoä thu 9 bit. SCON.1 TI 99H Côø ngaét phaùt,phaùt xong 1 byte thì TI=1. SCON.0 RI9FH 98H Côø ngaét thu, thu xong 1 byte thì RI=1. Baûng sau moâ taû caùc cheá ñoä hoaït ñoäng cuûa port noái tieáp. SM0 SM1 Cheá ñoä Moâ taû Toác ñoä baud 0 0 0 Thanh ghi dòch Co61 ñònh (fOSC/12) 0 1 1 UART 8 bit Thay ñoåi (baèng timer 1) 1 0 2 UART 9 bit Coá ñònh 1 1 3 UART 9 bit Thay ñoåi (baèng timer 1) Tröôùc khi söû duïng port noái tieáp, phaûi khôûi ñoäng SCON cho ñuùng cheá ñoä. Ví duï ,leänh sau: MOV SCON,#01010010B Khôûi ñoäng port noái tieáp cho cheá ñoä 1 (SM0/SM1=0/1), cho pheùp boä thu (REN=1) vaø ñaët côø ngaét phaùt (TP=1) ñeå chæ boä phaùt saün saøng hoaït ñoäng. 3.Khôûi ñoäng vaø truy xuaát caùc thanh ghi coång noái tieáp: a)Cho pheùp thu: Bit cho pheùp boä thu (REN = Receiver Enable) trong SCON phaûi ñöôïc ñaët leân 1 baèng phaàn meàm ñeå cho pheùp thu caùc kyù töï. Thoâng thöôøng thöïc hieän vieäc naøy ôû ñaàu chöông trình khi khôûi ñoäng coång noái tieáp, timer...Coù theå thöïc hieän vieäc naøy theo hai caùch. Leänh : SETB REN Seõ ñaët REN leân 1, hoaëc leänh : MOV SCON,#xxx1xxxxB Seõ ñaët REN 1 vaø ñaëc hoaëc xoùa ñi caùc bit khaùc treân SCON khi caàn (caùc x phaûi laø 0 hoaëc 2 ñeå ñaëc cheá ñoä laøm vieäc). b)Bit döõ lieäu thöù 9: Bit döõ lieäu thöù 9 caàn phaùt trong caùc cheá ñoä 2 vaø 3, phaûi ñöôïc naïp vaøo trong TB8 baèng phaàn meàm. Bit döõ lieäu thöù 9 thu ñöôïc ñaët ôû RB8. Phaàn meàm coù theå caàn hoaëc khoâng caàn bit döõ lieäu thöù 9, phuï thuoäc vaøo caùc ñaëc tính kyõ thuaät cuûa thieát bò noái tieáp söû duïng (bit döõ lieäu thöù 9 cuõng ñoùng vai moät troø quan troïng trong truyeàn thoâng ña xöû lyù). c)Theâm 1 bit parity: Thöôøng söû duïng bit döõ lieäu thöù 9 ñeå theâm parity vaøo kyù töï. Nhö ñaõ xeùt ôû caùc chöông tröôùc, pit P trong töø traïng thaùi chöông trình (PSW) ñöôïc ñaët leân 1 hoaëc bò xoùa bôûi chu kyø maùy ñeå thieát laäp kieåm tra chaün vôùi 8 bit trong thanh tích luõy. d)Caùc côø ngaét: Hai côø ngaét thu vaø phaùt (RI vaø TI) trong SCON ñoùng moät vai troø quan troïng truyeàn thoâng noái tieáp duøng 8051/8031. Caû hai bit ñöôïc ñaët leân 1 baèng phaàn cöùng, nhöng phaûi ñöôïc xoùa baèng phaàn meàm. 4 . Toác ñoä baud port noái tieáp: SMOD=0 ¸32 ¸16 Dao ñoäng treân chip SMOD=1 Xung nhòp toác ñoä baud Dao ñoäng treân chip Xung nhòp toác ñoä baud ¸12 ¸64 ¸32 Dao ñoäng treân chip Xung nhòp toác ñoä baud SMOD=0 SMOD=1 a.Cheá ñoä 2 a.Cheá ñoä 1 vaø 3 a.Cheá ñoä 0 Caùc nguoàn taïo xung nhòp cho port noái tieáp. Nhö ñaõ noùi, toác ñoä baud coá ñònh ôû caùc cheá ñoä 0 vaø 2. Trong cheá ñoä 0 noù luoân luoân laø taàn soá dao ñoäng treân chip ñöôïc chia cho 12 . Thoâng thöôøng thaïch anh aán ñònh taàn soá dao ñoäng treân chip cuûa 8051/8031 nhöng cuõng coù theå söû duïng nguoàn xung nhòp khaùc. Giaû söû vôùi taàn soá dao ñoäng danh ñònh laø 12 MHz, tìm toác ñoä baud cheá ñoä 0 laø 1 MHz. Maëc nhieân, sau khi reset heä thoáng, toác ñoä baud cheá ñoä laø 2 taàn soá boä dao ñoäng chia cho 64. Toác ñoä baud cuõng aûnh höôûng bôûi 1 bit trong thanh ghi ñieàu khieån nguoàn cung caáp (PCON). Bit 7 cuûa PCON laø bit SMOD. Ñaët bit sMOD leân moät laøm gaáp ñoâi toác ñoä baud trong cheá ñoä 1,2 vaø 3. Trong cheá ñoä 2, toác ñoä baud coù theå bò gaáp ñoâi töø giaù trò maëc nhieân cuûa 1/64 taàn soá dao ñoäng (SMOD=0) ñeán 1/32 taàn soá dao ñoäng (SMOD=1) Vì PCON khoâng ñöôïc ñònh ñòa chæ theo bit, neân ñeå ñaët bit SMOD leân 1 caàn phaûi theo caùc leänh sau: MOV A,PCON ;laáy giaù trò hieän thôøi cuûa PCON SETB ACC.7 ;ñaët bit 7 (SMOD) leân 1 MOV PCON,A ;ghi giaù trò ngöôïc veà PCON Caùc toác ñoä baud trong caùc cheá ñoä 1 vaø 3 ñöôïc xaùc ñònh baèng toác ñoä traøn cuûa timer 1. Vì timer hoaït ñoäng ôû taàn soá töông ñoái cao, traøn timer ñöôïc chia theâm cho 32 (hay 16 neáu SMOD=1) tröôùc khi cung caáp xung nhòp toác ñoä baud cho port noái tieáp. V. HOAÏT ÑOÄNG NGAÉT (INTERRUPT): 1.Giôùi thieäu: Ngaét laø hoaït ñoäng ngöøng taïm thôøi moät chöông trình naøy ñeå tji haønh moät chöông trình khaùc. Caùc ngaét coù moät vai troø quan troïng trong thieát keá vaø khaû naêng thöïc thi cuûa vi ñieàu khieån. Chuùng cho pheùp heä thoán ñaùp öùng khoâng cuøng luùc tôùi moät coâng vieäc vaø giaûi quyeát moät coâng vieäc ñoù trong khi moät chöông trình khaùc ñang thöïc thi. Moät heä thoáng ñöôïc ñieàu khieån baèng ngaét cho aûo giaùc laø laøm nhieàu vieäc ñoàng thôøi. Dó nhieân CPU moãi laàn khoâng theå thöïc thi moät chöông trình ñeå thöïc thi moät chöông trình khaùc, roài quay veà chöông trình ñaàu. khi coù yeâu caàu ngaét. Chöông trình giaûi quyeát ngaét ñöôïc goïi laû chöông trình phuïc vuï ngaét (ISR : Interrupt Sevice Reutine). 2. Toå chöùc ngaét: Ôû 8051 coù 5 nguoàn ngaét: 2 ngaét ngoaøi 2 ngaét töø timer. 1 ngaét port noái tieáp. Taát caû caùc ngaét seõ khoâng ñöôïc ñaët sau khi reset heä thoáng vaø cho pheùp ngaét rieâng reõ bôûi phaàn meàm. a)Cho pheùp vaø khoâng cho pheùp ngaét: Moãi nguoàn ngaét ñöôïc cho pheùp hoaëc khoâng cho pheùp töøng ngaét moät qua thanh ghi chöùc naêng ñaët bieät coá ñònh ñòa chæ bit IE (Interrupt Enable : cho pheùp ngaét) ôû ñòa chæ A8H. Cuõng nhö caùc bit cho pheùp moãi nguoàn ngaét, coù moät bit cho pheùp hoaëc caám toaøn boä ñöôïc xoùa ñeå caám taát caû caùc ngaét hoaëc ñöôïc ñaët leân 1 ñeå cho pheùp taát caû caùc ngaét. Bit Kyù hieäu Ñòa chæ bit Moâ taû (1=cho pheùp,0=caám) IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE.1 IE.0 EA EA ET5 E5 ET1 EX1 ET0 EX0 AFH AEH ADH ACH ABH AAH A9H A8H Cho pheùp hoaëc caám toaøn boä Khoâng ñöôïc ñònh nghóa Cho pheùp ngaét töø timer 2 (8052) Cho pheùp ngaét Port noái tieáp Cho pheùp ngaét töø timer 1 Cho pheùp ngaét ngoaøi 1 Cho pheùp ngaét töø timer 0 Cho pheùp ngaét ngoaøi 0 b)Öu tieân ngaét: Moãi nguoàn ngaét ñuôïc laäp trình rieâng vaøo moät trong hai möùc öu tieân qua thanh ghi chöùc naêng ñaëc bieät ñöôïc ñòa chæ bit Ip (Interrupt priority : öu tieân ngaét) ôû ñòa chæ B8H. Bit Kyù hieäu Ñòa chæ bit Moâ taû (1=möùc cao hôn,0=möùc thaáp) IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP.1 IP.0 _ _ PT2 PS PT1 PX1 PT0 PX0 BFH BEH BDH BCH BBH BAH B9H B8H Khoâng ñöôïc ñònh nghóa Khoâng ñöôïc ñònh nghóa Öu tieân cho ngaét töø timer 2 (8052) Öu tieân cho ngaét Port noái tieáp Öu tieân cho ngaét töø timer 1 Öu tieân cho ngaét ngoaøi Öu tieân cho ngaét töø timer 0 Öu tieân cho ngaét ngoaøi 0 Caùc ngaét öu tieân ñöôïc xoùa sau khi reset heä thoáng ñeå ñaë ttaát caû caùc ngaét ôû möùc öu tieân thaáp hôn. 3. Xöû lyù ngaét: Khi coù moät ngaén xaåy ra vaø ñöôïc CPU chaáp nhaän, chöông trình chính bò ngaét quaõng. Nhöõng hoaït ñoäng sau xaåy ra: Thi haønh hoaøn chænh leänh ñang hieän haønh. Caùc DC vaøo ngaét xeáp. Traïng thaùi ngaét hieän haønh ñöôïc caát beân trong. Caùc ngaét ñöôïc chaën taïi möùc cuûa ngaét. Nap vaøp DC ñòa chæ Vector cuûa ISR. ISR thöïc thi. ISR thöïc thi vaø ñaùp öùng ngaét. ISR hoaøn taát baèng leänh RET1. Ñieàu naøy laøm laáy laïi giaù trò cuõ cuûa PC töø ngaên xeáp vaø laáy laïi traïng thaùi ngaét cuõ. Chöông trình laïi tieáp tuïc thi haønh taïi nôi maø noù döøng. Caùc Vector ngaét. Khi chaáp nhaän ngaét, giaù trò ñöôïc naïp vaøo PC ñöôïc goïi laø Vector ngaét. Noù laø ñòa chæ baét ñaàu cuûa ISR cho nguoàn taïo ngaét. Caùc Vector ngaét ñöôïc cho ôû baûng sau: Ngaét Côø Ñòa chæ Vector Reset heä thoáng Beân ngoaøi 0 Timer 0 Beân ngoaøi 1 Timer 1 Port noái tieáp RST IE0 TF0 IE1 TF1 TI hoaëc RI 0000H 0003H 000BH 0013H 001BH 0023H Vector reset heä thoáng (RST ôû ñòa chæ 0000H) noù gioáng nhö moät ngaét. Noù ngaét chöông trình chính vaø taûi vaøo PC moät giaù trò môùi. Khi chæ ñeán moät ngaét “côø gaây ngaét töï ñoäng bò xoùa bôûi phaàn cöùng, tröø ra R1, T1 cho caùc ngaét coång noái tieáp. Vì coù hai nguoàn coù theå coù cho ngaét naøy,khoâng thöïc teá ñeå CPU xoùa côø ngaét naøy. Caùc bit phaûi ñöôïc kieåm tra trong ISR ñeå xaùc ñònh nguoàn ngaét vaø côø taïo ngaét seõ ñöôïc xoùa baèng phaàn meàm. 4. Caùc ngaét cuûa 8051: a)Caùc ngaét timer: Caùc ngaét timer coù ñòa chæ Vector ngaét laø 000BH (timer 0) vaø 001BH (timer 1). Ngaét timer xaåy ra khi caùc thanh ghi timer (TLx ITHx) traøn vaø set côø baùo traøn (TFx) leân 1. Caùc côø timer (TFx) khoâng bò xoùa baèng phaàn meàm. Khi cho pheùp caùc ngaét, TFx töï ñoäng bò xoùa baèng phaàn cöùng khi CPU chuyeån ñeán ngaét. b)Caùc ngaét coång noái tieáp: Ngaét coång noái tieáp xaåy ra khi hoaëc côø phaùt (TI) hoaëc côø ngaét thu (RI) ñöôïc ñaët leân 1. Ngaét phaùt xaåy ra khi moät kyù töï ñaõ ñöôïc nhaän xong vaø ñang ñôïi trong SBUP ñeå ñöôïc ñoïc. Caùc ngaét coång noái tieáp khaùc vôùi caùc ngaét timer. Côø gaây ra ngaét coång noái tieáp khoâng bò xoùa baèng phaàn cöùng khi CPU chuyeån tôùi ngaét. Do coù hai nguoàn ngaét coång noái tieáp TI vaø RI. Nguoàn ngaét phaûi ñöôïc xaùc ñònh trong ISR vaø côø taïo ngaét seõ ñöôïc xoùa baèng phaàn meàm. Caùc ngaét timer côø ngaét côø ngaét ñöôïc xoùa baèng phaàn cöùng khi CPU höôùng tôùi ISR. c)Caùc ngaét ngoaøi: Caùc ngaét ngoaøi xaåy ra khi coù moät möùc thaáp hoaëc caïnh xuoáng treân chaân INT0 hoaëc INT1 cuûa vi ñieàu khieån. Ñaây laø chöùc naêng chuyeån ñoåi cuûa caùc bit Port 3.(Port 3.2 vaø Port 3.3). Caùc côø taïo ngaét naøy laø caùc bit IE0 vaù IE1 trong TCON. Khi quyeàn ñieàu khieån ñaõ chuyeån ñeán ISR, côø taïo ra ngaét chæ ñöôïc xoùa neáu ngaét ñöôïc tích cöïc baèng caïnh xuoáng. Neáu ngaét ñöôïc tích cöïc theo möùc, thì nguoàn yeâu caàu ngaét beân ngoaøi seõ ñieàu khieån möùc cuûa côø thay cho phaàn cöùng. Söï löïa choïn ngaét tích cöïc möùc thaáp hay tích cöïc caïnh xuoáng ñöôïc laäp trình qua caùc bit IT0 vaø IT1 trong TCON. Neáu IT1 = 0, ngaét ngoaøi 1 ñöôïc taùc ñoäng baèng muùc thaáp ôû chaân IT1. Neáu IT1 = 1 ngaét ngoaøi 1 seõ ñöôïc taùc ñoäng baèng caïnh xuoáng. trong cheá ñoä naøy, neáu caùc maãu lieân tieáp treân chaân INT1 chæ möùc cao trong moät chu kyø vaø chæ möùc thaáp trong chu kyø keá, côø yeâu caàu ngaét IE1 trong TCON ñöôïc ñaët leân 1, roài bit IE1Ù yeâu caàu ngaét. Neáu ngaét ngoaøi ñöôïc taùc ñoäng baèng caïnh xuoáng thì nguoàn beân ngoaøi phaûi giöõ chaân taùc ñoäng ôû möùc cao toái thieåu moät chu kyø vaø giöõ noù ôû möùc thaáp theâm moät chu kyø nöõa ñeå ñaûm baûo phaùt hieän ñöôïc caïnh xuoáng. Neáu ngaét ngoaøi ñöôïc taùc ñoäng theo möùc thì nguoàn beân ngoaøi phaûi giöõ tín hieäu yeâu caàu taùc ñoäng cho ñeán khi ngaét ñöôïc yeâu caàu ñöôïc thaät söï taïo ra vaø khoâng taùc ñoäng yeâu caàu ngaét tröôùc khi ISR ñöôïc hoaøn taát . Neáu khoâng moät ngaét khaùc seõ ñöôïc laëp laïi. CHÖÔNG IV : GIÔÙI THIEÄU IC AT8952 I.ÑAËC ÑIEÅM VEÀ PHAÀN TOÅ CHÖÙC BOÄ NHÔÙ +IC 8952 (cuøng hoï vôùi 8052 )chöùc naêng gioáng nhö 8031/8051 nhöng taêng cöôøng theâm hai chöùc naêng laø: + Ram coù 128 byte töø ñòa chæ 80H ñeán FFH vì theá noù khoâng bò nhaàm laãn ñòa chæ vôùi thanh ghi SFR (khi coù cuøng ñòa chæ gioáng nhau ). Theâm 1/8 K ram chæ ñeå söû duïng cho ñòa chæ tröïc tieáp ,ví duï nhö caâu leänh MOV A,0F0H +Ôû IC 8031/8051 ñaây laø leänh chuyeån noäi dung cuûa thanh ghi B vaøo thanh ghi A . MOV R0,# 0F0H MOV A,@R0 Nhöng ôû 8952 vieäc ñoïc vaøo thanh ghi A noäi dung cuûa ñòa chæ ram noäi F0H nhöng khoâng ñöôïc ñònh nghóa ôû 8031/8051 . Söï saép xeáp boä nhôù trong cuûa 8952 notice minh hoaï nhö hình veõ Vuøng ñòa chæ coù theå truy caäp giaùn tieáp hay tröïc tieáp Chæ daønh rieâmg cho vieäc truy caäp ñòa chæ tröïc tieáp Vuøng thanh ghi chöùc naêng ñaëc bieät 80H 00H 7FH 128 byte thaáp Vuøng ñòa chæ chæ daønh rieâng cho cho vieäc truy caäp ñòa chæ giaùn tieáp FFH 80H 128 byte cao FFH Ngoaøi ra 8952 coøn coù moät caûi tieán nöõa laø coù theâm moät timer 16 bit ñoù laø timer 2 .Timer 2 ñöôïc laäp trình vôùi 5 thanh ghi chöùc naêng ñaëc bieät +2 thanh ghi timer TL2 ,TH2 +1 thanh ghi timer ñieàu khieån RCAP2L,RCAP2H +vaø 2 thanh ghi cheá ñoä ghi choát RXAP2L,RCAP2H mode cuûa timer 2 ñöôïc ñaët bôûi thanh ghi ñieàu khieån T2CON ,gioáng timer 0 vaø timer 1 ,timer 2 coù theå hoaït ñoäng nhö moät timer noäi hay laø moät boä ñeám .Nguoàn xung nhòp laø xung noäi ,neáu xung ngoaïi thì kích port P1.0 .Ta coù theå choïn xung kích noäi hay ngoaïi baèng caùch taùc ñoäng vaøo bit C/T2 treân T2CON cuõng nhö taùc ñoäng ñeán bit C/T treân TCON ñoái vôùi timer 0 ,timer1 .Coù ba mode hoaït ñoäng : cheá ñoä töï ñoäng naïp laïi ,cheá ñoä choát vaø cheá ñoä toác ñoä baud BIT KYÙ HIEÄU ÑÒA CHÆ GIAÛI THÍCH T2CON.7 TF2 CFH Côø baùo traøn .khoâng aûnh höôûng khi TCLK hay RCLK ñang ôû möùc 1 T2CON.6 EXF2 CEH Côø ngoaøi ,ñöôïc taùc ñoäng khi choát hay naïp laïi giaù trò coù chuyeån töø möùc 1 xuoáng möùc 0 treân T2EX vaø EXEN2 ôû möùc 1 .khi coù ngaét EXF2 ôû möùc 1 ñeå phuïc vuï chöông trình con vaø xoaù baèng phaàn meàm T2CON.5 RCLK CDH Nhaän xung clock , khi taùc ñoäng timer 2 cho port noái tieáp nhaän toác ñoä baud ,timer 1 chuyeån toùc ñoä baud T2CON.4 TCLK CCH Chuyeån xung clock .khi taùc ñoäng timer 2 cho chuyeån toác ñoä baud ,timer 1 nhaän toác ñoä baud T2CON.3 EXEN2 CBH Cho pheùp timer 2 ngoaøi ,khi taùc ñoäng cho pheùp choát hay naïp laïi treân T2EX khi coù söï chuyeån töø möùc 1 ñeán möùc 0 T2CON.2 TR2 CAH Cho chaïy timer 2 ,ñöôïc ñaët hay xoaù baèng phaàn meàm T2CON.1 C/T2 C9H Neáu bit=1 thì boä ñeám Neáu bit =0 thì timer noäi T2CON.0 CP/RL2C C8H cho pheùp hoaït ñoäng ôû cheá ñoä choát hay cheá ñoä naïp laïi . khi ñöôïc ñaët ,neáu EXEN2 =1 ,coù söï chuyeån möùc töø 1 xuoáng 0 treân T2EX thì cheá ñoä choát khi xoaù ,neáu EXEN2 =1 , cheá ñoä naïp laïi treân côø baùo traøn cuûa timer neáu RCLK hay TCLK =1 thì bit naøy khoâng bò aûnh höôûng II.CAÙC MODE HOAÏT ÑOÄNG 1.Cheá Ñoä Töï Ñoäng Naïp Laïi Cheá ñoä töï ñoâïng naïp laïi/ choát treân bit T2CON choïn löïa hai mode ñaàu tieân . Khi CP/RL2 =0 thì timer 2 ñang ôû cheá ñoä töï ñoäng naïp laïi vôùi TL2/TH2 nhö laø thanh ghi timer vaø hai thanh ghi RCAP2L ,RCAP2H ñang giöõ traïng thaùi naïp laïi . Khoâng gioáng nhö cheá ñoä naïp laïi ñoái vôùi timer 0 hay timer 1 ,timer2 luoân ôû cheá ñoä 16 bit thaäm chí khi ôû mode töï ñoäng naïp laïi Söï naïp laïi coù söï chuyeån ñoåi FFFFH ñeán 0000H treân TL2 /TH2 khi côø TF2 ñöôïc ñaët . Traïng thaùi naøy ñöôïc xaùc ñònh bôûi phaàn meàm hay coù chöông trình phuïc vuï ngaét ,noùi caùch khaùc TF2 phaûi ñöôïc xoùa baèng phaàn meàm tröôùc khi ñöôïc ñaët leân möùc tích cöïc On-chip osc :12 TL2 TH2 TF2 RRCAP2L RCAP2H EXF2 C/T2 TR2 EXEN2 T2EX P1.1 T2(P1.0) 112MHz 0=UP 1=DÔWN 0=UP 1=DÔWN Ôû cheá ñoä öu tieân , khi ñang ñaët EXEN2 trong T2CON vieäc naïp laïi chæ ñöôïc xaûy ra khi coù söï chuyeån ñoåi töø möùc 1 ñeán 0 cuûa tín hieäu ñeán chaân T2EX ,vieäc naøy ñöôïc thöïc hieän baèng caùch thay ñoåi chaân P1.1cuûa IC 8952 .Vieäc chuyeån ñoåi töø möùc 1 ñeán möùc 0 treân T2EX cuõng laø xeùt bit côø môùi treân timer 2 .EXF2 ñöôïc kieåm tra baèng phaàn meàm hay coù phuïc vuï ngaét , EXF2 .Nhö côø baùo traøn TF2,EXF2 ñöôïc kieåm tra baèng phaàn meàm hay coù phuïc vuï ngaét. EXF2 phaûi ñöôïc xoaù baèng phaàn meàm cheá ñoä töï ñoäng naïp laïi ôû timer2 ñöôïc minh hoïa nhö hình treân: 2.Cheá Ñoä Choát Khi CP/ RL2=1 ,cheá ñoä choát bò thay ñoåi .Timer 2 hoïat ñoäng nhö moät timer 16 bit vaø côø baùo traøn TF2 leân möùc tích cöïc khi coù söï chuyeån ñoåi töø FFFFH xuoáng 0000H treân TL2/TH2, côø TF2 ñöôïc kieåm tra baèng phaàn meàm hay coù phuïc vuï ngaét Khi muoán cheá ñoä choát ,thì EXEN2 phaûi ñöôïc ñaët .Neáu EXEN2 =1 , T2EX coù söï chuyeån ñoåi töø möùc 1 xuoáng 0 thì vieäc ghi giaù trò vaøo trong TL2/TH2 baèng caùch ghi toác ñoä vaøo RCAP2L vaø RCAP2H.Côø EXF2 ñöôïc kieåm tra baèng phaàn meàm hay coù phuïc vuï ngaét Cheá ñoä choát ñöôïc minh hoaï nhö hình veõ On-chip osc :12 TL2 TH2 TF2 RRCAP2L RCAP2H EXF2 C/T2 TR2 EXEN2 T2EX T2(P1.0) 112MHz 0=UP 1=DÔWN 0=UP 1=DÔWN Capture Chöông V: MÔÛ ROÄNG PORT DUØNG PII 8255 I CAÁU TRUÙC PHAÀN CÖÙNG 8255A: 8255A laø IC ngoaïi vi ñöôïc cheá taïo theo coâng ngheä LSI duøng ñeå giao tieáp song song giöõa Microprocrssor vaø thieát bò ñieàu khieån beân ngoaøi. Sô ñoà chaân vaø sô ñoà logic cuûa 8255 Teân caùc chaân 8255A: D7¸D0 : Data bus (Bi-Direction). RESET Reset input. CS\ Chip : select RD\ Read : input WR\ Write : input A0A1 : Prot Address PA7¸PA0 : Port A PB7¸PB0 : Port B PC7¸PC0 : Port C 8255A giao tieáp vôùi Microprocrssor thoâng qua 3 bus : bus döõ lieäu bit D7¸D0 bus ñòa chæ A1A0, bus ñieáu khieån RD\,WR\.SC\.Reset. Maõ leänh, thoâng tin traïng thaùi vaø döõ lieäu ñeàu ñöôï truyeàn treân 8 ñöôøng döõ lieäu D7¸D0. Microprocrssor gôûi döõ lieäu ñeán 8255A hoaëc Microprocrssor ñoïc döõ lieäu töø 8255A tuøy thuoäc vaøo leänh dieàu khieån. Caùc ñöôøng tín hieäu RD\,WR\ cuûa 8255A ñöôïc keát noái vôùi caùc ñöôøng RD\, WR\ cuûa Microprocrssor. Tín hieäu Reset duøng ñeå khôûi ñoäng 8255A khi caáp ñieän, khi bò Reset caùc thanh ghi beân trong cuûa 8255A ñeàu bò xoùa vaø 8255A ôû traïng thaùi saün saøng laøm vieäc. Khi giao tieáp vôùi Microprocrssor, ngoõ vaøo tín hieäu Reset naøy ñöôïc keát noái tín hieäu Reset Out cuûa Microprocrssor. Tín hieäu Chip select CS\ duøng ñeå löïa choïn 8255A khi Microprocrssor, giao tieáp vôùi nhieàu 8255A. 8255A coù 3 Port xuaát nhaäp (I/O) coù teân laø Port A,Port B, Port C, moãi Port 8255A bit. Port A goàm PA0-PA7, Port B goàm PB0-PB7, Port C goàm caùc bit PC0-PC7. Caùc Port naøy coù theå laø caùc Port Input hay Output tuøy thuoäc vaøo leänh ñieàu khieån, leänh ñieàu khieån do Microprocrssor gôûi ñeán chöùa trong thanh ghi leänh (coøn goïi laø thanh ghi ñieàu khieån) ñeå ñieàu khieån 8255A . caùc ñöôøng ñòa chæ A1A0 cuûa 8255A duøng ñeå löïa choïn caùc Port vaø thanh ghi A1A0=002 duøng ñeå choïn Port A, A1A0=012 duøng ñeå choïn Port B, A1A0=102 duøng ñeå choïn Port C, A1A0=112 duøng ñeå choïn thanh ghi ñieàu khieån. Trong sô ñoà khoái cuûa 8255A , caùc Port I/O cuûa 8255A chia ra laøm 2 nhoùm : nhoùm A goàm Port A vaø bit cao cuûa Port C,nhoùm B goàm Port B vaø 4 bit thaáp cuûa Port C. Ñeå söû duïng caùc Port cuûa 8255A ngöôøi laäp trình phaûi gôûi töø ñieàu khieån ra thanh ghi ñieàu khieån ñeå 8255A ñònh caáu hình cho caùc Port ñuùng theo yeâu caàu maø ngöôøi laäp trình mong muoán. NHOÙM A NHOÙM B D7 D6 D5 D4 D3 D2 D1 D0 MODE SELECTION 1:ACTIVE MODE SELECTION 00:MODE 0 01:MODE 1 1X:MODE2 Port A 1:INPUT 0:OUTPUT Port C 1:INPUT 0:OUTPUT MODE SELECTION 1:MODE1 0:MODE0 Port B 1:INPUT 0:OUTPUT Port C 1:INPUT 0:OUTPUT Caáu truùc töø ñieàu khieån cuûa 8255A. II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8255. Do caùc Port ra cuûa 8255A ñöôïc chia ra laøm 2 nhoùm A vaø nhoùm B taùch rôøi neân töø ñieàu khieån cuûa 8255A cuõng ñöôïc chia laøm 2 nhoùm. Caùc bit D2D1D0 duøng ñeå ñònh caáu hình cho nhoùm B: Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa Port C, D0=0 Port C xuaát döõ lieäu (output), D0=1 – Port thaáp laø port nhaäp döõ lieäu (Input). Bit D1 duøng ñeå thieát laäp Port B , D1=0- Port B laø Port xuaát döõ lieäu (output), D1=1 –Port B laø Port nhaäp döõ lieäu (input). Bit D2 duøng ñeå thieát laäp Mode ñieàu khieån cuûa nhoùm B: D2=0: nhoùm B hoaït ñoäng ôû modem 0. D2=1: nhoùm B hoaït ñoäng ôû modem 1. Caùc bit D6D5D4D3 duøng ñeå ñònh caáu hình cho nhoùm A: Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa Port C, D3=0-Port C laø Port xuaát döõ lieäu (output),D3=1 Port C laø Port nhaäp döõ lieäu (input). Bit D4 duøng ñeå thieát laäp Port A, D4=0- Port A laø Port xuaát döõ lieäu (output), D4=1-Port A laø Port nhaäp döõ lieäu (input). Bit D6D5 duøng ñeå thieát laäp Mode ñieàu khieån cuûa nhoùm B: D6D5=00:nhoùm A hoaït ñoäng ôû modem 0. D6D5=01: nhoùm A hoaït ñoäng ôû modem 1. D6D5=1x: nhoùm A hoaït ñoäng ôû modem 2. III. GIAO TIEÁP GIÖÕA VI XÖÛ LÍ VÔÙI 8255A . Vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù theo hai kieåu xuaát nhaäp (I/O) vaø kieåu boä nhôù. -Khi vi xöû lyù giao tieáp vôùi 8255A. Theo kieåu I/O thì noù chæ duøng 8255A ñöôøng ñòa chæ töø A0 ñeán A7, coøn khi giao tieáp theo kieåu boä nhôù thì noù duøng 16 ñöôøng A0 ñeán A15 ñeå giao tieáp, vì vaäy dung löôïng giao tieáp theo kieåu I/O thaáp hôn dung löôïng giao tieáp theo kieåu boä nhôù. 1.Giao tieáp kieåu I/O. Khi thieát keá vi xöû lyùgiao tieáp vôùi 8255A theo kieåu I/O thì vieäc giao tieáp thoâng qua hai leänh: In addr – Port vaø Out addr – Port. Döõ lieäu giao tieáp luoân chöùa trong thanh ghi A, ñòa chæ port(addr port) coù ñoä daøi 8255A bit. Cuõng gioáng nhö boä nhôù. Vi xöû lyù coù theå giao tieáp vôùi nhieàu vi maïch 8255A. Vôùi 8255A bit ñòa chæ, neáu xem moãi moät ñòa chæ truy xuaát moät oâ nhôù thì vi xöû lyù coù khaû naêng truy xuaát 255 oâ nhôù(vôùi 256 ñòa chæ). Moãi vi maïch 8255A chieám 4 ñòa chæ 93 port vaø 1 thanh ghi ñieàu khieån, neân soá löôïng vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù laø 64. Khi keát noái giöõa vi xöû lyù vaø vi maïch 8255A thì ñöôøng ñòa chæ A0 vaø A1 duøng ñeå löïa choïn caùc coång vaø thanh ghi ñieàu khieån, coøn caùc ñöôøng A2-A7 duøng ñeå löïa choïn vi maïch hoaït ñoäng, thoâng thöôøng caùc ñöôøng ñòa chæ naøy ñöôïc ñöa vaøo vi maïch giaûi maõ roài caùc ngoõ ra cuûa vi maïch giaûi maõ seõ ñöa chaân CS\ cuûa caùc vi maïch 8255A. Ví duï: thieát keá 2 vi maïch 8255 A giao tieáp vôùi vi xöû lyù theo kieåu I/O. Ta coù baûng ñòa chæ caùc vi maïch 8255A. IC A7 A6 A5 A4 A3 A2 A1 A0 HEX 8255I 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 00 03 8255II 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 04 07 8255I chieám 1 vuøng ñòa chæ töø 00H ñeán 03H ñòa chæ cuûa port A=00H, port B=01H ,port C=02H vaø ñòa chæ cuûa thanh ghi ñieàu khieån =03H. 8255-I chieám moät vuøng ñòa chæ töø 04H ñeán 07H, ñòa chæ cuûa: port A=04H, port B=05H, port C=06H vaø ñòa chæ cuûa thanh ghi ñieàu khieån=07H. 2.Giao tieáp kieåu boä nhôù. Khi thieát keá giao tieáp 8255 vôùi vi xöû lyù theo kieåu boä nhôù; veà chöùc naêng cuûa 8255 khoâng coù gì thay ñoåi chæ thay ñoåi veà ñòa chæ truy xuaát. Kieåu I/O, ñòa chæ cuûa port hay thanh ghi coù ñoä daøi 8255A bit, kieåu boä nhôù, ñòa chæ cuûa port hay thanh ghi seõ coù ñoä daøi 16 bit gioáng nhö boä nhôù neân goïi laø kieåu boä nhôù. Khi thieát keá IO theo kieåu boä nhôù thì moãi port hay thanh ghi ñieàu khieån cuûa 8255, ñöôïc xem laø töøng oâ nhôù. Khi ñoù vi xöû lyù giao tieáp vôùi 8255 gioáng nhö boä nhôù vaø 2 leänh IN vaø OUT khoâng coøn taùc duïng. Kieåu boä nhôù chæ söû duïng trong caùc heä thoáng nhoû ñôn giaûn. Giao tieáp IC8255A vôùi Microprocessor. 3.ÖÙng duïng cuûa 8255: IC giao tieáp IO 825 coù raát nhieàu öùng duïng trong caùc heä thoáng ñieàu khieån duøng MicroProcessor, 8255 ñoùng vai troø laø IC giao tieáp giöõa MicroProcessor vaø ñoái töôïng ñieàu khieån. Caùc öùng duïng cuûa 8255 laø truyeàn döõ lieäu, giaûi maõ hieån thò, giaûi maõ baøn phím, giao tieáp ñieàu khieån tuøy theo yeâu caàu.

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

  • doc1.doc
  • doc2.doc
  • docIndex.doc