Thiết bị báo cháy và điều khiển tự động, chương 4

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:11

0
115
lượt xem
47
download

Thiết bị báo cháy và điều khiển tự động, chương 4

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Các thanh ghi của C80318051/ được truy xuất ngầm định bởi bộ lệnh. Ví dụ “INC A” sẽ tăng nội dung thanh ghi A lên một đơn vị. Tác động này được ngầm định trong mã lệnh. Các thanh ghi trong C80318051/ được định dạng như một phần của RAM trên chip. Vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi đếm bộ nhớ chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp). ...

Chủ đề:
Lưu

Nội dung Text: Thiết bị báo cháy và điều khiển tự động, chương 4

  1. Chương 4: CAÙC THANH GHI COÙ CHÖÙC NAÊNG ÑAËC BIEÄT Caùc thanh ghi cuûa C8031/8051 ñöôïc truy xuaát ngaàm ñònh bôûi boä leänh. Ví duï “INC A” seõ taêng noäi dung thanh ghi A leân moät ñôn vò. Taùc ñoäng naøy ñöôïc ngaàm ñònh trong maõ leänh. Caùc thanh ghi trong C8031/8051 ñöôïc ñònh daïng nhö moät phaàn cuûa RAM treân chip. Vì vaäy moãi thanh ghi seõ coù moät ñòa chæ (ngoaïi tröø thanh ghi ñeám boä nhôù chöông trình vaø thanh ghi leänh vì caùc thanh ghi naøy hieám khi bò taùc ñoäng tröïc tieáp). Cuõng nhö R0  R7, 8031 coù 21 thanh ghi coù chöùc naêng ñaëc bieät ôû vuøng treân cuûa RAM noäi coù ñòa chæ töø 80HFFH.  Chuù yù: taát caû 128 ñòa chæ töø 80H  FFH khoâng ñöôïc ñònh nghóa chæ coù 21 thanh ghi coù chöùc naêng ñaëc bieät ñöôïc ñònh nghóa saún caùc ñòa chæ. Ngoaïi tröø thanh ghi A coù theå ñöôïc truy xuaát ngaàm nhö ñaõ noùi, ña soá caùc thanh ghi coù chöùc naêng ñaëc bieät SFR coù ñòa chæ hoùa töøng bit hoaëc byte.  Chuù yù: moät vaøi thanh ghi SFR coù theå ñòa chæ hoùa töøng bit hoaëc byte neân ngöôøi laäp trình phaûi thaän troïng khi truy xuaát bit hoaëc byte. 1. Töø traïng thaùi chöông trình: (PSW: Program Status Word) Thanh ghi traïng thaùi chöông trình PSW (Program Status Word) ôû ñòa chæ D0H chöùa caùc bit traïng thaùi ñöôïc toùm taét nhö sau: Bit Kyù Ñòa YÙ nghóa hieäu chæ
  2. PSW. CY D7H Côø nhôù 7 PSW. AC D6H Côø nhôù phuï 6 PSW. F0 D5H Côø 0 5 PSW. RS1 D4H Bit 1 choïn bank thanh ghi 4 PSW. RS0 D3H Bit 0 choïn bank thanh ghi 3 00 = bank 0: ñòa chæ 00H07H 01 = bank 1: ñòa chæ 08H0FH 10 = bank 2: ñòa chæ 10H17H 11 = bank 3: ñòa chæ 18H1FH PSW. 0V D2H Côø traøn 2 PSW. 0V D1H Döï tröõ 1 PSW. PORT D0H Côø parity chaún leû 0 Baûng : Caùc bit cuûa thanh ghi PSW  Côø nhôù (CY): Côø nhôù Carry coù taùc duïng keùp. Thoâng thöôøng noù ñöôïc duøng cho caùc leänh toaùn hoïc: C = 1 neáu pheùp toaùn coäng coù traøn hoaëc pheùp tröø coù möôïn vaø ngöôïc laïi C = 0 neáu pheùp toaùn coäng khoâng traøn vaø pheùp tröø khoâng coù möôïn.
  3. Ví duï: leänh sau seõ traû veà thanh ghi tích luõy keát quaû 00H vaø set côø nhôù trong PSW neáu thanh ghi tích luõy A chöùa FFH. ADD C,25H  Côø nhôù phuï AC: (AC: Auxillary Carry Flag) Khi coäng caùc soá BCD, côø nhôù phuï AC = 1 neáu keát quaû 4 bit thaáp trong khoaûng 0A0F vaø ngöôïc laïi côø nhôù phuï AC = 0.  Côø 0 (F0): Côø 0 laø moät bit côø ña duïng duøng cho caùc öùng duïng cho ngöôøi duøng.  Caùc bit choïn bank thanh ghi truy xuaát (RS0 vaø RS1): Caùc bit choïn bank thanh ghi nhaèm ñeå xaùc ñònh bank thanhghi ñöôïc truy xuaát. Chuùng ñöôïc xoaù sau khi Reset heä thoáng vaø ñöôïc thay ñoåi baèng phaàn meàm neáu caàn. Ví duï: 3 leänh sau ñaây cho pheùp bank thanh ghi 3 ñöôïc choïn vaø di chuyeån noäi dung thanh ghi R7 (coù ñòa chæ byte 1FH) vaøo thanh ghi A. SETB RS1 SETB RS0 MOV A, R7 Khi chöông trình ñöôïc dòch sang maõ maùy cho 8031 thi haønh, caùc ñòa chæ bit ñöôïc thay theá baèng caùc kyù töï RS1 vaø RS0. Vaäy leänh SETB RS1 laø SETB 0DH.  Côø traøn 0V: (Overlow Flag) Côø traøn coù taùc duïng nhö sau: 0V = 1 sau moät leänh coäng hoaëc tröø neáu coù pheùp toaùn bò traøn. Khi caùc soá coù daáu ñöôïc coäng hay tröø vôùi nhau, phaàn meàm coù theå kieåm tra bit naøy ñeå kieåm tra
  4. xem keát quaû coù trong taàm xaùc ñònh hay khoâng. Khi coù soá khoâng daáu ñöôïc coäng, bit 0V coù theå ñöôïc boû qua. Caùc keát quaû lôùn hôn +127 hoaëc nhoû hôn –128 thì bit 0V=1. Ví duï: pheùp coäng sau bò traøn vaø bit 0V seõ ñöôïc set: 0FH + 7FH = 8EH. Keát quaû laø moät soá coù daáu 8E ñöôïc xem nhö –116, khoâng phaûi laø keát quaû ñuùng 142 vì vaäy bit 0V = 1. 2. 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 quaû 16 bit A (byte thaáp) vaø B (byte cao). Leänh DIV AB seõ chia A cho B vaø traû keát quaû phaàn nguyeân trong A vaø phaàn dö trong B. Thanh ghi coù theå ñöôïc xem laø moät thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa töøng bit vôùi caùc ñòa chæ töø F0H  F7H. 3. Con troû ngaên xeáp: Con troû ngaên xeáp SP laø moät thanh ghi 8 bit ôû ñòa chæ 81H. Noù chöùa ñòa chæ cuûa byte döõ lieäu hieän haønh treân ñænh ngaên xeáp. Caùc leänh treân ngaên xeáp bao goàm caùc leänh caát döõ lieäu vaøo ngaên xeáp vaø laáy döõ lieäu ra khoûi ngaên xeáp. Leänh caát döõ lieäu vaøo ngaên xeáp seõ laøm taêng SP tröôùc khi ghi döõ lieäu vaø leänh laáy döõ lieäu ra khoûi ngaên xeáp seõ laøm giaûm SP. Ngaên xeáp cuûa 8031 ñöôïc giöõ trong RAM ngoaïi vaø giôùi haïn caùc ñòa chæ coù theå truy xuaát baèng ñòa chæ giaùn tieáp, chuùng laø 128 byte ñaàu cuûa 8031. Ví duï: Ñeå khôûi ñoäng SP vôùi ngaên xeáp baét ñaàu tai ñòa chæ 60H, thì duøng leänh sau ñaây: MOV SP, #5F Vôùi leänh treân thì ngaên xeáp cuûa 8031 chæ coù 32 byte vì ñòa chæ cao nhaát cuûa RAM treân vi ñieàu khieån laø 7F. Sôû dó giaù trò 5F
  5. ñöôïc naïp vaøo SP vì SP seõ taêng leân 60H tröôùc khi caát byte döõ lieäu ñaàu tieân. Khi Reset 8031, SP seõ mang giaù trò maëc ñònh laø 07H vaø döõ lieäu ñaàu tieân seõ ñöôïc naïp vaøo oâ nhôù ngaên xeáp coù ñòa chæ 08H. Neáu phaàn meàm öùng duïng khoâng khôûi ñoäng SP moät giaù trò môùi thì bank thanh ghi l coù theå caû 2 vaø 3 seõ khoâng duøng ñöôïc vì duøng RAM naøy ñaõ ñöôïc duøng laøm ngaên xeáp. Ngaên xeáp ñöôïc truy xuaát tröïc tieáp baèng leänh PUSH vaø leänh POP ñeå löu tröõ taïm thôøi vaø laáy döõ lieäu, hoaëc truy xuaát ngaàm baèng leänh goïi chöông trình con (ACALL vaø LCALL) vaø leänh trôû veà (RET, RETL) ñeå löu giaù trò cuûa boä ñeám chöông trình khi baét ñaàu thöïc hieän chöông trình con vaø laáy laïi khi keát thuùc chöông trình con. 4. Con troû döõ lieäu: (DPTR: Data Poiter) 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) 3 leänh sau ñaây seõ ghi ñòa chæ 55H vaøo RAM ngoaïi ôû ñòa chæ 1000H: MOV A,#55H MOV DPRT, ##1000H MOVX@ DPTR,A Leänh ñaàu tieân duøng ñeå naïp döõ lieäu 55H vaøo thanh ghi tích luõy. Leänh thöù 2 ñöôïc duøng ñeå naïp döõ lieäu 1000H vaøo con troû döõ lieäu DPTR. Leänh thöù 3 seõ di chuyeån noäi dung trong thanh ghi A (55H) vaøo oâ nhôù RAM ngoaøi coù ñòa chæ chöùa trong DPTR (laø 1000H). 5. Caùc thanh ghi port xuaát nhaäp: Caùc Port cuûa 8031 goàm port 0 ôû ñòa chæ 80H, port 1 ôû ñòa chæ 90H, port 2 ôû ñòa chæ A0H vaø port 3 ôû ñòa chæ B0H. Taát caû
  6. caùc port naøy coù theå truy xuaát töøng bit neân raát thuaän tieän trong chöùc naêng giao tieáp. Ví duï: Neáu moät motor ñöôïc noái vôùi cuoän daây coù transitor laùi ñeán bit 7 cuûa port 1, 8031 coù baät vaø taét baèng moät leänh ñôn: SETB P1.7 CLR P1.7 Vaø coù theå thöïc hieän töông töï baèng hai leänh sau: SETB P1.7 CLR 97H 6. Caùc thanh ghi Timer: 8031 coù chöùa hai boä ñònh thôøi/ ñeám 16 bit ñöôïc duøng cho vieäc ñònh thôøi hoaëc ñeám söï kieän. Timer 0 ôû ñòa chæ 8AH (TLO: byte thaáp) vaø 8CH (THO: byte cao). Timer 1 ôû ñòachæ 8BH (TL1: byte thaáp)vaø 8DH (TH1: byte cao) vieäc khôûi ñoäng Timer ñöôïc set bôûi Timer mode (TMOD) ôû ñòa chæ 89 vaø thanh ghi ñieàu khieån Timer (TCON) ôû ñòa chæ 88H. Chæ coù TCON ñöôïc ñòa chæ hoùa töøng bit. 7. Caùc thanh ghi port noái tieáp: 8031 chöùa 1 port noái tieáp duøng 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 moderm hoaëc giao tieáp vôùi caùc IC khaùc (caùc 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 döõ lieäu phaùt vaø döõ lieäu nhaän. Khi truyeàn döõ lieäu thì ghi leân SUBF, khi nhaän döõ lieäu thì ñoïc SUBF. 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).
  7. 8. Caùc thanh ghi ngaét: 8031 coù caáu truùc 5 nguoàn ngaét vaø 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 thanh ghi cho pheùp ngaét (LE) ôû ñòa chæ A8H. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit. 9. Thanh ghi ñieàu khieån coâng suaát: Thanh ghi ñieàu khieån coâng suaát (PCON) ôû ñòa chæ 97H chöùa nhieàu bit ñieàu khieån chuùng ñöôïc toùm taét ôû baûng sau: Bit Kí YÙ nghóa hieäu 7 SMO Bit gaáp ñoâi toác ñoä band, neáu ñöôïc set thì toác D ñoä baud seõ taêng gaáp ñoâi trong caùc mode 1,2 6 vaø 3 cuûa port noái tieáp 5 - Khoâng yù nghóa 4 - Khoâng yù nghóa 3 - Khoâng yù nghóa 2 GF1 Bit côø ña duïng 1 1 GF0 Bit côø ña duïng 2 PD Giaûm coâng suaát, ñöôïc set hoaït mode giaûm 0 coâng suaát, chæ thoaùt khi reset. IDL Mode chôø, set ñeå kích hoaït mode chôø, chæ thoaùt khi coù ngaét hoaëc reset heä thoáng. V. BOÄ NHÔÙ NGOAØI: 8031 coù khaû naêng môû roäng boä nhôù leân ñeán 64 kB boä nhôù chöông trình vaø 64 KB boä nhôù döõ lieäu beân ngoaøi. Do ñoù coù theå duøng ROM vaø RAM neáu caàn. Khi duøng boä nhôù ngoaøi port 0 cuõng laø moät port I/O thuaàn tuyù. Noù ñöôïc keát hôïp vôùi Bus ñòa chæ
  8. A0 ñeán A7 vaø Bus döõ lieäu D0 ñeán D7 vôùi tín hieäu ALE ñeå choát byte thaáp cuûa Bus ñòa chæ khi baét ñaàu moãi chu kyø nhôù. Port 2 ñöôïc cho pheùp byte cao cuûa ñòa chæ. 1. Truy xuaát boä nhôù chöông trình ngoaøi: Boä nhôù chöông trình beân ngoaøi laø moät boä nhôù ROM ñöôïc cho pheùp bôûi tín hieäu PSEN\. Hình veõ sau ñaây seõ moâ taû caùch keát noái 1 boä nhôù EPROM vôùi C8031/8051. Moät chu kyø maùy S1 S2 S3 S4 S5 S6 S1 OSC P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 ALE PSEN\ PORT2 PCH (byte cuûa PC) PC PORT1 Giaûn ñoàPCL i gian ñoïcleänh nhôù chöông trình ngoaøi 2 thôø PCL Maõ boä Byte Port 0 D7-D0 EA\ D Q A7-A0 74373 ALE E EPROM Port 2 A15-A8 PSEN\ OE\ Moät chu kyø cuûa C8031/8051 coù 12 xung nhòp. Neáu moät dao ñoäng treân chip ñöôïc laùi baèng thaïch anh 12 Mhz thì moät chu kyø maùy keùo daøi 1s. 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
  9. laø leänh 2 byte thì byte ñöôïc loaïi boû). Giaûn ñoà thôøi gian cuûa moät laàn laáy leänh ñöôïc veõ ôû hình treân: 2. Truy xuaát boä nhôù döõ lieäu ngoaøi: 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 hieäu ñieàu khieån WR\ vaø RD\. C8031/8051 coù moät leänh duy nhaát truy xuaát döõ lieäu cuûa boä nhôù döõ lieäu ngoaøi laø MOVX duøng con troû 16 bit (PDRT) hoaëc R0 vaø R1 xem nhö thanh ghi ñòa chæ. 3. Giaûi maõ ñòa chæ: Neáu nhieàu EPROM hoaëc nhieàu RAM ñöôïc giao tieáp vôùi 8031 thì caàn coù maïch giaûi maõ ñòa chæ. Maïch giaûi maõ cuõng ñöôïc thöïc hieän nhö caùc vi xöû lyù khaùc, söû duïng IC 74138 ñeå giaûi maõ. 4. Xeáp choàng caùc vuøng boä nhôù vaø döõ lieäu beân ngoaøi: Vì boä nhôù chöông trình laø ROM neân naûy sinh moät vaán ñeà baát tieän khi phaùt trieån phaàn meàm cho 8031 laø toå chöùc boä nhôù nhö theá naøo ñeå coù theå söûa ñoåi chöông trình vaø coù theå ghi trôû laïi noù ñöôïc chöùa trong boä nhôù ROM. Caùch giaûi quyeát laø xeáp choàng caùc vuøng nhôù chöông trình vaø döõ lieäu. Moät boä nhôù RAM coù theå chöùa caû chöông trình vaø döõ lieäu baèng caùch noái ñöôøng OE\ cuûa RAM vôùi moät coång AND coù hai ngoõ vaøo PSEN\ vaø RD\. Sô ñoà maïch nhö hình sau cho pheùp boä nhôù RAM coù hai chöùc naêng vöøa laø boä nhôù chöông trình vöøa laø boä nhôù döõ lieäu: WR\ WR\ RD\ RAM OE\ PSEN\
  10. Vaäy moät chöông trình coù theå ñöôïc taûi vaøo RAM baèng caùch xem noù nhö moät boä nhôù döõ lieäu vaø thi haønh baèng caùch xem noù nhö moät boä nhôù chöông trình. VI. NGOÕ VAØO TÍN HIEÄU RESET: C8031/8051 coù ngoõ vaøo Reset RST taùc ñoäng ôû möùc cao trong khoaûng thôøi gian hai chu kyø xung maùy, sau ñoù xuoáng möùc thaáp ñeå 8031 baét ñaàu laøm vieäc RST coù theå kích baèng tay baèng moät phím thöôøng hôû, sô ñoà maïch Reset nhö sau: +5v 100k 10f 10k Traïng thaùi cuûa taát caû thanh ghi trong C8031/8051 sau khi Reset heä thoáng ñöôïc toùm taét nhö sau: Thanh ghi Noäi dung Ñeám chöông trình PC 0000H Thanh ghi tích luõy A 00H Thanh ghi B 00H Thanh ghi traïng thaùi 00H PSW 07H SP 0000H DPRT FFH Port 0 ñeán port 3 XXX0 0000B IP 0XX0 0000B IE 00H Caùc thanh ghi ñònh 00H thôøi 00H
  11. SCON SBUF 0XXX XXXXB PCON(HMOS) 0XXX 0000B PCON(CMOS) 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 taïi 0000H. Khi Reset 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ôù 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.

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản