Giáo trình vi điều khiển 8051 - Chương 8
Số trang: 10
Loại file: pdf
Dung lượng: 132.63 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Lập trình với các lệnh một bít. Trong hầu hết các bộ vi xử lý (BVXL) thì dữ liệu được truy cập theo từng byte. Trong các bộ vi xử lýnh địa chỉ theo byte này thì các nội dung của một thanh ghi, bộ nhớ RAM hay cổng đều phải được truy cập từng byte một. Hay nói cách khác, lượng dữ liệu tối thiểu có thể được truy cập là một byte. Ví dụ, trong bộ vi xử lý Pentium cổng vào/ ra (I/O) được định hướng theo byte, có nghĩa là để thay đổi một bít thì...
Nội dung trích xuất từ tài liệu:
Giáo trình vi điều khiển 8051 - Chương 8 ch¬ng 8 c¸c lÖnh mét bÝt vµ lËp tr×nh8.1 LËp tr×nh víi c¸c lÖnh mét bÝt. Trong hÇu hÕt c¸c bé vi xö lý (BVXL) th× d÷ liÖu ®îc truy cËp theo tõng byte.Trong c¸c bé vi xö lýnh ®Þa chØ theo byte nµy th× c¸c néi dung cña mét thanh ghi, bénhí RAM hay cæng ®Òu ph¶i ®îc truy cËp tõng byte mét. Hay nãi c¸ch kh¸c, lîngd÷ liÖu tèi thiÓu cã thÓ ®îc truy cËp lµ mét byte. VÝ dô, trong bé vi xö lý Pentiumcæng vµo/ ra (I/O) ®îc ®Þnh híng theo byte, cã nghÜa lµ ®Ó thay ®æi mét bÝt th× taph¶i truy cËp toµn bé 8 bÝt. Trong khi ®ã cã rÊt nhiÒu øng dông th× ta ph¶i chØ cÇn thay®æi gi¸ trÞ cña mét bÝt ch¼ng h¹n nh lµ bËt hoÆc t¾t mét thiÕt bÞ. Do vËy kh¶ n¨ng®¸nh ®Þa chØ ®Õn tõng bÝt cña 8051 rÊt thÝch hîp cho øng dông nµy. Kh¶ n¨ng truy cËp®Õn tõng bÝt mét thay v× ph¶i truy cËp c¶ byte lµm cho 805 trë thµnh trong nh÷ng bévi ®iÒu khiÓn (BV§K) 8 bÝt m¹nh nhÊt trªn thÞ trêng. VËy nh÷ng bé phËn nµo cñaCPU, RAM, c¸c thanh ghi, cæng I/O hoÆc ROM lµ cã thÓ ®¸nh ®Þa chØ theo bÝt ®îc.V× ROM chØ ®¬n gi¶n d÷ m· ch¬ng tr×nh thùc thi nªn nã kh«ng cÇn kh¶ n¨ng ®¸nh®Þa chØ theo bÝt. TÊt c¶ mäi m· lÖnh ®Òu ®Þnh híng theo byte chØ cã c¸c thanh ghi,RAM vµ c¸c cæng I/O lµ cÇn ®îc ®¸nh ®Þa chØ theo bÝt. Trong 8051 th× rÊt nhiÒu vÞ trÝcña RAM trong mét sè thanh ghi vµ tÊt c¶ c¸c cæng I/O lµ cã thÓ ®¸nh ®Þa chØ theotõng bÝt. Díi ®©y ta chØ ®i s©u vµo tõng phÇn mét.8.1.1 C¸c lÖnh mét bÝt. C¸c lÖnh dïng c¸c phÐp tÝnh mét bÝt ®îc cho ë b¶ng 8.1. Trong phÇn nµychóng ta lµm vÒ c¸c lÖnh nµy vµ ®a ra nhiÒu vÝ dô vÒ c¸ch sö dông chóng, c¸c lÖnhmét bÝt kh¸c mµ chØ liªn quan ®Õn cê nhí CY (Cary Flag) sÏ lµm ë môc kh¸c. B¶ng 8.1: C¸c lÖnh mét bÝt cña 8051 LÖnh Chøc n¨ng SETB bÝt ThiÕt lËp bÝt (bÝt b»ng 1) CLR bÝt Xo¸ bÝt vÒ kh«ng (bÝt = 0) CPL bÝt Bï bÝt (bÝt = NOT bÝt) JB bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 1 JNB bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 0 JBC bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 1 vµ sau ®ã xo¸ bÝt8.1.2 C¸c cæng I/O vµ kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt. Bé vi ®iÒu khiÓn 8051 cã bèn cæng I/O 8 bÝt lµ P0, P1, P2 vµ P3. Chóng ta cãthÓ truy cËp toµn bé 8 bÝt hoÆc theo mét bÝt bÊt kú mµ kh«ng lµm thay ®æi c¸c bÝt kh¸ccßn l¹i. Khi truy cËp mét cæng theo tõng bÝt, chóng ta sö dông c¸c có ph¸p “SETB Y,Y” víi X lµ sè cña cæng 0, 1, 2 hoÆc 3, cßn Y lµ vÞ trÝ bÝt tõ 0 ®Õn 7 ®èi víi c¸c bÝt d÷liÖu ®o ®Õn 7. VÝ dô “SETB P1.5” lµ thiÕt lËp bÝt cao sè 5 cña cæng 1. H·y nhí r»ng dolµ bÝt cã nghÜa thÊp nhÊt LSB vµ D7 lµ bÝt cã nghÜa lµ cao nhÊt MSB. Xem vÝ dô 8.1.VÝ dô 8.1: ViÕt c¸c ch¬ng tr×nh sau: a) T¹o mét sãng vu«ng (hµm xung vu«ng) víi ®é ®Çy xung 50% trªn bÝt 0 cñacæng 1. b) T¹o mét hµm xung vu«ng víi 66% ®é ®Çy xung trªn bÝt 3 cña cæng 1.Lêi gi¶i: a) Hµm xung vu«ng víi ®é ®Çy xung 50% cã nghÜa lµ tr¹ng th¸i “bËt” vµ “t¾t”(hoÆc phÇn cao vµ thÊp cña xung) cã cïng ®é dµi. Do vËy ta chèt P1.0 víi thêi giangi÷ chËm gi÷a c¸c tr¹ng th¸i.HERE: SETB P1.0 ;ThiÕt lËp bÝt 0 cæng 1 lªn 1. LCALL DELAY ;Gäi ch¬ng tr×nh con gi÷ chËm DELAY CLR P1.0 ;P1.0 = 0 SJMP HERE ;TiÕp tôc thùc hiÖn nã. Cã thÓ viÕt ch¬ng tr×nh nµy theo c¸ch kh¸c:HERE: CPL P1.0 ;Bï bÝt 0 cña cæng 1. LCALL DELAY ;Gäi ch¬ng tr×nh con gi÷ chËm DELAY SJMP HERE ;TiÕp tôc thùc hiÖn nã. 8051 P1.0b) Hµm xung vu«ng víi ®é ®Çy xung 66% cã nghÜa lµ tr¹ng th¸i “bËt” cã ®é dµi gÊp®«i tr¹ng th¸i “t¾t”.BACK: SETB P1.3 ;ThiÕt lËp bÝt 3 cæng 1 lªn 1. LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY lÇn n÷a. CLR P1.3 ;Xo¸ bÝt 3 cña cæng 1 vµ 0. LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY SJMP BACK ;TiÕp tôc thùc hiÖn nã. 8051 P1.0 Lu ý r»ng, khi m· “P1.0” ®îc hîp dÞch nã trë thµnh “SETB 90H” v× P1.0cã ®Þa chØ trong RAM lµ 90h. Tõ h×nh vÏ 8.1 ta thÊy r»ng c¸c ®Þa chØ bÝt cho P0 lµ80H ®Õn 87H vµ cho P lµ 90H ®Õn 97H v.v... H×nh 8.1 còng chØ ra tÊt c¶ c¸c thanh ghicã kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt. B¶ng 8.2: Kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt cña c¸c cæng. P0 P1 P2 P3 Ports Bit P0.0 P1.0 P2.0 P3.0 D0 P0.1 P1.1 P2.1 P3.1 D1 P0.2 P1.2 P2.2 P3.2 D2 P0.3 P ...
Nội dung trích xuất từ tài liệu:
Giáo trình vi điều khiển 8051 - Chương 8 ch¬ng 8 c¸c lÖnh mét bÝt vµ lËp tr×nh8.1 LËp tr×nh víi c¸c lÖnh mét bÝt. Trong hÇu hÕt c¸c bé vi xö lý (BVXL) th× d÷ liÖu ®îc truy cËp theo tõng byte.Trong c¸c bé vi xö lýnh ®Þa chØ theo byte nµy th× c¸c néi dung cña mét thanh ghi, bénhí RAM hay cæng ®Òu ph¶i ®îc truy cËp tõng byte mét. Hay nãi c¸ch kh¸c, lîngd÷ liÖu tèi thiÓu cã thÓ ®îc truy cËp lµ mét byte. VÝ dô, trong bé vi xö lý Pentiumcæng vµo/ ra (I/O) ®îc ®Þnh híng theo byte, cã nghÜa lµ ®Ó thay ®æi mét bÝt th× taph¶i truy cËp toµn bé 8 bÝt. Trong khi ®ã cã rÊt nhiÒu øng dông th× ta ph¶i chØ cÇn thay®æi gi¸ trÞ cña mét bÝt ch¼ng h¹n nh lµ bËt hoÆc t¾t mét thiÕt bÞ. Do vËy kh¶ n¨ng®¸nh ®Þa chØ ®Õn tõng bÝt cña 8051 rÊt thÝch hîp cho øng dông nµy. Kh¶ n¨ng truy cËp®Õn tõng bÝt mét thay v× ph¶i truy cËp c¶ byte lµm cho 805 trë thµnh trong nh÷ng bévi ®iÒu khiÓn (BV§K) 8 bÝt m¹nh nhÊt trªn thÞ trêng. VËy nh÷ng bé phËn nµo cñaCPU, RAM, c¸c thanh ghi, cæng I/O hoÆc ROM lµ cã thÓ ®¸nh ®Þa chØ theo bÝt ®îc.V× ROM chØ ®¬n gi¶n d÷ m· ch¬ng tr×nh thùc thi nªn nã kh«ng cÇn kh¶ n¨ng ®¸nh®Þa chØ theo bÝt. TÊt c¶ mäi m· lÖnh ®Òu ®Þnh híng theo byte chØ cã c¸c thanh ghi,RAM vµ c¸c cæng I/O lµ cÇn ®îc ®¸nh ®Þa chØ theo bÝt. Trong 8051 th× rÊt nhiÒu vÞ trÝcña RAM trong mét sè thanh ghi vµ tÊt c¶ c¸c cæng I/O lµ cã thÓ ®¸nh ®Þa chØ theotõng bÝt. Díi ®©y ta chØ ®i s©u vµo tõng phÇn mét.8.1.1 C¸c lÖnh mét bÝt. C¸c lÖnh dïng c¸c phÐp tÝnh mét bÝt ®îc cho ë b¶ng 8.1. Trong phÇn nµychóng ta lµm vÒ c¸c lÖnh nµy vµ ®a ra nhiÒu vÝ dô vÒ c¸ch sö dông chóng, c¸c lÖnhmét bÝt kh¸c mµ chØ liªn quan ®Õn cê nhí CY (Cary Flag) sÏ lµm ë môc kh¸c. B¶ng 8.1: C¸c lÖnh mét bÝt cña 8051 LÖnh Chøc n¨ng SETB bÝt ThiÕt lËp bÝt (bÝt b»ng 1) CLR bÝt Xo¸ bÝt vÒ kh«ng (bÝt = 0) CPL bÝt Bï bÝt (bÝt = NOT bÝt) JB bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 1 JNB bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 0 JBC bÝt, ®Ých Nh¶y vÒ ®Ých nÕu bÝt = 1 vµ sau ®ã xo¸ bÝt8.1.2 C¸c cæng I/O vµ kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt. Bé vi ®iÒu khiÓn 8051 cã bèn cæng I/O 8 bÝt lµ P0, P1, P2 vµ P3. Chóng ta cãthÓ truy cËp toµn bé 8 bÝt hoÆc theo mét bÝt bÊt kú mµ kh«ng lµm thay ®æi c¸c bÝt kh¸ccßn l¹i. Khi truy cËp mét cæng theo tõng bÝt, chóng ta sö dông c¸c có ph¸p “SETB Y,Y” víi X lµ sè cña cæng 0, 1, 2 hoÆc 3, cßn Y lµ vÞ trÝ bÝt tõ 0 ®Õn 7 ®èi víi c¸c bÝt d÷liÖu ®o ®Õn 7. VÝ dô “SETB P1.5” lµ thiÕt lËp bÝt cao sè 5 cña cæng 1. H·y nhí r»ng dolµ bÝt cã nghÜa thÊp nhÊt LSB vµ D7 lµ bÝt cã nghÜa lµ cao nhÊt MSB. Xem vÝ dô 8.1.VÝ dô 8.1: ViÕt c¸c ch¬ng tr×nh sau: a) T¹o mét sãng vu«ng (hµm xung vu«ng) víi ®é ®Çy xung 50% trªn bÝt 0 cñacæng 1. b) T¹o mét hµm xung vu«ng víi 66% ®é ®Çy xung trªn bÝt 3 cña cæng 1.Lêi gi¶i: a) Hµm xung vu«ng víi ®é ®Çy xung 50% cã nghÜa lµ tr¹ng th¸i “bËt” vµ “t¾t”(hoÆc phÇn cao vµ thÊp cña xung) cã cïng ®é dµi. Do vËy ta chèt P1.0 víi thêi giangi÷ chËm gi÷a c¸c tr¹ng th¸i.HERE: SETB P1.0 ;ThiÕt lËp bÝt 0 cæng 1 lªn 1. LCALL DELAY ;Gäi ch¬ng tr×nh con gi÷ chËm DELAY CLR P1.0 ;P1.0 = 0 SJMP HERE ;TiÕp tôc thùc hiÖn nã. Cã thÓ viÕt ch¬ng tr×nh nµy theo c¸ch kh¸c:HERE: CPL P1.0 ;Bï bÝt 0 cña cæng 1. LCALL DELAY ;Gäi ch¬ng tr×nh con gi÷ chËm DELAY SJMP HERE ;TiÕp tôc thùc hiÖn nã. 8051 P1.0b) Hµm xung vu«ng víi ®é ®Çy xung 66% cã nghÜa lµ tr¹ng th¸i “bËt” cã ®é dµi gÊp®«i tr¹ng th¸i “t¾t”.BACK: SETB P1.3 ;ThiÕt lËp bÝt 3 cæng 1 lªn 1. LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY lÇn n÷a. CLR P1.3 ;Xo¸ bÝt 3 cña cæng 1 vµ 0. LCALL DELAY ;Gäi ch¬ng tr×nh con DELAY SJMP BACK ;TiÕp tôc thùc hiÖn nã. 8051 P1.0 Lu ý r»ng, khi m· “P1.0” ®îc hîp dÞch nã trë thµnh “SETB 90H” v× P1.0cã ®Þa chØ trong RAM lµ 90h. Tõ h×nh vÏ 8.1 ta thÊy r»ng c¸c ®Þa chØ bÝt cho P0 lµ80H ®Õn 87H vµ cho P lµ 90H ®Õn 97H v.v... H×nh 8.1 còng chØ ra tÊt c¶ c¸c thanh ghicã kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt. B¶ng 8.2: Kh¶ n¨ng ®¸nh ®Þa chØ theo bÝt cña c¸c cæng. P0 P1 P2 P3 Ports Bit P0.0 P1.0 P2.0 P3.0 D0 P0.1 P1.1 P2.1 P3.1 D1 P0.2 P1.2 P2.2 P3.2 D2 P0.3 P ...
Tìm kiếm theo từ khóa liên quan:
lệnh 1 pít Giáo trình điện tử vi điều khiển 8051 bộ vi điều khiển mạch điện tử vi xử lý lệnh số họcGợi ý tài liệu liên quan:
-
Đề cương chi tiết học phần Vi xử lý
12 trang 296 0 0 -
Đồ án tốt nghiệp: Điều khiển xe Robot bằng giọng nói với Raspberry Pi 3
81 trang 180 0 0 -
Giáo trình Mạch điện tử - Trường Cao đẳng nghề Số 20
97 trang 169 0 0 -
Báo cáo môn Vi xử lý - TÌM HIỂU VỀ CÁC BỘ VI XỬ LÝ XEON CỦA INTEL
85 trang 154 0 0 -
Tìm hiểu về động cơ không đồng bộ phần 1
27 trang 136 0 0 -
Báo cáo bài tập lớn môn Kỹ thuật vi xử lý: Thiết kế mạch quang báo - ĐH Bách khoa Hà Nội
31 trang 133 0 0 -
Bài tập lớn môn Vi xử lý, vi điều khiển: Thiết kế bộ điều khiển tốc độ của động cơ điện một chiều
27 trang 117 0 0 -
Bài tập lớn Vi xử lý: Thiết kế môn học Đèn LED đơn ghép thành đèn quảng cáo
15 trang 115 0 0 -
Tài liệu thực hành Vi điều khiển 8051
55 trang 105 0 0 -
Giáo trình môn kỹ thuật vi điều khiển
0 trang 96 0 0