Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
3,58 MB
Nội dung
THỰC HÀNHVỚILED ĐƠN
Một số qui định:
a. Chú thích: dùng dấu chấm phẩy ";"để bắt đầu các đoạn chú thích, các
chú thích chỉ có tác dụng trên dòng chứa nó và được đặt tuỳ ý tại bất kì vị trí
nào trên dòng.
Chú thích giúp chương trình thể hiện rõ ràng trong sáng hơn, người
lập trình dễ dàng hiểu và chỉnh sửa chương trình được viết ra, các đoạn chú
thích phù hợp sẽ giúp cho việc tìm kiếm các đoạn chương trình dễ dàng hơn.
Sau đây là ví dụ cho phần chú thích bắt đầu một chương trình :
;*************************************************************************************************
;**************///// TÊN CHƯƠNG TRÌNH \\\\\\
****************************************
;**
;**////////////////___ Các yêu cầu của bài toán_________________\\\\\\\\\\\\\\\\\\\\\\\\\\\
;**///////////////___ ghi chú trên các dòng này__________________\\\\\\\\\\\\\\\\\\\\\\\\\
;**//////////////____ K
ết cấu phần cứng và các linh kiện kèm theo___\\\\\\\\\\\\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>
;**\\\\\\\\\\\\\\\\\\ Mô tả các biến, các hàm cần sử dụng ///////////////////////
;**\\\\\\\\\\\\\\\\\\\\ cách gi
ải quyết chương trình ////////////////////
;**\\\\\\\\\\\\\\\\\\\\\ các dòng ghi chú khác /////////////////////
;*******************
**********************************************************************************
;*************************************************************
***************************************
Ví d
ụ về phân cách các đoạn chương trình phức tạp với nhau bằng
chú thích:
;**<<<<<<<<<================= tên l
ệnh hoặc chức năng =======>>>>>>**
Câu lệnh 1 ;===>>>ghi chú cho câu lệnh 1
Câu lệnh 2
Câu l
ệnh 3 ;===>>>ghi chú cho câu lệnh 3
Câu lệnh cuối
;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
b.Thụt dòng, Chữ hoa- chữ thường
Khi soạn thảo chương trình để chương trình đễ đọc và dễ gỡ lỗi có một
số đề nghị sau:
Các nhãn được đặt cạnh lề trái, một số phần mềm soạn và biên dịch
không phân biệt chữ hoa chữ thường của nhãn, tuy nhiên một số phần
mềm khác lại phân biệt chữ hoa chữ thường, vì vậy để thuận tiện về
sau, tên nhãn không nên đặt trùng nhau và thống nhất một kiểu viết
nhãn duy nhất trong chương trình. Ví dụ: không đặt 2 nhãn trong cùng
m
ột chương trình như sau: "Doan1" và "doan1".
Các câu lệnh nên đặt lùi với lề trái một hoặc hai khoảng gõ tab
Phần sau của câu lệnh cách phần đầu câu lệnh một hoặc hai khoảng gõ
tab (Ph
ần trước và sau của câu lệnh bắt buộc phải cách nhau ít nhất
một khoảng trắng).
Ví dụ: Mov (gõ phím Tab) P1,#0FFH
Các chú thích nên cách sau câu lệnh một hoặc hai khoảng gõ tab
Các câu l
ệnh trong chương trình không phân biệt chữ hoa và chữ
thường, do đó khi soạn thảo có thể d
ùng kiểu chữ sao cho phù hợp và dễ
nhận dạng
Ví dụ:
;**<<<<<<==================== đoạn chương tr
ình 1 =====================>>>>**
Di_chuyen:
Mov A,35H ;===>>>> di chuyen du lieu tu 35H vao A
Mov B,20H ;===>>>> di chuyen du lieu tu 20H vao B
Xuat:
Mov P0,A ;===>>>> xuat du lieu tu A ra Port 0
Mov P1,B ;===>>>> xuat du lieu tu A ra Port 1
Cong:
Add A,#20H ;===>>>> cong A voi gia tri 20H
;/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
c.Kết thúc chương trình.
Sau khi chương trình hoàn tất phải kết thúc bằng câu lệnh END .Các
câu l
ệnh này báo cho trình biên dịch biết phần kết thúc của chương trình,
trình biên d
ịch bỏ qua tất cả các câu lệnh sau lệnh END.
d. Qui định về số
Xem qui định này trong bài 2: một số qui ước khi viết số trong chương
trình
4.2 BÀI THỰC HÀNH:
Tên g
ọi cho các bit: mỗi ô nhớ đều có 8 bit, để thuận tiện cho quá trình
hướng dẫn, mỗi bit trong một ô nhớ sẽ được đánh số từ 0 đến 7 sau tên gọi
của ô nhớ đó và được ngăn cách bằng dấu chấm.
Ví dụ:
-Thanh ghi A gồm 8 bit: A.7 A.6 A.5 A.4 A.3 A.2 A.1 A.0 với bit
nhỏ nhất là bit A0
-thanh ghi R1 g
ồm các bit R1.7 R1.6 R1.5 R1.4 R1.3 R1.2 R1.1
R1.0
Để bắt đầu bài thực hành, bạn nên xem lại phần kết nối vi điều khiển
với led trong bài 1
Bài 1: Viết chương trình xuất tín hiệu ở Port 0 và Port 2 để 8 đèn led
sáng v
ới các led được kết nối với Port 0 và Port 2 như sơ đồ dưới
Phân tích: Ở sơ đồ kết nối phần cứng như hình trên, đèn led sáng khi
tín hiệu xuất ra ở mức 1(+5V). Như vậy cần viết chương trình để xuất mức
logic 1 ra Port 0 và Port 2. Sau đây là chương tr
ình
;***************************************************************************************
;**************///// 8 LED SANG \\\\\\
****************************************************
;**
;**////////////////___ lam 8 led o Port 0 va Port 1 sang_________________\\\\\\\\\\\\\\\\\\\\\\\\\\\
;**///////////////___ led sang khi tin hieu xuat o muc 1__________________\\\\\\\\\\\\\\\\\\\\\\\\\
;**//////////////____ phan cung su dung dien tro treo____________________\\\\\\\\\\\\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>
;*****************************************************************************************************
;*************************************************************
***************************************
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
Mov P0,#0FFH ;===>>>> lam cac chan Port 0 xuat ra muc 1
Mov P2,#11111111B ;===>>>> lam cac chan Port 2 xuat ra muc 1
End
+ Khai báo ORG
: dùng để khai báo địa chỉ để bắt đầu lưu chương
trình trên ROM
Ví d
ụ: ORG 0020H
khi có khai báo này, chương trình sẽ được lưu từ ô nhớ ROM
có địa chỉ 0020H trở đi. Trong chương tr
ình không giới hạn số lượng khai
báo ORG.
Khi b
ắt đầu chương trình, Vi điều khiển bắt đầu đọc mã lệnh từ vị trí
đầu ti
ên của bộ nhớ ROM: 000H, sau mỗi lần thực hiện lệnh Vi điều khiển
sẽ tìm đến để lấy lệnh ở vị trí ROM kế tiếp. Nếu có nhiều khai báo ORG, Vi
điều khiển sẽ thực hiện các câu lệnh ở vị trí có địa chỉ thấp trước, nếu muốn
chuyển sang thực hiện chương trình ở vị trí bất kì thì dùng các lệnh nhảy.
+ Hai câu lệnh Mov P0,#0FFH và Mov P2,#11111111B
làm 8 bit c
ủa Port 1 và 8 bit của Port 2 lên mức 1, hai câu lệnh này truyền
cùng một giá trị như nhau, giá trị này có thể viết bằng số hex (số thập lục
phân-câu lệnh trên) hoặc bằng số nhị phân(câu lệnh dưới) đều được. Trong
trường hợp n
ày, ngõ ra quan tâm là giá trị của từng bit, do đó sử dụng số nhị
phân sẽ thuận lợi hơn.
Bài 2: Cho các dãy đèn led có kết nối như trong sơ đồ dưới, các dãy
led n
ày được kết nối với Port 1 và Port 2. Viết chương trình để các led nối
mỗi Port sáng xen kẽ: led 1,3,5,7 sáng; led 2,4,6,8 tắt, các led được đánh số
như sau
led 1 nối với Px.0, led 2 nối với Px.1, lần lượt với các led khác.
Phân tích: Ở sơ đồ kết nối phần cứng như hình trên, đèn led sáng khi tín
hiệu ở ngõ ra ở mức 0(+0V). Như vậy cần viết chương trình để các bit P1.0,
P1.2, P1.4, P1.6 và P2.0, P2.2, P2.4, P2.6 xu
ất tín hiệu ở mức 0 , các bit còn
l
ại xuất ra mức 1. Sau đây là chương trình:
;*************************************************************************************************
;**************///// 8 LED SANG XEN KE \\\\\\
****************************************
;**
;**////////////////___ lam 8 led noi Port 1 va Port 2_________________\\\\\\\\\\\\\\\\\\\\\\\\\\\
;**///////////////___ led sang khi tin hieu xuat o muc 0__________________\\\\\\\\\\\\\\\\\\\\\\\\\
;**//////////////____ led sang xen ke o vi tri le____________________\\\\\\\\\\\\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>
;** \\\\\\\\\\\\ can xuat voi gia tri tren 1 Port la: 01010101b ////////////////
;**\\\\\\\\\\\\\ Duoc viet gon thanh 55H ////////////////
;*****************************************************************************************************
;*****************************************************************************************************
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
Mov P1,#55H ;===>>>> lam tin hieu xuat xen ke tren P1
Mov P2,#01010101B ;===>>>> lam tin hieu xuat xen ke tren P2
End
4.4 GI
ẢI THUẬT VÀ LƯU ĐỒ
Giải thuật là một trình tự thực hiện công việc nào đó.
Lưu đồ l
à sự biểu diễn đồ hoạ của giải thuật.
Lưu đồ chứa các ký hiệu biểu diễn các bước của giải thuật.
Mỗi ký hiệu biểu diễn một hoạt động.
Các ký hiệu được sử dụng trong lưu đồ:
Nhập - Input: tín hiệu vi điều khiển lấy vào để xử lí
Xử lý – Process: quá trình xử lí tín hiệu
Quyết định – Decision: chọn lựa hướng đi phù hợp .
Bắt đầu và Kết thúc – Start and Stop:
Hiển thị - Display/Output: tín hiệu do vi điều khiển xuất ra để điều
khiển thiết bị hiển thị
Gọi chương trình con: gọi chương trình con .
Khi chương trình con được gọi, chương trình chính dừng lại chờ cho
chương tr
ình con thực hiện xong thì chương trình chính mới tiếp tục
thực hiện.
Bắt đầu và Kết thúc chương trình con:
Bài 3: Viết chương trình để các led nối với Port 1 sáng rồi tắt led. Biết
led sáng khi tín hiệu xuất ra ở mức 1. Minh họa trong hình phía dưới
Phân tích: để led sáng rồi tắt, cần làm cho tín hiệu xuất ra mức 1 một
khoảng thời gian để mắt có thể nhận biết được, sau đó làm tín hiệu xuất ra ở
mức 0 một khoảng thời gian như trên. Cứ lặp đi lặp lại đoạn trên sẽ thấy dãy
đèn sáng rồi tắt.
Khi bắt đầu chương trình, P1 được truyền giá trị là #FFH để làm các
ngõ ra c
ủa P1 ở mức 1. Giả sử ta bỏ qua lệnh gọi chương trình con Delay,
công vi
ệc cần thực hiện kế tiếp là làm tín hiệu ở P1 trở về mức 0 để làm led
t
ắt, vì vậy P1 được truyền giá trị là #0H. Các lệnh của vi điều khiển chỉ thực
hiện trong một vài chu kì máy, khoảng vài µs, do đó nếu bỏ qua lệnh gọi
chương tr
ình con Delay thì led sáng sau khoảng vài µs, rồi lại tắt khoảng vài
µs, quá trình sáng t
ắt của led quá nhanh làm mắt người chỉ thấy led sáng liên
t
ục. Muốn mắt người nhận ra led sáng lên rồi tắt đi cần làm tín hiệu xuất ra
P1 lâu hơn. Chương tr
ình con Delay thực hiện nhiệm vụ duy trì trạng thái ở
ngõ ra lâu hơn bằng cách cho vi điều khiển thực hiện hàng ngàn lần các câu
lệnh nào đó không ảnh hưởng đến trạng thái ngõ ra. Khi chương trình chính
g
ặp lệnh gọi chương trình con Delay, chương trình chính sẽ dừng lại chờ cho
chương tr
ình con Delay thực hiện xong rồi mới thực hiện câu lệnh kế tiếp.
Phụ chú: Xem lại về nhãn và chương trình con
Chương trình:
;*******
******************************************************************************************
;**************///// 8 LED SANG SANG TAT \\\\\\
****************************************
;**
;**////////////////___ lam 8 led sang roi tat_________________\\\\\\\\\\\\\\\\\\\\\\\\\\\
;**///////////////___ sang o muc 1 va tat o muc 0__________________\\\\\\\\\\\\\\\\\\\\\\\\\
;**//////////////____ lap di lap lai khong gioi han____________________\\\\\\\\\\\\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>
;****************************************************************************************
;*****************************************************************************************************
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
Tudau:
Mov P1,#11111111B ;===>>>> lam 8 led noi P1 sang
LCall Delay ;===>>>> goi chuong trinh con Delay
Mov P1,#00 ;===>>>> lam 8 led noi P1 tat
LCall Delay
Sjmp Tudau ;===>>>> nhay ve thuc hien tu dau
;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay <<<<<<<<<<<<<<<<<<<<<<<<<<<<
Delay:
Mov R7,#0FFH ;===>>>> ga'n R7=#0FFH, 1 chu ki may
Kt2: Mov R6,#0FFH ;===>>>> ga'n R6=#0FFH, 1 chu ki may
Kt1: Djnz R6,Kt1 ;===>>>> giam R6 xuong 1, R6 khac 0-
>giam tiep,2ckm
Djnz R7,Kt2 ;===>>>> giam R7 xuong 1, R6 khac 0-
> ve Kt2,2ckm
Ret ;===>>>> ket thuc chuong trinh con Delay
;________________________________________________________________________________
End ;===>>>> ket thuc chuong trinh
Chương trình thực hiện, gặp câu lệnh Sjmp Tudau chương trình
s
ẽ nhảy về nhãn Tudau ở đầu chương trình, và chương trình tiếp tục lại từ
đầu, cứ t
hế chương trình lặp lại mãi mãi.
LCall Delay lệnh gọi chương trình con Delay
Chương trình con trong chương trình này được bắt đầu bằng nhãn
Delay:, khi có l
ệnh gọi chương trình con, thì vi điều khiển sẽ chuyển sang
thực hiện các câu lệnh của chương trình con, sau khi chương trình con hoàn
thành, vi điều khiển trở về chương trình chính để thực hiện tiếp.
Lệnh Kt1: Djnz R6,Kt1
L
ệnh Djnz R6,Kt1 này giảm R6 đi một đơn vị, nếu
R6 chưa bằng 0, chương tr
ình lại nhảy về nhãn Kt1, mà nhãn Kt1 lại gọi lại
lệnh này, do đó toàn câu lệnh thực hiện giảm R6 cho đến khi R6 về 0 thì
th
ực hiện lệnh kế tiếp. Câu lệnh này thực hiện, không ảnh hưởng hay thay
đổi giá trị của các ô nhớ khác, vì vậy ngõ ra từ các Port cũng không thay đổi
trạng thái.
Tổng thời gian của chương trình con Delay:
Nếu sử dụng thạch anh 12MHz thì mỗi chu kì máy là 1µs
Lệnh Mov R7,#0FFH thực hiện 1 lần và mất 1 chu kì máy
Lệnh Djnz R6,Kt1 thực hiện 255 lần và mỗi lần mất 2 chu kì
máy
Đoạn lệnh
Kt2: Mov R6,#0FFH
Kt1: Djnz R6,Kt1 ;kí hi
ệu Kt thay cho kiểm tra
Djnz R7,Kt2
Đoạn lệnh này được thực hiện 255 lần với mỗi lần gồm
(255×2)chu kì máy của lệnh Djnz R6,Kt1
và 2 chu kì máy của lệnh Djnz R7,Kt2
và 1 chu kì máy của lệnh Mov R6,#0FFH
Tổng cộng đoạn trên đã thực hiện (1+(255×2)+2)×255)=130815 chu
kì máy
Vậy tổng cộng chương trình con Delay đã thực hiện
130815+1=130816 chu kì máy
t
ức là đã thực hiện trong 130816µs , khoảng thời gian gần bằng 0.13s
Như vậy trong 1s led sáng khoảng 4 lần đủ để mắt người có thể nhận
ra được
Nếu mô phỏng với Pinnacle 52 chương trình delay phải chạy với số lần
lặp lại nhiều hơn để thấy được các trạng thái ngõ ra của các Port, thay đoạn
chương tr
ình con Delay ở trên bằng đoạn chương trình con như dưới đây khi
mô phỏng bằng Pinnacle 52
;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay Pinnacle
52<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Delay:
Mov 70H,#2H ;===>>>> ga'n 70H=#0FFH, 2 chu ki
may
Kt3: Mov 71H,#0FFH ;===>>>> ga'n 71H=#0FFH, 2 chu
ki may
Kt2: Mov 72H,#0FFH ;===>>>> ga'n 72H=#0FFH, 2 chu
ki may
Kt1: Djnz 72H,Kt1 ;===>>>> giam 72H xuong 1, 72H
khac 0-> giam tiep, 2ckm
Djnz 71H,Kt2 ;===>>>> giam 71H xuong 1, khac 0-
> ve Kt2
Djnz 70H,Kt3 ;===>>>> giam 70H xuong 1, khac 0-
> ve Kt3
Ret ;===>>>> ket thuc chuong trinh con
Bài 5: "sáng lần lượt"
Phần cứng: 8 led nối với Port 1, được định vị trí như sau: led 1 nối
với P1.0, lần lượt cho đến led 8 (nối với P1.7). Biết led sáng khi tín hiệu
xuất ở các chân Port 1 ở giá trị 1. Viết chương trình để các led nối với
Port 1 sáng lần lượt từng led từ led 1 đến led 8. Các quá trình trên được
lặp lại không ngừng.
Minh hoạ:
Cách 1: Cách này đơn giản là làm cho các led sáng bằng cách thiết đặt
các giá trị thích hợp cho các bit của Port để làm led sáng theo từng trạng
thái, cách này đơn giản nhưng cần viết d
ài và tốn dung lượng bộ nhớ Rom.
Chương tr
ình
;************************************************************************
*************************
;**************///// LED SANG LAN LUOT -CACH DON GIAN \\\\\\
********************
;**
;**////////////////___ led sang lan luot tu led 1 den led 8-P1___________\\\\\\\\\\\\\\\\\\\\\\\\\\\
;**///////////////___ sang o muc 1 va tat o muc 0__________________\\\\\\\\\\\\\\\\\\\\\\\\\
;**//////////////____ lap di lap lai khong gioi han____________________\\\\\\\\\\\\\\\\\\\\\
;**<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>
;** \\\\\\\\\\\\ nap gia trị cho tung trang thai ////////////////
;*******************************************
**********************************************************
;*****************************************************************************************************
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
[...]... với yêu cầu trên với 8 led, 16 led và 32 led Minh họa với 8 led: Bạn có thể phát triển thêm để khi kết thúc như kiểu " sâu bò tới" hoặc "sâu bò vòng" Bài 14: " Sáng dồn 8 led" Phần cứng: 8 led nối với Port 0 được định vị trí như sau: led 1 nối với P0.0, lần lượt cho đến led 8 (nối với P0.7) Biết led sáng khi tín hiệu xuất ở mức 1.Viết chương trình để các led nối với Port 0 sáng dồn từ led 1 đến led. .. với P0.0, lần lượt cho đến led 32 (nối với P3.7), các led được xếp thẳng hàng với nhau Biết led sáng khi tín hiệu xuất ở mức 1 Viết chương trình để led sáng theo minh hoạ sau đây Minh hoạ: Dạng 1: "sâu bò" đơn giản Chú ý: Lúc nào cũng có 8 led được bật sáng Các quá trình được lặp lại không giới hạn Khi hoạt động, các led sáng tắt thành một vệt sáng có chiều dài bằng 8 led, di chuyển từ led. .. Sáng dần 8 led" Phần cứng: 8 led nối với Port 0 được định vị trí như sau: led 1 nối với P0.0, lần lượt cho đến led 8 (nối với P0.7) Biết led sáng khi tín hiệu xuất ở mức 1.Viết chương trình để các led nối với Port 0 sáng dần từ led 1 đến led 8 sau đó tắt hết led và lặp lại Các quá trình được lặp lại không giới hạn Minh hoạ: Cách 1: Cách này đơn giản là làm cho các led sáng bằng cách thiết đặt các giá... trình led di chuyển theo chiều ngược lại Bài 8: Bài tập tự giải Phần cứng: 8 led nối với Port 2, được định vị trí như sau: led 1 nối với P2.0, lần lượt cho đến led 8 (nối với P2.7) Biết led sáng khi tín hiệu xuất ở các chân Port 1 ở giá trị 1 Viết chương trình để các led nối với Port 1 sáng theo kiểu tăng nhị phân Các quá trình trên được lặp lại không giới hạn Bài 9: " Sáng dần 8 led" Phần cứng: 8 led. .. lượt cho đến led 32 (nối với P3.7) Biết led sáng khi tín hiệu xuất ở giá trị 1.Viết chương trình để các led nối với Port 0,1,2,3 sáng lần lượt từng led từ led 1 đến led 32 Các quá trình được lặp lại không giới hạn Minh hoạ: Cách 1: Cách này cũng như cách 1 trong bài 5, làm cho các led sáng bằng cách thiết đặt các giá trị thích hợp cho các Port để làm led sáng theo từng trạng thái, cách này đơn giản nhưng... Mov P1,#01000000B LCall Delay Mov P1,#10000000B LCall Delay Sjmp Xuat ;===>>>> lam 8 led noi P1 tat ;===>>>>goi chuong trinh con Delay ;===>>>> lam led 1 sang ;===>>>> lam led 2 sang ;===>>>> lam led 3 sang ;===>>>> lam led 4 sang ;===>>>> lam led 5 sang ;===>>>> lam led 6 sang ;===>>>> lam led 7 sang ;===>>>> lam led 8 sang ;===>>>> nhay ve thuc hien tu dau ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay... OR R3 với 30H rồi xuất ra P0 sẽ thấy 1 led sáng di chuyển từ led 1 đến led 8 Khi vị trí sáng đến led thứ 8 vi điều khiển lưu lại giá trị của P0 vào 30H Trong quá trình hai: bit mang giá trị 1 trên R3 vẫn xoay, lúc này 30H có bit 30H.7 đang ở giá trị 1 tức là 30H đang mang giá trị #10000000B,nên khi OR R3 với 30H rồi xuất ra P0 sẽ thấy led 8 sáng cố định, trong lúc đó có 1 led sáng di chuyển từ led 1... ;===>>>> lam led 1 sang LCall Delay Mov P2,#00000010B ;===>>>> lam led 2 sang LCall Delay Mov P2,#00000100B ;===>>>> lam led 3 sang LCall Delay Mov P2,#00001000B ;===>>>> lam led 4 sang LCall Delay Mov P2,#00010000B ;===>>>> lam led 5 sang LCall Delay Mov P2,#00100000B ;===>>>> lam led 6 sang LCall Delay Mov P2,#01000000B ;===>>>> lam led 7 sang LCall Delay Mov P2,#10000000B ;===>>>> lam led 8 sang LCall... Delay Mov P1,#00000100B ;===>>>> lam led 3 sang LCall Delay Mov P1,#00001000B ;===>>>> lam led 4 sang LCall Delay Mov P1,#00010000B ;===>>>> lam led 5 sang LCall Delay Mov P1,#00100000B ;===>>>> lam led 6 sang LCall Delay Mov P1,#01000000B ;===>>>> lam led 7 sang LCall Delay Mov P1,#10000000B ;===>>>> lam led 8 sang LCall Delay ;**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> lam led P2 sang . xen kẽ: led 1,3,5,7 sáng; led 2,4,6,8 tắt, các led được đánh số
như sau
led 1 nối với Px.0, led 2 nối với Px.1, lần lượt với các led khác.
Phân tích: Ở. Sáng dần 8 led& quot;
Phần cứng: 8 led nối với Port 0 được định vị trí như sau: led 1 nối
với P0.0, lần lượt cho đến led 8 (nối với P0.7). Biết led sáng