Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 9

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

0
76
lượt xem
33
download

Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 9

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

Chương trình được xây dựng nên từ tập lệnh, tuân theo cú pháp và cấu trúc logic. Một họ vi xử lý luôn đi kèm theo tập lệnh của nó. Chương này gới thiệu tập lệnh của họ MCs-51, việc định vị và một vài ví dụ về các tình huống gặp phải khi lập trình. Chương này không bàn về kỹ thuật lập trình cũng như về trình biên dịch. Tập lệnh họ vi điều khiển MCx-51 tối ưu cho các điều khiển ứng dụng 8 bit. Nó cung cấp các cách định vị nhanh, gọn thuận tiện cho...

Chủ đề:
Lưu

Nội dung Text: Ứng dụng KIT 8051 dùng để chuyển đổi A/D-D/A, chương 9

  1. Chöông 9 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ò:
  2.  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
  3. 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
  4. Ñò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ò. Opcode Immediate data 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û.
  5. Ñò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. Opcode Relative offset 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. Addr 10 – Opcode 5-bit Addr7 - Addr0 Addr8
  6. Ñò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

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản