Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 7
lượt xem 15
download
Hầu hết các thanh ghi nội của các vi điều khiển đều có thể được truy xuất thông qua tên đã được định nghĩa. Ví dụ INC A. Các thanh ghi nội của 8051 chiếm một phần của vùng nhớ nội, vì vậy mỗi thanh ghi đều có một địa chỉ. Các thanh ghi chức năng (FSRs) nằm trong vùng nhớ cao từ 80H đến FFH. Lưu ý có một số byte trong vùng này không được định nghĩa. Chỉ có 21 địa chỉ thanh ghi chức năng được định nghĩa (26 địa chỉ đối với 80528032/)....
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 7
- Chương 7: CAÙC THANH GHI COÙ CHÖÙC NAÊNG ÑAËC BIEÄT Haàu heát caùc thanh ghi noäi cuûa caùc vi ñieàu khieån ñeàu coù theå ñöôïc truy xuaát thoâng qua teân ñaõ ñöôïc ñònh nghóa. Ví duï INC A. Caùc thanh ghi noäi cuûa 8051 chieám moät phaàn cuûa vuøng nhôù noäi, vì vaäy moãi thanh ghi ñeàu coù moät ñòa chæ. Caùc thanh ghi chöùc naêng (FSRs) naèm trong vuøng nhôù cao töø 80H ñeán FFH. Löu yù coù moät soá bytes trong vuøng naøy khoâng ñöôïc ñònh nghóa. Chæ coù 21 ñòa chæ thanh ghi chöùc naêng ñöôïc ñònh nghóa (26 ñòa chæ ñoái vôùi 8052/8032). Maëc duø coù theå truy xuaát caùc thanh ghi chöùc naêng thoâng qua teân cuûa noù, haàu heát caùc thanh ghi naøy ñöôïc truy xuaát baèng ñòa chæ tröïc tieáp. Moät soá thanh ghi coù theå truy xuaát baèng byte hoaëc bit. Trong laäp trình phaûi caån thaän khi truy xuaát bit thoâng qua byte. Ví duï leänh sau: SETB 0E0H ; Set bit 0 trong thanh ghi ACC, caùc bit khaùc vaãn khoâng thay ñoåi. Löu yù ñòa chæ cuûa moät bit trong moät thanh ghi chöùc naêng luoân ñöôïc xaùc ñònh bôûi 5 bit cao cuûa ñòa chæ thanh ghi ñoù. Ví duï moät bit trong thanh ghi P1 (90H hay 10010000B) hay coù ñòa chæ 9xH hay 10010xxxB. Thanh ghi traïng thaùi chöông trình (PSW) seõ ñöôïc moâ taû chi tieát trong phaàn sau, caùc thanh ghi chöùc naêng coøn laïi ñöôïc moâ taû ngaén goïn vaø seõ ñöôïc moâ taû chi tieát trong nhöõng chöông sau. Thanh ghi traïng thaùi chöông trình: Thanh ghi traïng thaùi chöông trình coù ñòa chæ 0Dh, chöùa caùc bit traïng thaùi chöông trình. Caùc bit traïng thaùi ñöôïc moâ taû nhö sau:
- * Côø Carry: Côø carry coù hai chöùc naêng: + Ñöôïc duøng trong caùc pheùp toaùn soá hoïc thoâng thöôøng. Noù laø côø nhôù cuûa pheùp tính coäng vaø côø möôïn cuûa pheùp tính tröø. Ví duï caùc thanh ghi ACC coù noäi dugn FFH thì leänh “ADD A, #1” laøm cho ACC baèng 00H vaø côø nhôù ñöôïc set. + Côø carry coøn ñöôïc duøng nhö “thanh ghi tích luyõ 1 bit” cho caùc pheùp toaùn luaän lyù treân bit. Ví duï leänh sau AND bit 25H vôùi côø carry vaø ñaëc keát quaû vaøo côø carry: “ANL C,25H ;”. * Côø nhôù phuï (auxiliary carry – AC) : Khi coäng caùc giaù trò BCD, côø AC ñöôïc set neáu bit thöù ba traøn hay 4 bit thaáp coù giaù trò töø 0AH ñeán 0FH. Khi coäng soá BCD, sau pheùp coäng phaûi duøng leänh DA A (decimal adjust accumulator) ñeå chænh keát quaû coäng veà daïng BCD. * Côø 0: Côø naøy daønh cho ngöôøi söû duïng trong caùc öùng duïng laäp trình. * Bit choïn ngaên thanh ghi: Hai bit RS0 vaø RS1 duøng ñeå cho ngaên thanh ghi, chuùng ñöôïc xoùa khi reset heä thoáng vaø coù theå thay ñoåi baèng phaàn meàm. Ví duï caùc leänh sau seõ choïn nhaên thanh ghi thöù ba vaø ghi noäi dung R7 (ñòa chæ 1FH) vaøo ACC. SETB RS0 ; SETB RS1 ; MOV A, R7 ; * Côø traøn (Overflow – OV): Côø traøn ñöôïc set keát quaû bò traøn (soá hoïc) sau pheùp tính coäng hoaëc tröø. Ñoái vôùi pheùp toaùn coäng vaø tröø soá coù daáu, phaàn meàm coù theå xeùt bit naøy ñeå kieåm tra keát quaû coù vöôït quaù
- giôùi haïn hay khoâng. Khi coäng soá khoâng daáu ta khoâng quan taâm ñeán bit naøy. Nhö vaäy keát quaû cuûa pheùp tính coäng hay tröø lôùn hôn 127 hoaëc nhoû hôn –128 seõ set côø traøn. Ví duï OV seõ set sau pheùp tính coäng sau: Hex: 0F Decimal : 15 +7F +127 8E 142 8E töông ñöông vôùi –116. Roõ raøng keát quaû 142 khoâng chính xaùc. Vì vaäy bit OV ñöôïc set. B K Ñ Chöùc naêng it yù hieäu òa chæ P C D Côø nhôù SW .7 Y 7h Côø nhôù phuï P A D Côø Zero SW .6 C 6h Choïn thanh ghi döï tröõ 1 P F D Choïn thanh ghi döï tröõ 2 SW .5 0 5h 00=bank0, ñòa chæ 00h-07h P R D 01=bank1, ñòa chæ 08h-0Fh SW .4 S1 4h 10=bank2, ñòa chæ 10h-17h P R D 11=bank3, ñòa chæ 18h-1Fh SW .3 S0 3h Côø traøn Döï tröõ Côø chaün leõ P O D SW .2 V 2h P D SW .1 P 1h P D
- SW .0 0h Baûng 4.3 Thanh ghi PSW * Bit parity: Bit Parity ñöôïc töï ñoäng set hoaëc xoùa trong moãi chu kyø maùy ñeå taïo neân parity chaün ñoái vôùi thanh ghi tích luyõ. Soá bit 1 trong thanh ghi ACC coäng vôùi P luoân luoân laø moät chaün. Ví duï neáu ACC chöùa 10101101B, P seõ laø 1. Bit Parity thöôøng ñöôïc lieân keát vôùi chöông trình truyeàn noái tieáp coù söû duïng parity. Thanh ghi B Thanh ghi B coù ñòa chæ F0h, chuû yeáu duøng vôùi thanh ghi ACC trong caùc pheùp toaùn nhaân vaø chia. Leänh MUL AB nhaân caùc soá 8 bit khoâng daáu trong thanh ghi A vaø B. Keát quaû laø moät soá 16 bit chöùa trong thanh ghi ACC (byte thaáp) vaø B (byte cao). Leänh DIV B chia thanh ghi ACC cho B. Keát quaû thöông soá ñöôïc löu trong thanh ghi ACC soá dö ñöôïc löu trong thanh ghi B. Thanh ghi B cuõng ñöôïc duøng nhö nhöõng thanh ghi khaùc vaø coù theå truy xuaát bit (ñòa chæ F0h ñeán F7h) Con troû ngaên choàng (stack pointer – SP) Stack – pointer laø moät thanh ghi 8 bit coù ñòa chæ 81H. Noù chöùa ñòa chæ hieän thôøi cuûa ñænh stack. Khi ñaåy döõ lieäu vaøo stack, SP taêng leân moät giaù trò, tieáp theo döõ lieäu ñöôïc ghi vaøo stack. Khi laáy döõ lieäu ra khoûi stack, döõ lieäu ñöôïc ñoïc ra tröôùc sau ñoù SP ñöôïc giaûm. Stack cuûa 8051 naèm trong vuøng RAM noäi vaø coù theå truy xuaát baèng ñòa chæ tröïc tieáp. 128 bytes ñaàu tieân ñoái vôùi 8051/8031 vaø 256 bytes ñoái vôùi 8052/8032 trong vuøng RAM noäi coù theå duøng laøm stack. Ñeå taïo ra stack baét ñaàu taïi 60H, ta khôûi ñoäng thanh ghi SP: MOV SP, #5FH ;
- Nhö vaäy stack ñöôïc giôùi haïn trong 32 bytes. Ta duøng giaù trò 5FH vì SP seõ taêng leân 60H tröôùc khi ñaåy döõ lieäu ñaàu tieân vaøo stack. Khi laäp trình ta khoâng caàn phaûi khôûi ñoäng laïi thanh ghi SP vì noù ñaõ ñöôïc khôûi ñoäng vôùi giaù trò khi reset. Thanh ghi SP chöùa 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 K Moâ taû it yù hieäu S Toác ñoä keùp; khi ñöôïc set, toác ñoä truyeàn OMD 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 G Côø duøng cho muïc ñích toång quaùt 2 F1 Power down, set mode power down. Chæ G thoaùt khi reset F0 Idle mode, set mode idle. Thoaùt khi coù P ngaét hoaëc reset D I DL 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.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 13
9 p | 196 | 74
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 5
9 p | 129 | 46
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 1
6 p | 135 | 46
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 9
6 p | 114 | 34
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 12
8 p | 108 | 23
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 3
6 p | 93 | 19
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 14
12 p | 113 | 19
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 11
5 p | 94 | 15
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 8
10 p | 75 | 14
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 10
9 p | 102 | 13
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 4
15 p | 97 | 13
-
Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 6
6 p | 89 | 11
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn