SlideShare a Scribd company logo
1 of 66
https://www.maudon.vn/
BỘ CÔNG NGHIỆP
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ

Đồ Án Tốt nghiệp
Đề Tài:
LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
PHẦN I
TỔNG QUAN về ĐỀ TÀI
I. ĐẶT VẤN ĐỀ:
Ngày nay, những ứng dụng của Vi điều khiển đã đi sâu vào đời sống sinh hoạt và
sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân dụng hiện nay
đều có sự góp mặt của Vi Điều Khiển và vi xử lí . Ứng dụng vi điều khiển trong thiết kế
hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn
định của thiết bị và hệ thống.Trên thị trường có rất nhiều họ vi điều khiển: họ 8051 của
Intel, 68HC11 của Motorola, Z80 của hãng Zilog, PIC của hãng Microchip, H8 của
Hitachi,vv…
Việc phát triển ứng dụng các hệ vi xử lý đòi hỏi những hiểu biết cả về phần cứng
cũng như phần mềm, nhưng cũng chính vì vậy mà các hệ vi xử lý được sử dụng để giải
quyết những bài toán rất khác nhau. Tính đa dạng của các ứng dụng phụ thuộc vào việc
lựa chọn các hệ vi xử lý cụ thể cũng như vào kỹ thuật lập trình.
Ngày nay các bộ vi xử lý có mặt trong rất nhiều thiết bị điện tử hiện đại: từ đầu
đĩa CD, máy thu hình, máy ghi hình, dàn âm thanh HiFi, bộ điều khiển lò sưởi cho đến
các thiết bị điều khiển dùng trong công nghiệp. Lĩnh vực ứng dụng của các hệ vi xử lý
cũng rất rộng lớn: từ nguyên cứu khoa học, truyền dữ liệu, đến công nghiệp, năng lượng,
giao thông và y tế…
Tùy theo kinh nghiệm và mức độ thông thạo mà chúng ta có thể sử dụng các ngôn
ngữ khác ngoài hợp ngữ như: C, C++, Visual basic để có những chương trình chất lượng
cao hơn.
II. NỘI DUNG CỦA ĐỀ TÀI:
✓ Sơ lược về vi điều khiển AT89C51.
✓ Khảo sát vi điều khiển AT89C2051 của hãng ATMEL.
• Gồm sơ đồ chân linh kiện.
• Sơ đồ khối của AT89C2051.
• Các nội dụng ứng dụng của AT89C2051.
✓ Giới thiệu phần mềm Keil Software µViSion 2
✓ Ứng dụng ngôn ngữ C và Assembly điều khiển lập trình led.
• Ứng dụng cho led đơn, led 7 đoạn, led ma trận…
✓ Kết luận và hướng phát triển của đề tài.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
PHẦN II
NỘI DUNG ĐỀ TÀI
CHƯƠNG 1: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 và 89C51
I.GIỚI THIỆU BỘ VI ĐIỀU KHIỂN89C2051
I.1 CÁC ĐẶCĐIỂM
✓ Tương thích với các sản phẩm của họ MSC-51.
✓ 2K byte bộ nhớ Flash lập trình được.
✓ Khả năng :1000 chu kì ghi/xóa.
✓ Tầm điện áp hoạt động từ 2,7 V đến 6V
✓ Tầm tần số hoạt động từ 0 Hz đến 21 MHz
✓ 2 mức khóa bộ nhớ chương trình (program memory).
✓ RAM bên trong (internal RAM) có dung lượng 128 x 8 bit.
✓ 15 đường I/O lập trình được.
✓ 2 bộ định thời /đếm 16 bit.
✓ 6 nguồn (nguyên nhân ) ngắt.
✓ Kênh nối tiếp UART lập trình được.
✓ Các ngõ ra kích LED trực tiếp.
✓ Mạch so sánh tương tự trên chip (on-chip analog comparator).
✓ Các chế độ nghỉ công suất thấp và chế độ giảm công suất.
I.2 MÔ TẢ
Chip AT89C2051 là chip vi điều khiển CMOS 8 bit điện áp thấp, hiệu suất cao có 2K
byte bộ nhớ Flash chỉ đọc, xóa được và lập trình được PEROM (Flash programmable and
erasable readonly memory). Linh kiện này được sản xuất bằng cách sử dụng công nghệ bộ nhớ
không thay đổi mật độ cao của Atmel và tương thích với tập tệp của MCS-51 chuẩn công
nghiệp. Bằng cách kết hợp một CPU 8-bit đa năng và linh hoạt với Flash trên chip đơn tinh thể ,
Atmel AT89C2051 là chip vi điều khiển mạnh cung cấp giải pháp linh động cao và mang lại
hiệu quả về giá thành cho nhiều ứng dụng điều khiển nhúng (embedded control application).
AT89C2051 cung cấp các đặc tính chuẩn sau đây : bộ nhớ Flash 2K byte , 128 byte
RAM , 15 đường I/O, 2 bộ định thời/đếm 16-bit , kiến trúc ngắt hai mức 5 vector, port nối tiếp
hoàn toàn song công , mạch so sánh tương tự chính xác, mạch dao động và tạo xung clock trên
chip . Ngoài ra AT89C2051 được thiết kế có mạch logic tĩnh cho hoạt động giảm đến tần số 0
Hz và hỗ trợ 2 chế độ tiết kiệm công suất lựa chọn được bằng phần mềm.
Chế dộ nghĩ ( idle mode ) sẽ dùng CPU nhưng vẫn cho phép RAM, các bộ định
thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ giảm công suất duy trì nội
dung của RAM nhưng làm dừng mạch dao động, không cho phép mọi chức năng khác của chip
hoạt động cho đến lần reset cứng kế tiếp (nghĩa là ta thiết lập lại trạng thái ban đầu [reset] cho
chiop bằng mạch điện bên ngoài).
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
I.3 CẤU HÌNH CHÂN
Hình1.1
I.4 SƠ ĐỒKHỐI
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Hình1.2
✓RAM ADDR. REGISTER: thanh ghi địa chỉ RAM .
✓RAM: vùng nhớ truy cập ngẫu nhiên (RAM).
✓FLASH: vùng nhớ FLASH.
✓B REGISTER:thanh ghi B.
✓ACC: thanhchứa.
✓STACK POINTER: con trỏ vùng nhớ xếp chồng.
✓PROGRAM ADDRESS REGISTER: thanh ghi địa chỉ chương trình.
✓TMP1: thanh ghi tạm 1
✓TMP2: thanh ghi tạm 2
✓ALU: đơn vị số học/logic.
✓BUFFER:bộđệm.
✓PC INCREMENTER: bộ tăng thanh ghi đếm chương trình PC.
✓INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các khối ngắt, port nối tiếp
và định thời.
✓PROGRAM COUNTER: bộ đếm chương trình PC.
✓PSW: từ trạng thái chương trình .
✓TIMING AND CONTROL:mạch logic điều khiển và định thời.
✓INSTRUCTIONREGISTERED:thanhghilệnh.
✓DPTR: con trỏ dữ liệu .
✓PORT1 LATCH: bộ chốt port 1.
✓PORT3 LATCH: bộ chốt port 3.
✓ANALOG COMPARTOR:bộ so sánh tương tự .
✓OSC:mạchdaođộng.
✓PORT 1 DRIVERS: các mạch kích port 1.
✓PORT 3 DRIVERS: các mạch kích port 3.
I.5 MÔ TẢCHÂN
VCC
Chân cấp điện áp Vcc cho chip.
GND
Chân nốiđất.
Port 1
Port 1 là port I/O (port nhập/xuất: input/output port) hai chiều 8-bit. Các chân của port từ
P1.2 đến P1.7 cung cấp các mạch kéo lên bên trong (internal pull-ups). Các chân P1.0 và P1.1
yêu cầu các mạch kéo lên bên ngoài . P1.0 và P1.1 cũng còn được sử dụng làm ngõ vào dương
(AIN0) và ngõ vào âm (ÁIN), theo thứ tự, của mạch so sánh tương tự chính xác trên chip (on –
chip precision analog comparator).
Các mạch đệm ngõ ra (output buffer) của port 1 có thể hút dòng 20mA và kích trực tiếp
các bộ hiện thị LED. Khi các logic 1 được ghi đến các chân của port 1, các chân này có thể được
sử dụng làm các ngõ vào. Khi các chân từ P1.2 đến P1.7 được sử dụng làm các ngõ vào và được
kéo xuống mức thấp từ bên ngoài, chúng sẽ cung cấp dòng (IIL) do các mạch kéo lên bên trong.
Port 1 cũng nhận dữ liệu chương trình hay dữ kiệu mã (code data) trong thời gian lập trình
và kiểm tra bộ nhớ Flash.
Port 3
Các chân của port 3 từ P3.0 đến P3.5, P3.7 là chân I/O hai chiều với các mạch kéo lên bên
trong. P3.6 được nối dây cứng làm ngõ vào nối đến ngõ ra của mạch so sánh trên chip và không
thể truy cập như một chân I/O có mục đích tổng quát. Các mạch đệm ngõ ra của port 3 có thể hút
dòng 20mA.Khi các logíc được ghi đến các chân của port 3, các chân này được kéo lên mức cao
bởi các mạch kéo lên bên trong và có thể được sử dụng làm các ngõ vào. Khi là các ngõ vào, các
chân nào của port 3 được kéo xuống mức thấp bởi mạch bên ngoài sẽ cung cấp dòng (IIL) do các
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
mạch kéo lên. Các chân của port 3 còn được sử dụng cho các chức năng đặc biệt khác của
AT89C2051 như được liệt kê dưới đây ( bảng 11,1). Port 3 cũng nhận một số tín hiệu điều khiển
để lập trình và kiểm tra bộ nhớ Flash.
Bảng 1.1
RST
Ngõ vào reset (thiết lập lại trạng thái ban đầu). Tất cả các chân I/O được reset đến mức
logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ máy trong
khi mạch dao động đang hoạt động sẽ reset chip.
XTAL 1
Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock bên
trong.
XTAL 2
Ngõ ra từ mạch khuếch đại dao động đảo.
I.6 CÁC ĐẶC TÍNH CỦA MẠCH DAO ĐỘNG.
XTAL 1 và XTAL 2 là ngõ vào và ngõ ra, theo thứ tự, của
mạch khuếch đại đảo có thể được cấu hình để trở thành mạchdao
động trên chip như được trình bày ở hình 1.3. Một tinh thể thạch
anh hoặc mạch cộng hưởng gốm đều có thể sử dụng được. Để kích
chip từ nguồnxung clock bên ngoài, chân XTAL 2 sẽ không kết
nối trong khi chân ATAL 1 được kích như được trình bày ở hình
1.4. Không có yêu cầu nào về chu kỳ nhiệm vụ (duty cycle) của
tín hiệu xung clock bên ngoài vì ngõ vào đến mạch vì ngõ vào đến
mạch tạo xung clock bên trong sẽ đi qua một flipflop làm nhiệm
vụ chia 2 tần số, nhưng các đặc tính về điện áp tối thiểu và tối đa
của mức cao và mức thấp phải được xemxét.
Hình 1.3 các kết nối của mạch dao động.
Lưu ý: C1,C2=30pF  10pF đối với các thạch anh ; C1,C2=40pF  10pF đối với các bộ
cộng hưởng gốm.
Hình 1.4: Cấu hình kích xung clock bên ngoài.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
I.7CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR
Bảng 1.2 Các giá trị khi reset và bản đồ các SFR của AT89C2051
Một bản đồ vùng nhớ trên chip được gọi là không gian thanh ghi chức năng đặc biệt SFR
(special function registor) được trình bày ở bản trên đây (bảng 1.2). Lưu ý rằng không phải tất cả
địa chỉ đều bị chiếm bởi các thanh ghi này, các địa chỉ không bị chiếm có thể không được thực
hiện trên chip. Các truy cập đọc đến các địa chỉ này trong trường hợp tổng quát, sẽ trả về dữ liệu
ngẫu nhiên và các truy cập ghi sẽ có tác động không rõ ràng.
Phần mêm của người sử dụng không nên ghi các logic 1 đến các vị trí nhớ không được liệt
kê vì chúng có thể được sử dụng trong các sản phẩm tương lai để đáp ứng các đặt tính mới.
Trong trường hợp đó, các giá trị do reset hoặc các giá trị không tích cực của các bit mới sẽ luôn
luôn bằng 0.
I.8 CÁC GIỚI HẠN TRÊN MỘT SỐ LỆNH
AT89C2051 là một thành viên tiết kiệm và có hiệu quả về giá thành của họ vi đièu khiển
đang phát triển của Atmel. Chip này chứa 2K bộ nhớ chương trình Flash. Chip này hoàn toàn
tương thích với kiến trúc MCS-51và có thể được lập trình bằng cấch sử dụng tập lệnh MCS-51.
tuy nhiên, có vài cân nhắc mà ta ohải chú ý khi sử dụng một số lập trình của chip này.
Tất cả các lệnh liên quan đến các hoạt động nhảy và rẽ nhánh sẽ bị giới hạn, chẳn hạn như địa
chỉ đíh rơi vào trong không gian nhớ của chip, không gian này là 2K byte với AT89C2051. Vấn
đề này là trách nhiệm của nguowif lập trình phầnmềm.
Thí dụ, lệnh LJMP 7E0H sẽ là lệnh hợp lệ đối với AT89C2051 (có 2K byte bộ nhớ chương
trình)trong khi đó lệnh LJMP 900H là lệnh không hợplệ.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Các lệnh rẽ nhánh
LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các lệnh rẽ nhánh không điều
kiện này sẽ thực thi đúng miễn là người lập trình lưu ý rằng địa chỉ đích rẽ nhánh phải nằm trong
giới hạn vật lý của kích thước bộ nhớ chương trình (các vị trí nhớ từ 00H đến 7FFH đối với
AT89C2051). Việc vi phạm các giới hạn khong gian vật lý có thể gây ra hành vi không biết
được của chương trình
CJNE [. . . ], DJNZ [. . . ], JB, JNB, JC, JNC, JBC, JZ, JNZ - Với các lệnh rẽ nhánh có
điều kiện này, các quy luật giống như ở trên cũng được áp dụng. Một lần nữa, việc vi phạm các
giơis hạn bộ nhớ vật lý sẽ làm cho chương trình thực hti không đúng.
Đối với các ứng dụng bao gồm các cách ngắt, các vị trí địa chỉ của chương trình phục vụ ngắt
(interrupt service rountine) bình thường của cấu trúc họ 89C2051 được bảo toàn.
Các lệnh liên quan đến MOVX, bộ nhớ dữ liệu
AT89C2051 chứa 128 byte bộ nhớ dữ liệu bên trong (intenal data memory). Như vậy
trong AT89C2051,kích thước của bộ xếp chồng (stack depth) được giới hạn tới 128 byte, đay là
dung lượng của RAM có sẳn. Việc truy cạp bộ nhớ bên ngoài không được hỗ trợ trong chip này
và việc thưc thi chương trình bên ngoài cũng không được hỗ trợ.
Như vậy không có lệnh MOVX [. . . ] nào chứa trong chương trình.
Một trình dịch hợp ngữ (assembler) điển hình của 89C51 vẫn dịch các lệnh này,ngay cả
khi chúng được viết dưới dạng vi phạm các giới hạn đã đề cập ở trên. Người sử dụng bộ vi điều
khiển phải có trách nhiệm phải biết các tính chất vật lý và giới hạn của linh kiện đang được sử
dụng và điều chỉnh các lệnh được sử dụng một cách thích hợp.
Các giới hạn trên đây cho ta thấy các khuyết điểm của At89C2051.
I.9 CÁC BIT KHOÁ BỘ NHỚ CHƯƠNG TRÌNH
Với chip AT89C2051 ta có 2 bit khoá (lock bit), các bit này có thể để lại không lập trình
(U) hoặc có thể lập trình (P) đẻ nhận thêm được các tính chất được liệt kê ở bảng 11.3.
Các bit khoá chương trình
LB1 LB2
Loại bảovệ
1 U U Không có tính chất khoá chương trình.
2 P U Việc lập trình thêm nữa cho bộ nhớ Flash bị cấm.
3 U U Tương tự chế độ 2, việc kiểm tra cũng bị cấm.
Lưu ý: các bit khoá chỉ có thể bị xoá bằng thao tác xoá chip
Bảng 1.3:Các chế độ bảo vệ của bit khoá.
I.10 CHẾ ĐỘNGHỈ
Trong chế đọ nghỉ CPU sẽ tự ngủ, trong khi tất cả các ngoại vi khác trên chip điều hoạt
động và điều duy trì trạng thái ở chế độ tích cực. Chế đọ này được yêu cầu bởi phần mềm. Nội
dung của RAM trên chip và tất cả tren các thanh ghi chức năng đặc biệt điều giữ nguyên không
thay đổi trong thời gian ở chế độ này. Chế độ nghỉ có thể được kết thúc bởi cách ngắt bất kì được
phép hoăc bằng cách reset phần cứng.
Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên
bên ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài.
Cũng cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip sẽ tiếp tục
thực thi chương trình bình thường từ nơi chương trình bị rời bỏ, đến 2 chu kỳ máy trước giải
thuật reset bên trong lấy quyền điều khiển. Phần cứng trên chip ngăm cản việc truy cập đến
RAM bên trong ở chế độ này nhưng không cấm việc truy cập đến cá chân của port. Để laọi bỏ
khả năng có một thao tác không mong đợi đến một chân của port khi chế độ nghỉ được kết thúc
bằng reset, lẹnh theo sau lệnh yêu cầu chế nghỉ sẽ không thể là lệnh ghi đến một chân port hoặc
bộ nhớ ngoài.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
I.11 CHẾ ĐỘ GIẢM CÔNG SUẤT
Trong chế độ giảm công suất, mạch dao động bị dừng và lệnh yêu cầu chế độ giảm công
suất là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi chức năng đặc biệt giữ lại
các giá trị của chúng cho đén khi các chế độ giảm công suất được kết thúc.Lối thoát duy nhất ra
khỏi chế độ giảm công suất là sử dụng reset cứng. Reset sẽ định nghĩa lại các thanh ghi chuacứ
năng đặc biệt nhưng không làm thay đổi Ram trên chip. Reset không nên được kích hoạt trươc
khi điện áp VCC được khôi phục đến mức hoạt động bình thường và reset phải duy trì tích cực đủ
lâu để cho phép mạch hoạt động trở lại và trở nên ổnđịnh.
Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên bên
ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài.
I.12 LẬP TRÌNH FLASH
AT89C2051 trên thị trường có dải nhớ chương trình PEROM trên chip la 2K byte ở
trạng thái đã được xóa (nghĩa là toàn bộ nội dung của các byte là FFH) và sẳn sàng được lập
trình. Dải nhớ chương trình được lập trình một byte cho mỗi thời điểm. Một khi dãi này đã được
lập trình, để lập trình lại bất kì byte nào không trống, toàn bộ dải nhớ được xóa bằng điện.
Bộ điếm địa chỉ bên trong
AT89C2051 có một bộ đếm địa chỉ PEROM bên trong, bộ đếm này luôn luôn được thiết
lập là 00H ở cạnh lên của RST và được tăng lên bằng cách áp dụng xung đang trở thành mức
dương (positve going pluse) đến chân XTAL1.
Giải thuật chương trình
Để lập trình AT89C2051, theo trình tự sau đây.
1. Trình tự cấpđiện:
Cấp điện giữa các chân VCC và GND
Thiêt lập RST và XTLA1 đến mức thấp (GND)
2. Thiết lâp RST lên mức cao (‘H’)
Thiết lập chân P3.2 lên mức cao (‘H’)
3. Áp dụng tổ hợp các mức logic ‘H’ và ‘L’ thích hợp đên các chân P3.3, P3.4, P3.5 và P3.7 để
chọn 1 trong các thao tác lập trình được trình bày trong bảng các chế độ lập trình PEROM
(PEROM proramming modes table).
Để lập trình và kiểm tra dải nhớ chương trình:
4. Đặt dữ liệu của byte chhương trình ( hay còn gọi là byte mã) ở vị trí 00h đến các chân từ P1.0
đếnP1.7.
5. Tăng RST lên 12V để cho phép lập trình.
6. Đưa một xung đến chân P3.2 để lập trình một byte trong dải PEROM hoặc các bit khóa. Chu
kỳ ghi byte được tự định thời và điển hình chiếm1.2ms.
7. Để kiểm tra dữ liệu đã lập trình, giảm thấp RST từ 12V xuống mức logic cao ‘H’ và thiết lập
các chân từ P3.3 đến P3.7 đến các mức logic thích hợp. Dữ liệu xuất có thể được đọc ở các chân
của port 1.
8. Để lập trình một byte ở vị trí địa chỉ kế tiếp, đưa một xung đến XTAL1 để tăng bộ đếm địa
chỉ bên trong (internal address counter). đặt dữ liệu mới đến các chân của port 1.
9. Lập lại các bước từ 6 đến 8, thay đổi dữ liệu và tăng bộ đếm địa chỉ cho toàn bộ dải byte
hoăc cho đến khi kết thúc tập tin đối tượng (objectfile).
10.Trình tự ngắt nguồn điện.
Thiết lập XTLA1 đến mức thấp (‘L’)
Thiết lập RST đến mức thấp (‘L’)
Tắt nguồn cấp điện cho VCC.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Data Polling: AT89C2051 có Data Polling để chỉ ra việc kết thúc một chu kỳ ghi.
Trong thời gian của một chu kỳ ghi, việc thử đọc byte sau cùng được ghi sẽ dẫn đến việc lấy bù
dữ liệu được ghi trên chân P1.7. Một khi chu kỳ ghi đã kết thúc, dữ liệu sẽ có hiệu lực trên tất cả
các ngõ ra và chu kỳ kế tiếp có thể bắt đầu. Data Polling có thể bắt đầu bất cứ lúc nào sau khki
một chu kỳ ghi được khởi động.
Ready/Busy: Tiến trình lập trình byte cũng có thể giám sát bằng tín hiệu ngõ ra RDY/
BSY. Chân P3.1 được kéo xuống mức thấp sau khi chân P3.2 trở thành mức cao trong thời gian
lập trình sẽ chỉ ra trạng thái bận (BUSY).
Chân P3.1 được kéo lên mức cao lấn nữa khi việc lập trình kết thúc sẽ chhỉ ra trạng thái
sẳn sàng (READY).
Program verify ( kiểm tra chưong trình ): Nếu các bit khóa LB1 và LB2 đã không được
lập trình, dữ liệu chương trình có thể đọc ngược về thông qua các đường dữ liệu để kiểm tra:
1. Reset bộ đếm địa chỉ bên trong về 00H để mang RST từ ‘L’ lên ‘H’.
2. Đặt các tín hiệu thích hợp để đọc dữ liệu chương trình và đọc dữ liệu ngõ ra ở các chân của
port 1.
3. Đưa một xung đến chân XTAL 1 để tăng bộ đếm địa chỉ bên trong.
4. Đọc byte dữ liệu kế tiếp ở các chân của port 1.
5. Lập lại các bước 3 và 4 cho đến khi toàn bộ dải nhớ chương trình được đọc.
Các bit khóa khong thể được kiểm tra trực tiếp. Việc kiểm tra các bit khóa sẽ nhận được bằng
cách tuân theo các tính chất được cho phép củachúng.
Chip erase (xóa chip): Toàn bộ dải PEROM (2K byte) và hai bit khóa đựơc xóa bằng
điện bằng sử dụng tổ hợp thích hợp các tín hiệu điều khiển và bằng cách giữ cho chân P3.2 ở
mức thấp trong 10ms. Dải nhớ chương trinhd được ghi với tất cả các bit điều là 1 trong thao tác
xóa chip va phải được thực hiện trước khi bất kỳ byte nhớ không trống nào có thể được lập trình
lại.
Reading the signature bytes (đọc các byte chữ ký ): Các byte chữ ký được đọc với cùng
thủ tục như viêc kiểm tra bình thường các vị trí nhớ 000H, 001H, 002H, ngoại trừ các chân P3.3
và chân P3.5 phải được kéo xuống mức logic thấp. Các giá trị được trả về như sau:
(000H) = 1EH chỉ ra được sản xuất bởi Atmel.
(001H) = 21H chỉ ra 89C2051.
I. 3CÁC CHẾ ĐỘ LẬP TRÌNH FLASH
Các chế độ lập trình Flash được tóm tắt ở bảng 1.4.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Lưu ý: 1. Bộ đếm địa chỉ PEROM bên trong được reset về 000H ở cạnh lên của RST và được
tăng bởi xung dương ở chân XTAL 1.
2. việc xóa chip yêu cầu xung PROG kéo dài 10ms.
3. Chân P3.1 được kéo xuống mức thấp trong thời gian lập trình để chỉ ra RDY/BSY
Write code data: ghi dữ liệu chương trình.
Read code data: đọc dữ liệu chương trình.
Write lock : ghi các bitkhóa.
Chip erase : xóa chip.
Read signature byte : đọc byte chữ ký
SEE FLASH PROGRAMMING MODE TABLE:xem bảng chế độ lập trình Flash.
PGM DATA: dữ liệu chương trình.
TO INCREMENT ADDRESS COUTER: để tăng bộ đếm địa chỉ.
I.14 CÁC ĐẶC ĐIỂM LẬP TRÌNH FLASH
Ký
hiệu
Thông số Min Max
Đơn
vị
VPP Điện áp cho phép lập trình. 11.5 12.5 V
IPP Dòng điện cho phép lập trình. 250 µA
tDVGL Thời gian từ lúc dữ liệu đến khi PROG ở mức thấp. 1.0 µs
tGHDX Thời gian giữ dữ liệu sau khi PROG tích cực. 1.0 µs
t EHSH Thời gian P3.4 ( NABLE ) từ ‘H’ lên VPP. 1.0 µs
tSHGL Thời gian từ lúc thiết lập VPP đến khi PROG ở mức thấp. 10 µs
tGHSL Thời gian giữa VPP sau khi PROG tích cực. 10 µs
tGLGH Độ rộng của PROG. 1 110 µs
tELQV Thời gian từ lúc ENABLE ở mức thấp cho đến khi dữ liệu có 1.0 µs
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
hiệulực.
tEHQZ Thời gian thả nổi dữ liệu sau khi ENABLE tích cực. 0 1.0 µs
tGHBL Thời gian từ khi PROG ở mức cao cho đén khi BUSY o mức
thấp.
50 ns
tWC Thời gian của chu kỳ ghi byte. 2.0 ms
tBHIH Trì hoãn từ RDY/BSY đến khi clock tăng. 1.0 µs
tHIL Thời gian c0lock ở mức cao. 200 ns
Bảng 11.5 Các đặt điểm lập trình và kiểm tra Flash.
TA = 00C đến 700 C, VCC = 5.0 ± 10%.
Chỉ sử dụng ở chế độ lập trình 12 V.
I.15 CÁC ƯỚC LƯỢNG CỰC ĐẠI TUYỆT ĐỐI
Tầm nhiệt độhoạt động: từ -550C đến +1250C.
Tầm nhiệt độtích trữ: từ -660C đến +1500C.
Điện áp trên bất kì chân nào so với đất (GND): -1.0 V đến +7 V.
Điện áp cấp điệncực đại: 6.6 V.
Dòng DC ngõ ra: 25.0 mA.
CÁC DẠNG SÓNG LẬP TRÌNH VÀ KIỂM TRA FLASH
Hình 1.5 Các dạng sóng lập trình và kiểm tra Flash.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
DẠNG SÓNG MẠCH KÍCH XUNG CLOCK BÊN NGOÀI
Hình 1.6:Dạng sóng mạch kích xung clock bên ngoài.
MẠCH KÍCH XUNG CLOCK BÊN NGOÀI
Ký hiệu Thông số VCC=2.7V đến6.0V
Min Max
VCC=4.0V đến6.0V
Min Max
Đơn vị
1/tCLCL Tần số daođộng. 0 12 0 24 MHZ
tCLCL Chu kỳ xung clock. 83.3 41.6 ns
tCHCX Thời gian mức cao. 30 15 ns
tCLCX Thời gian mức thấp. 30 15 ns
tCLCH Thời gian tăng (cạnh lên). 20 20 ns
tCHCL Thơi gian giảm (cạnh xuống). 20 20 ns
Bảng 1.5 Các thông số của mạch kích xung clock bên ngoài.
ĐỊNH THỜI PORT NỐI TIẾP: ĐIỀU KIỆN KIỂM TRA CHẾ ĐỘ THANH GHI DỊCH
VCC = 5.0 ± 20%; điện dung tải = 80 pF.
Ký
hiệu
Thông số Dao động 12 MHZ
Min Max
Dao động thayđổi
Min Max
Đơn
vị
Thời gian chu kỳ xung clock port
nối tiếp.
1.0 12tCLCL µs
Thời gian từ lúc thiết lập dữ liệu
xuất đến cạnh lên của xung clock
700 10tCLCL
– 133
ns
Thời gian giữ dữ liệu xuất sau cạnh
lên của xung clock.
50 2tCLCL –
177
ns
Thời gian giữ dữ liệu nhập saucạnh
lên của xung clock
0 0 ns
Thời gian từ cạnh lên xung clock
đến khi dữ liệu nhậpcó hiệu lực.
700 10tCLCL
– 133
ns
Bảng 1.6 Các điều kiện kiểm tra chế độ định thời thanh ghi dịch
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
CÁC DẠNG SÓNG ĐỊNH THỜI CHẾ ĐỘ THANH GHI DỊCH
Hình 1.7 Dạng sóng định thời chế độ thanh ghi dịch.
DẠNG SÓNG NGÕ VÀO/NGÕ RA KIỂM TRA AC1
Hình 1.8:Dạng sóng ngõ vào/ngõ ra kiểm tra AC.
Lưu ý: 1. Các ngõ vào AC trong thời gian kiểm tra được kích ở (VCC – 0.5) V đối với logic 1 và
0.45 V đối với logic 0. Các phép đo định thời được thực hiện ở VIHmin đối với logic 1và VILmax
đối với logic0.
DẠNG SÓNG THẢ NỔI1
Hình 1.9 Dạng sóng thả nổi.
Timing reference points: các điểm tham chiếu định thời.
Lưu ý: 1. Đối với mục đích định thời, một chân port sẽ không còn thả nổi kho có sự thay đổi
100mV từ điện áp trên tải. Một chân port bắt đầu thả nổi khi có sự thay đổi 100mV từ mức
VOH/VOL (có tải).
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
ICC Ở CHẾ ĐỘ TÍCH CỰC
Hình 1.10: ICC ở chế độ tích cực.
ICC Ở CHẾ ĐỘ NGHỈ VÀ CHẾ ĐỘ GIẢM CÔNG SUẤT
Hình 1.11: (a) ICC ở chế độ nghỉ ,(b) ICC ở chế độ giảm công suất.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Packaging Information
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
II.Giới thiệu về Vi Điều Khiển AT89C51
❖ MSC51 là một họ Vi Điều Khiển (Microcontroller) do hãng Intel sản
xuất.Các IC của họ MSC51 tiêu biểu là 8051 và 8031. Đặc biệt, vi điều
khiển 89C51 sản xuất gần đây mang các đặc điểm sau:
✓ 4Kbytes EEPROM.
✓ 128 bytes RAM.
✓ 4 Port I/O (Input/Output).
✓ 2 bộ định thời Timer 16 bits.
✓ Giao tiếp nối tiếp.
✓ 64Kbytes không gian bộ nhớ chương trình mở rộng.
✓ 64Kbytes không gian bộ nhớ dữ liệu mở rộng.
✓ Một bộ xử lý luận lí (thao tác trên các bits đơn).
✓ 210 bits được địa chỉ hóa.
✓ Bộ nhân chia 4µs.
❖ HỆ THỐNG GIAO TIẾP PORT.
• Port 0: port 0 là một port hai chức năng trên các chân 32-39.
Hãy nhớ rằng : trên các chân này chưa có điện trở kéo dương, do đó khi
cần chúng ta cần nhớ đến đặc điểm này.
• Port 1: port 1 là một port I/O trên các chân 1-8.
• Port 2: port 2 là một port công dụng kép trên các chân 21-28.
• Port 3: port 3 là một port công dụng kép trên các chân 10-17. Các
chân này đều có nhiều chức năng, các công dụng chuyển đổi có liên
hệ tới các đặc tính đặc biệt của 8051 ở bảng sau:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
❖ CÁC TÍN HIỆU ĐIỀU KHIỂN:
Chip AT89C51 có các tín hiệu điều khiển cần phải lưu ý như sau:
• Tín hiệu vào EA trên chân 31 thường đặt lên mức cao ( +5V) hoặc
mức thấp (GND)
Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong
khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52).
Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối
đa đến 64Kbyte).
Ngoài ra người ta còn dùng EA làm chân cấp điện áp 12V khi lập
trình EEPROM trong 8051.
• CHÂN PSEN (Program store enable):
PSEN là chân tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển cho
phép chương trình mở rộng, PSEN thường được nối đến chân OE
(Output Enable) của một EPROM hoặc ROM để cho phép đọc các
bytes mã lệnh.
Hãy nhớ rằng : bình thường chân PSEN sẽ được thả trống ( No
Connect).Chỉ khi nào cho EA ở mức thấp thì lúc đó:
PSEN sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của
chương trình được lấy từ EPROM qua bus dữ liệu và được chốt vào
thanh ghi lệnh của 8951 để giải mã lệnh.
PSEN ở mức thụ động (mức cao) nếu thi hành chương trình trong
ROM nội của 8951.
❖ CÁC CHÂN NGUỒN:
AT8951 hoạt động ở nguồn đơn +5V.Vcc được nối vào chân 40, và Vss
(GND) được nối vào chân 20.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Chương 2: Giới thiệu chung về phần mềm Keil Software
Phần mềm Keil SoftWare 8051 công cụ phát triển được liệt kê ở dưới là những
chương trình mà để biên tập mã C, tập hợp những tập tin assembly, liên kết và định vị
những đoạn chương trình hướng đối tượng, những thư viện , khởi tạo file HEX, và trình
gỡ lỗi.
• µVision® là một môi trường phát triển tích hợp mà kết hợp quản lý project ,soạn
thảo mã nguồn và trình gỡ lỗi trong môi trường mạnh.
• Cx51 ANSI tối ưu bộ biên dịch C và tạo ra những đoạn chương trình hướng đối
tượng định vị lại từ mã nguồn C.
• Ax51 Macro Assembler tạo ra những đaọn chương trình hướng đối tượng định vị
lại 8051 mã nguồn assembly.
• BL51 bộ kết nối / dò tìm định vị lại những đoạn chương trình hướng đối tượng
được tạo ra từ C51 và A51 vào những đoạn chương rình hướng đối tượng tuyệt
đối.
• LX51 mở rộng bộ kết nối / bộ dò tìm hộ trợ những phương án thiết bị mở rộng và
cung cấp nhựng đặc tính bổ sung.LX51 hỗ trợ tất cả các phương án của Cx51 và
Ax51.
• LIBx51 trình quản lý thư viện kết hợp những đoạn chương trình hướng đối tượng
vào trong những thư viện mà có thể được sử dụng bởi bộ kết nối.
• OHx51 bộ biến đổi sang file HEX . tạo ra những file HEX từ những đoạn
chương trình hướng đối tượng tuyệt đối.
• RTX51 Tiny hệ thống thời gian thực RTX51 , thiết kế đơn giản những dự án
phần mềm phức tạp, định thời.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
II.1 CHU TRÌNH PHÁT TRIỂN PHẦN MỀM
Khi chúng ta sử dụng phần mềm Keil µVision , chu trình phát triển phần mềm
cũng giống như chu trình phát triển bao phần mểm khác.
1. Khởi tạo project , lựa chọn chip từ cơ sở dữ liệu thiết bị , thiết đặt những công cụ
định hình.
2. Tạo ra những tập tin nguồn C hoặc assembly.
3. Xây dựng những ứng dụng với Project Manager.
4. Kiểm tra lỗi tập tin nguồn.
5. Kiểm tra những ứng dụng được liên kết.
Sơ đồ khối sau đây minh họa chu trình phát triển phần mểm µVision/ARM đầy
đủ .Mỗi phần được mô tả ở bên dưới.
II.2 µVision IDE
µVision IDE kết hợp quản lý dự án , trình biên tập với sự sửa chữa lỗi, cài đặt tùy
chọn, phương tiện, và giúp đỡ trực tuyến. Sử dụng µVision để tạo ra những tập tin nguồn
và tổ chức chúng vào trong những dự án ứng dụng. µVision IDE tự dộng biên tập, lắp
ráp, và liên kết những ứng dụng nhúng.
C51 Compiler & A51 Macro Assembler (Trình biên tập C51 và trình hợp ngữ A51 )
Những tập tin nguồn được tạo ra bởi µVision IDE và được đưa qua C51 hoặc
A51.Trình biên tập và trình lắp ráp xử lý những tập tin nguồn và tạo ra những tập tin đối
tượng định vị lại được.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Trình biên dich Keil C51 là một sự thi hành mã ANSI đầy đủ của ngôn ngữ lập
trình mà hỗ trợ tất cả các đặc tính chuẩn của ngôn ngữ C. Ngoài ra , nhiều đặc tính hỗ trợ
trực tiếp kiến trúc 8051 đã được thêm.
Chương trình Keil A51 hỗ trợ tập lệnh đầy đủ của 8051.
LIB51 Library Manager (trình quản lý thư viện LIB51)
LIB51 cho phép chúng ta tạo ra thư viện mục tiêu từ những tập tin đối tượng được
tạo ra từ trình biên tập và trình lắp ráp. Những thư viện được định dạng đặc biệt, sắp đặt
cho chương trình những tập hợp của những đoạn chương trình hướng đối tượng mà có
thể được kết nối những lần sau.Khi bộ kết nối xử lý một thư viện , chỉ những đoạn
chương trình hướng đối tượng cần thiết để tạo ra chương trình mới được sử dụng.
BL51 Linker/Locator ( Bộ kết nối BL51/dò tìm)
Bộ kết nối BL51/dò tìm tạo ra file LF/DWARF tuyệt đối sử dụng những đoạn
chương trình hướng đối tượng từ những thư viện và được tạo ra từ trình biên tâp và trình
lắp ráp.Một tập tin đối tượng tuyệt đối hoặc mođun chứa đựng những mã và dữ liệu
không xác định, Tất cả các đoạn mã và dữ liệu hiện có tại những vị trí bộ nhớ cố định.
ELF/DWARF có thể được sử dụng
• Lập trình một Flash Rom hoặc những thiết bị bô nhớ khác
• Với trình gỡ lỗi
• Chương trình chạy thử
Vision Debugger (Trình gỡ lỗi )
Trình gỡ lỗi có tính chất tượng trưng, mức mức nguồn gỡ lối lý tưởng phù hợp và
tin cậy.Trình gỡ lỗi bao gồm một simulator high-speed để chúng ta mô phỏng 8051.
Những thuộc tính của chip mà chúng` ta sử dụng thì tự động định hình khi chúng ta lụa
chọn từ Device Database. Trình sửa lỗi cung cấp vài phương pháp để cho chúng ta kiểm
tra các thiết bị phần cứng
• Thiết đặt MON51 trên hệ thống và tải chương trình của bạn sử dụng giao diện
Monitor-51 tới trình gỡ lỗi.
• Sử dụng giao diện GDI để kèm theo trình gỡ lỗi tới hệ thống
Bản dưới đây liệt kê những thư mục công cụ phát triển phần mềm Keil .
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Assembler Source Template and Include files for the Macro Assembler.( file nguồn
assembly và những file cho trình dịch Macro Assembler)
Executable files of the µVision/C51 tool chain.( những tập tin chạy của µVision/C51)
Example programs ( những chương trình ví dụ)
Configuration files for Flash Monitor and pre-configured versions.( Cấu hình cho
Flash Monitor và những phiên bản định hình
On-Line documentation for µVision/C51.(tài liệu trực tuyến cho µVision/C51)
Include files for the C compiler.(những tập tin cho trình biên tập C)
Files for ISD51 In-System Debugger and pre-configured versions.(những file hỗ trợ
ISD51 trình gỡ lỗi
Run-time libraries and CPU startup files.(thư viện và CPU khởi động sắp xếp nhưng
file)
Configuration files for Monitor-51 (for Classic 8051 Devices).(cấu hình cho Monitor-
51)
Configuration files for Monitor-390 (for Dallas Contiguous Mode) .(cấu hình cho
monitor-390)
RTX51 Tiny Version 2 Real-Time Operation System.(hệ thống bộ định thời)
Thư mục µVision
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
II.3 GIAO DIỆN NGƯỜI DÙNG
II.4 Create a Procject (Tạo một Procject )
µVision là một ứng dụng Windows và chương trình được kích hoạt khi click lên
biểu tượng (icon)
Create a Project File (tạo ra một dự án)
Để tạo một hồ sơ mới ta lựa chọn từ µVision menu Project – New Project…một
hội thoại Windows hiện ra và hỏi bạn đặt tên cho cho Project mới vừa khởi tạo.Chúng
gợi ý rằng ta nên sử dụng một Folder riêng cho mỗi Project.Đơn giản hơn để tạo một
Project mới chọn biểu tượng để tạo ra một Procject mới . µVision tạo ra một Procject
mới với tên PROCJECT1.UV2 chứa đựng một tên nhóm và hồ sơ mặc định. Ta có thể
thấy tên này trong Project Workspace – Files .
Khi ta tạo ra một Procject mới uVision hỏi ta lựa chọn CPU cho Procject .hộp thoại
lựa chọn thiết bị xuất hiện cho ta thấy cơ sở dữ liệu thiết bị uVision , chỉ cần lụa chọn bộ
điều khiển mà ta sử dụng . Ví dụ như ta chọn Bộ điều khiển Philips 80C51RD+ .Những
tùy chọn công cụ này cho Philips 80C51RD+ được rút gọn bên cấu hình công cụ.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Chú ý:
• Ta có thể lựa chọn Bộ kết nối mở rộng (LX51) và trình Assembler mở rộng
(AX51) trong hộp thoại.Linker và Assembler mở rộng sẵn sàng trong the Keil
Professional Developer's Kit và đưa cho chúng ta những đặc tính bổ sung .
• Khi ta tạo ra một Procject mới , uVision có thể tự động thêm mã khởi động CPU
• Trên một vài thiết bị , môi trường uVision cần những tham số bổ sung mà ta phải
thiết lập.Đọc những thông tin này một cách cẩn thận được cung cấp dưới sụ mô tả
của hộp thoại này, từ đó có thể có những chỉ dẫn bổ sung cho cấu hình thiết bị.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Ta có thể tạo ra một tập tin nguồn mới với menu option File – New. Điều này mở
một cửa sổ biên tập, nơi mà ta có thể biên soạn mã nguồn. uVision những cú pháp màu
khi ta lưu file với hộp thoại (File –Save As…) dưới tên *.C. Ví dụ chúng ta lưu dưới tên
Main.C
Khi ta đã tạo tập tin nguồn , ta có thể thêm file tới Procject . Những đề xuất
uVision vài cách để thêm tập tin nguồnvào một Procject. Ví dụ như ta có thể lựa chọn
nhóm Procject Workspace-Files và click chuột phải để mở menu. Tùy chọn Add files
được mở ra. Chọn file MAIN.C mà ta đã tạo ra.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Thêm và định hình mã khởi Động ( Add and Configure the Starup Code)
File STARUP.A51 là mã khởi động cho đa số CPU 8051. Mã khởi động làm sạch bộ
nhớ dữ liệu và tạo những con trỏ ngăn xếp. Ngoài ra một vài dẫn xuất 8051 yêu cầu một
mã khởi tạo CPU phù hợp với với cấu hình phần cứng. Ví dụ Philips 8051RD+ đề nghị ta
chèn on-chip xdata RAM mà cần được thêm vào trong mã khởi động. Khi ta cần sửa đổi
file toán học cho phù hợp với phần cứng, ta phải copy file STARUP.A51 từ
C:KEILC51LIB đến ngăn Procject
Tạo nhóm Procject
Nhóm hồ sơ cho phép chúng ta tổ chức những Procject lớn. Cho mã khởi động
CPU và những cấu hình hệ thống mà ta có thể tạo ra một Procject – những thành phần,
môi trường , hướng dẫn …trong hộp thoại.Chèn một group mới để tạo ra một hệ thống có
tên nhóm hồ sơ ngăn xếp. trong Procject mới có thể kéo thả file STARTUP.A51 lên
nhóm file mới này.
Bây giờ , Project Workspace – Files liệt kê tất cả trong Project . Để mở một
Project soạn thảo, nhấn double lên file Project Workspace .Ta có thể cần định hình
STARTUP.A51 trong trình biên tập.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Thiết đặt những tùy chọn cho những mục tiêu.
uVision cho chúng ta thiết đặt những tùy chọn cho mục tiêu phần cứng .Hộp thoại
những tùy chọn cho những mục tiêu được mở qua biểu tượng thanh công cụ hoặc qua
menu tùy chọn Project. Trong bảng mục tiêu chỉ rõ những tham số thích đáng phần cứng
và thành phần chip mà bạn đã lựa chọn. Sau đây là ví dụ những thiết đặt :
Sau đây là bản mô tả những tùy chọn của hộp thoại Target
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Xtal – chỉ tần số clock mà CPU của bạn hoạt động. Trong đa số trường hợp giá trị này
đồng nhất với tần số XTAL.( Specifies the CPU clock of your device. In most cases
this value is identical with the XTAL frequency)
Memory Model – chỉ rõ bộ nhớ C51, để bắt đầu những ứng dụng mặc định là một sự lựa
chọn tốt.
Allocate On-Chip...
Use multiple DPTR registers – chỉ rõ cách dùng những thành phần của chip cho phép
mã khởi động CPU , nếu ta đang sử dụng bộ nhớ xdata RAM ta cũng phải cho phép sự
truy nhập XRAM trong STARTUP.A51 sắp xếp.
Off-chip...Memory – chỉ rõ tất cả các vùng bộ nhớ ngoài
Chỉ rõ những tham số cho mã và xdata. Tham chiếu tơi Code Banking để biết thêm chi
tiết hơn Specifies the parameters for code and xdata banking. Refer to the "Code
Banking" section for more information
Vài tùy chọn trong hộp thoại chỉ có nếu ta đang sử dụng LX51 Linker/Locater.
LX51 Linker/Locater chỉ có trong gói PK51
Xây dựng Project và khởi tạo file HEX
Những thiết đặt công cụ dưới những tùy chọn-mục tiêu mà ta cần để khởi động
một ứng dụng mới. Ta có thể dịch tất cả các tập tin nguồn và kẻ những ứng dụng với một
cái click trên biểu tượng Build Target . Khi ta xây dựng với những lỗi cú pháp, uVision
sẽ trình bày những thông báo lỗi và cảnh báo với những lỗi có thể xảy ra. Nhấn double
trên hàng thông báo lỗi để mở file nguồn để định vị trong trình biên tập uVision
Một lần thành công ta có thể khởi động trình gỡ lỗi như mô tả dưới Testing
Programs với trình gỡ lỗi uVision .
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bây giờ ta có thể sửa lỗi mã nguồn hoặc thêm những tập tin nguổn mới vào dự án.
Nút thanh công cụ Build Target dịch những file nguồn chỉ được sửa đổi, hoặc file nguồn
mới và file thực thi. uVision lưu giữ một danh sách và những file được sử dụng trong file
nguồn. Thậm chí những tùy chọn công cụ được lưu trữ trong danh sách phụ thuộc, để
uVision xây dựng lại nếu cần thiết, với lệnh Rebuild Target , tất cả những file nguồn
được dịch bất chấp những cải biến.
Sau khi kiểm tra ứng dụng của bạn, nó có thể yêu cầu tạo ra file HEX vả để tải
xuống phần mềm ứng dụng vào trong thiết bị sử dụng một tiện ích lập trình Flash.
uVision tạo file HEX với mỗi lần xây dựng dưới những tùy chọn cho Target-Outout dược
cho phép. Tùy chọn Merge32K Hexfile sẵn sàng cho những ứng dụng Code Applocations
khi ta đã lựa chọn Extended Linker LX51. Ta có thể khởi động tiện ích lập trình Flash
sau khi trình dịch làm quá trình khi bạn chỉ rõ những chương trình Run Program#1.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Chương trình mẫu
Mục này mô tả những chương trình mẫu chạy trên Keil C51. Những chương trình
mẫu này sẵn sàng cho bạn chạy thử. Những chương trình này giúp ta học cách sử dụng
các công cụ của Keil C51. Đồng thời, ta cũng có thể sao chép các đọan mã của chúng vào
chương trình của chúng ta.
Các chương trình mẫu của Keil C51 được lưu trong thu mục
C:KEILC51EXAMPLES . Mỗi chương trình được lưu trong một thư mục riêng cùng
với một tập tin dữ kiện giúp bạn có thể nhanh chóng xây dựng và đánh giá chương trình.
Ngoài ra, các chương trình nhỏ riêng biệt cho RTX – 51 cũng được cung cấp trong
mục RTX – 51.
Bảng sau là danh sách các chương trình mẫu trong C51 và tên thư mục của chúng.
Kiểu mẫu Mô tả
ADI 83x Các chương trình dùng cho các thiết bị tương tự ADuC83x và
ADuC84x mà nó chỉ ra các thiết bị mở rộng và cách dùng ADI
MONITOR DRIVER
ASM Một chưogn trình hợp ngữ đơn giản mà ta cả thể viết một đoạn
text cho các port tuần tự
Benchmarks... Vài chương trình riêng biệt: Dhrystone, Whetstone, Sieve.
BLINKY Loại 8051 Blinky làm sáng LED trên board Keil MCBx51
CodeBanking... Kiểu mã Banking chỉ ra việc lập trình trên bộ nhớ 64K
CSAMPLE Bộ cộng và trừ đơn giản mà cho thấy làm sao xây dựng một
chương trình với nhiều module trên Vision
Dallas 390 Vài ví dụ sử dụng Dallas Contigious Addressing Mode mà nó có
sẵn một vài thiết bị khác nhau như DS80C390, DS80C400,
DS80C41x, DS5240, and DS5250.
FarMemory Làm sao mở rộng ô nhớ tr6n 64K
Hello Chương trình hiện chữ Hello world. Chạy thử nó trước khi sử
dụng Vision.
Infineon C517 Cho thấy cách dùng Infineon mở rộn các thiết bị: MDU và bộ
giao điện nối tiếp.
Infineon XC866 Những chương trình mẫu cho bo mạch Keil MCBXC866 hỗ trợ
được thiết bị Infineon XC800
M8051EW Các chương trình mẫu cho Mentor M8051EW
MEASURE Là hệ thống thu thập và tập hợp những dữ liệu số và tương tự. Là
chương trình điều khiển hệ thống đo lường nhiệt độ từ xa.
Philips 80C51MX Là chương trình mẫu cho họ Philips 80C51MX hỗ trợ tới 16MB
vùng địa chỉ
Philips LPC9xx Chương trình cho bo mạch Keil MCB900 Evaluation mà hỗ trợ
các thiết bị Philips LPC900 - LPC94x
Philips LPC95x Chương trình cho bo mạch Keil MCB9xx Evaluation mà hỗ trợ
các thiết bị Philips LPC950 - LPC99x
ST uPSD Chương trình mẫu cho dòng ST uPSD cho thấy cấu hình hệ
thống Keil ULINK USB-JTAG Adapter
TI MSC121x Chương trình cho các thiết bị TI MSC121x chỉ ra cách dùng hệ
thống giải mã ISD51 In-System Debugger
TI MSC1200 Chương trình cho các thiết bị TI MSC1200 chỉ ra cách dùng hệ
thống giải mã ISD51 In-System Debugger
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Để bắt đầu sử dụng một trong các chương trình mẫu, ta mở menu Project – Open
Project trong Vision rồi mở tâp tin chương trình.
Các mục trong chương này mô tả làm sao sử dụng các công cụ để xây dựng các
chương trình sau:
▪ HELLO : chương trình C viết cho 8051
▪ MEASURE: hệ thống đo lường từ xa.
HELLO
Chương trình HELLO được lưu trong thư mục
C:KEILC51EXAMPLESHELLO . chương trình này không làm gì hơn là
xuất đoạn text “ HELLO WORLD “ ra port. Toàn bộ chương trình được lưu trong tập tin
nguồn là HELLO.C
Ứng dụng nhỏ này giúp bạn có thể biên tập, liên kết và gỡ lỗi một ứng dụng. Bạn
có thể thực hiện thao tác này từ dòng lệnh trên DOS, sử dụng tập tin dạng batch hoặc
dùng Vison trên windown với các tập tin chương trình.
Phần cứng cho chữ HELLO dựa vào CPU 8051 chuẩn. Một con chip ngoại vi
được sử dụng cho các dãy port. Tuy nhiên, với Vision bạn không cần phải có 1 CPU vì
chương trình đã đóng vai trò phần cứng yêu cầu cho chương trình này.
Tập tin chương trình HELLO
Trong Vision, những ứng dụng được lưu trong tập tin chương trình. Một chương
trình được viết cho chữ HELLO. Để mở chương trình này ta chọn Open Project từ menu
Project và mở tập tin HELLO.UV2 từ thư mục …C51EXEMPLESHELLO.
Soạn thảo chương trình HELLO.C
Bây giờ bạn có thể soạn thảo chương trình HELLO.C bằng cách nhấp đúp chuột
vào cửa sổ project file. Vision sẽ tải và hiển thị nội dung file HELLO.C trên cửa sổ làm
việc.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Biên dịch và kết nối HELLO
Khi bạn đã sẵn sàng biên dịch và liên kết chương trình của mình, sử dụng lệnh Build
Target từ menu Project hoặt thanh công cụ Build. Vision bắt đầu biên dịch và liên kết
tạo ra một đoạn chương trình mà bạn có thể tải vào Vision cho việc thử lỗi. Quá trình
xây dựng được liệt kê trong cửa sổ ngõ ra.
Chú ý
Bạn cần phải không gặp lỗi khi chạy các chương trình mẫu
chạy thử HELLO
Khi chương trình HELLO đã được biên dịch và kết nối ta có thể kiểm tra nó với
trình tìm lỗi của µVision. Trong µVision, sử dụng lệnh Start/Stop Debug Session từ
menu Debug hoặc thanh công cụ. µVision khởi tạo trình báo lỗi và khởi động các
chương trình con đến các chương trình chính. Sau đây là màn hình hiển thị:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Mở cửa sổ Serial Window #1 cho ta thấy các hiển thị ở ngõ ra với lệnh mở
cửa sổ Serial Window #1 từ menu VIEW hoặc thanh công cụ Debug.
Chạy chương trình HELLO với lệnh GO từ thanh công cụ Debug. Chương
trình lời chào được thực hiện và hiển thị đoạn văn bản “HELLO WORLD” trong cửa sổ
serial window. Sau khi ngõ ra hiển thị “HELLO WORLD” nó sẽ chạy với vòng lập vô
tận.
Dừng việc chạy chương trình HELLO với lệnh Halt từ menu Debug hoặc
thanh công cụ. Bạn cũng có thể đánh lệnh ESC trong trang lệnh của cửa sổ OUTPUT.
Trong suốt quá trình kiểm tra lỗi của µVision sẽ được hiển thị như sau:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Chạy từng bước và ngắt ngang
Sử dụng lệnh Insert/Remove Breakpoints từ thanh công cụ hoặc từ trình
đơn trên menu lập trình. Ta dùng chuột phải để đặt điểm dừng trên điểm bắt đầu của hiển
chính.
Sử dụng lệnh Reset CPU từ menu DEBUG hoặc thanh công cụ. Nếu bạn
dừng chương trình đang chạy bởi lậnh RUN. µVision sẽ dừng chương trình tại điểm
dừng mà bạn đã đặt.
Bạn có thể chạy từng bước chương trình HELLO bằng cách ấn nút STEP trên
thanh công cụ DEBUG. Những câu lệnh sẽ được chỉ ra với mũt tên màu vàng. Mũi tên sẽ
di chuyển theo từng bước thực hiện.
Đặt con trỏ chuột trên các biến để xem giá trị của chúng.
Bạn có thể chạy hoặc dừng chương trình bất kỳ kúc nào với lệnh
START/STOP DEBUG.
MEASURE: hệ thống điều khiển thiết bị từ xa
Chương trình điều khiển (MEASURE) được lưu trong thư mục
..C51ExamplesMeasure. Chương trình này sử dụng các dữ liệu số và tương tự thường
được dùng trong các đài khí tượng và điều khiển trong công nghiệp.
Chương trình này chạy trên P89LPC935 CPU và ghi dữ liệu từ hai port kỹ thuật số
và bốn ngõ vào chuyển đổi A/D. Một bộ định thời (Timer) điều khiển quá trình lấy dữ
liệu. Mẫu dữ liệu có thể định hình từ 1 mili giây đến 60 phút. Mỗi dữ liệu đo được trong
suốt thời gian hoặc từ các kênh ngõ vào đề được lưu vào RAM.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Tập tin lệnh của chương trình đo lường
Tập tin này có tên là MEASURE.UV2. để mở tập tin ta dùng lệnh Open Project
từ menu Project và chọc file MEASURE.UV2 trong thư mục
C:KeilC51ExamplesMeasure.
Trang tập tin trong cửa sổ Project cho ta thấy những tập tin nguồn dùng để biên
soạn chương trình trắc lượng. Chương trình đo lường mẫu gồm có 3 tâp tin nguồn đó là:
Getline.c, Mcommand.c, và Measure.c mà ta có thể tìm thấy trong nhóm file nguồn.
Ngoài ra bạn còn có thể tìm thấy mã khởi động CPU và tập tin dữ liệu.
Để mở một file ta nhấp đúp vào tên tấp tin trong Project Workpage
Các chương trình có chức năng nhằm vào các mục đích khác nhau cho những môi
trường thử nghiệm khác nhau. Để dò lỗi chạy chương trình mô phỏng ta chọn mục mô
phỏng SIMULATOR trong thanh công cụ BUILD. Khi sử dụng phiên bản ước lượng
Evaluation Version bạn cần phải chọn Demo - Simulator.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Mô tả các chức năng của tập tin nguồn
Measure.c Chức các hàm chính của C cho hệ thống đo lường và
điều kiện ngắt cho timer0. các hàm chính khởi tạo tất
cả các thiết bị ngoại vi của P89LPC935 và xử lý các
lệnh hệ thống. Điều kiện ngắt timer,timer0, quản lý
đồng hồ thời gian thực và lấy dữ liệu từ phép đo của
hệ thống.
Mcommand.c Những quá trình hiển thị, thời gian và khoảng cách
giữa các lệnh. Những hàm này được gọi từ chương
trình chính. Các lệnh hiển thị giá trị tương tự từ điểm
giao động sẽ cho tín hiệu điện từ 0.00V đến 3.30V
Getline.c Gồm các dòng lệnh được soạn thảo cho những dữ
kiện nhận từ các port
Yêu cầu phần cứng
Các ứng dụng đo lường chỉ có thể chạy trên bo mạch Keil MCB900 hoặc các phần
cứng cơ bản khác dùng P89LBC935. Bộ vi điều khiển PL89LBC935 cung cấp khả năng
nhập vào cả tín hiệu số và tương tự. Port 1 và Port2 được dùng để nhập tín hiệu số và từ
AD00 đến AD03 để nhập tín hiệu tương tự.
Tuy nhiên, chúng ta sẽ không cần một bo mạch nào hết vì Vision đã tích hợp
chức năng này.
biên dịch và liên kết chương trình MEASURE
Khi đã sẵn sàng biên dịch và liện kết chương trình, sử dụng lệnh Buil Target từ
menu Project hoặc thanh công cụ. Vision sẽ thực hiện toàn bộ quá trình và sẽ thông báo
cho bạn khi hoàn tất.
chạy thử chương trình MEASURE
Chương trình mẫu điều khiển đo lường được lập trình để chấp nhận các lệnh trên
chip của các port tuần tự. Nếu bạn có phần cứng thực tế, bạn có thể dử dụng phần mô
phỏng cuối cùng để kết nối với CPU P89LPC935. nếu bạn không có phần cứng thì có
thể sử dụng phần cứng mô phỏng trên Vision. Bạn có thể sử dụng cửa sổ Serial
Windown để cung cấp tín hiệu được nhập vào.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Mỗi lần chương trình Measure được xây dựng bạn có thể chạy thử. Sử dụng lệnh
START/STOP trong menu DEBUG để chạy chương trình kiểm tra lỗi.
Những lệnh của hệ thống điều khiển đo lường từ xa
Chuỗi các lệnh dùng cho chương trình được liệt kê trong bảng. Những lệnh này
bao gồm bảng mã ASCII và tất cả các lệnh điều phải được hoàn tất bằng một sự quay
vòng.
Lệnh Cấu trúc Chức năng
clear C Xóa tất cả các dữ liệu đo được trước đó
Dislay D Hiển thị thời gian làm việc và giá trị ngõ
vào
time T hh:mm:ss Đặt thời gian theo chuẩn 24h
Interval I mm:ss.ttt Đặt những khoảng thời gian cho mỗi phép
đo khoảng thời gian này từ 0:00.001(1ms)
và 60:00.000 (60 phút)
start S Khởi động quá trình ghi dữ liệu đo được.
Khi nhận lệnh start, chương trình đo lấy
mẫu tất cả các tín hiệu ngõ vào tại các
khoảng thời gian đã định.
Read R[count] Hiển thị các giá trị đo được, bạn có thể chỉ
rõ số của tâ1t cả các mẫu mà mình muốn
đọc. Nếu không chỉ ra thứ tự nào, lệnh đọc
sẽ hiển thị tất cả các giá trị đo. Bạn chỉ có
thể đọc các giá trị này trong 1 giây. Nếu
muốn hơn thì phải dừng chương trình.
quit Q Thoát khỏi quá trình ghi giá trị đo
Khi bạn chạy một lần chương trình mô phỏng trên Vision, bạn có thể vào các
lệnh này trong cửa sổ Serial Windown#1 ở bên dưới:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Vision cho phép bạn hiển thị các đoạn mã của chương trình trong cửa sổ
Disassembly Window bằng cách mở menu View hoặc dùng các nút trên thanh công cụ.
Cửa sổ Disassembly Window cho thấy sự trộn lẫn các nguồn và các đoạn assembly. Bạn
có thể thay đổi cách hiển thị bằng cách nhấp chuột phải vào menu ngữ cảnh.
Hiển thị các đoạn mã của chương trình
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
hiển thị nội dung các ô nhớ
Vision có thể hiển thị các ô nhớ ở các định dạng khác nhau. Cửa sổ ô nhớ
Memory Window được mở từ menu View hoặc từ thanh công cụ. Bạn có thể nhập địa
chỉ của 4 vùng nhớ ở trang này. Menu ngữ cảnh cho phép bạn sửa đổi nội dung ô nhớ
hoặc lựa chọn những kiểu ngõ ra khác nhau.
các biến thay đổi đồng hồ thời gian
Bạn có thể liên tục nhìn nội dung của các biến, cấu trúc và các mảng. Ta có thể mở
cửa sổ Watch Window từ menu View hoặc thanh công cụ. Một trang ngữ cảnh hiện ra
cho thấy taa61t cả các ký tự ngữ cảnh của hàm hiện thời. Các trang Watch#1 và Watch#2
cho phép ta vào bất kỳ biến nào của chương trình như ở trang sau:
Vào các biến thời gian trong cửa sổ Watch Window
Lựa chọn văn bản < ấn F2 để chỉnh sửa > cùng với 1 cái click chuột và đợi trong
một giây. Một cái click chuôt khác cùng quá trình chỉnh sửa giúp ta thêm vàog ía trị của
các biến. Với cùng cách như trên ta có thể thay đổi nhiều giá trị. Cách khác là bạn có thể
dùng phím F2.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Để xóa đi một biến, nhấn chọn và ấn phím delete.
Những cấu trúc và mảng sẽ hiện ra khi ấn ký hiệu [+]. Các dòng bị thụt vào để
phản chiếu sự lồng nhau.
Chú ý
Cửa sổ Watch Window cập nhập bầt cứ khi nào chương trình thực hiện dừng. Khi
bạn mở chế độ View - Periodic Window Update các giá trị cập nhật sẽ lấy liên tục trong
suốt quá trình chạy chương trình mô phỏng.
Vào biến thời gian từ cửa sổ soạn thảo
Chọc một biến trong vùng soạn thảo và dùng câu lệnh Add to Watch Window từ
menu ngữ cảnh bằng cách click phải chuột.
Vào các biến thời gian từ trang lệnh ngõ ra (output window)
Sử dụng lênh WatchSet để thêm giá trị biến vào cửa sổ Watch Window
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Thực hiện chương trình
trước khi bắt đầu mô phòng chương trình MEASURE, mở cửa sổ Serial
Window#1 để hiển thị chuỗi giá trị ngõ ra bằng cách vào menu View hoặc thanh Debug.
Bạn có thể thu nhỏ các cửa sổ khác nếu màn hình không đủ lớn. Bạn có thể chạy từng
bước bằng lệnh Step các câu lệnh Essembler hoặc các đoạn mã gốc. Nếu cửa sổ
Assembly Window đang mở, bạn nên chọc chạy tùng bước các lệnh essembly cơ bản.
Nếu cửa sổ soạn thảo với các mã gốc được mở, bạn chạy từng bước với từng mã nguồn.
nút lệnh ‘chạy từng bước đến” (stepinto) cho phép bạn thực hiện một bước
nhảy đến các chương trình được gọi
thực hiện việc gọi một hàm và sẽ không tự động ngắt cho đến khi gặp điểm
ngắt.
trên nguyên tắc ta có thể ngẫu nhiên nhảy vào một hàm chưa hoàn tất. Bạn có
thể dùng lệnh StepOut để hoàn tất hàm đó và trả lại giá trị cho nó ngay lập tức khi có
lệnh gọi.
mũi tên vàng đánh dấu câu lệnh hiện thời và hoặc các lệnh cấp cao. Bạn có thể
ngẫu nhiên bước vào một hàm chưa hoàn tất.
lệnh chạy ngay hàng của con trỏ (Run till Cursor Line)
lệnh đặt và bỏ điểm ngắt Insert/Remove BreakPoint
Hộp thoại BreakPoint
vision cũng hỗ trợ các điểm ngắt phức tạp. Chẳng hạn bạn muốn ngắt một
chương trình khi một biến đạt giá trị nhất định. Cài đặt ở bên dưới khi nào giá trị 3 được
viết cho current.time.sec
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Để định nghĩa điểm dừng này ta mở hộp thoại BreakPoint từ menu Debug. Đánh
dấu chọn vào ô Write ( dấu chọn này chỉ ra là lệnh ngắt chỉ được kiểm tra khi được viết
tới ). Tiếp tục click vào nút Define để chọn điểm dùng. Để kiểm tra việc thực hiện điểm
dừng làm các bước sau:
Reset CPU
Nếu sự thực hiện chương trình dừng thì bắt đầu chạy chương trình đo
Sau một ít thời gian, Vision dừng sự thực hiện. Chương trình đếm hàng đánh
dấu vị trí hàng mà trong đó điểm ngắt được đặt.
Sự ghi vệt tin
Quá trình này thực hiện trong suốt thời gian kiểm lỗi cho đến điểm dừng nơi bạn
yêu cầu thông tin cho giá trị thanh ghi và những nguyên nhân khác dẫn tới dự ngắt. Nếu
Debug - Enable/Disable Trace Recording được đặt bạn có thể nhìn thấy các lệnh liên
quan tới CPU thực hiện trước điểm dừng.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bảng giá trị các thanh ghi
Gọi ngăn xếp
Các ngăn xếp trong của Vision sẽ được lấp đầy khi chương trình hoàn tất. Trang
CallStack của cửa sổ Watch Window cho thấy sự lồng nhau giữa các hàm hiện thời. Nhấp
đúp lên một hàng hiển thị mã gốc để thực hiện chức năng của nó.
On-Chip ngoại vi
Vision cung cấp một số cách để hiển thị và sửa dổi các chip ngoại vi sử dụng
trong chương trình của bạn. Bạn có thể thấy kết quả của ví dụ khi thực hiện các bước sau:
Reset CPU và xóa tất cả các điểm ngắt
Nếu chương trình bị dừng khi bắt đầu đo lường.
Mở cửa sổ Serial Window #1 và vào lệnh ‘d’ cho ứng dụng MEASURE.
Chương trình đo lường cho thấy giá trị từ ngõ vào port1 và port2 và bộ chuyển đổi A/D
1-3. Cửa sổ Serial Window #1 được biễu diễn ở hình sau:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Những hộp thoại thiết bị ngoại vi
Vision cung cấp các hộp thoại cho: I/O port, thiết bị ngắt, bộ định thời, chuyển
đổi A/D, và một số chip ngoại vi đặc biệt. Các hộp thoại này có thể mở từ menu
Peripheral. Mỗi hộp thoại cho thấy các ký hiệu SFR liên quan và tình trạng các thiết bị
ngoại vi.
Cho ứng dụng đo đạc bạn có thể mở Peripherals - I/O Ports - Port2 và
Peripherals - A/D Converter - ADC0/DAC0. những hộp thoại này cho thấy tình trạng
của các thiết bị ngoại vi và bạn có thể thay đổi giá trị ngõ vào.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bạn có thể sử dụng Virtual Simulator Registers (VTREGs) để thay đổi giá trị ngõ
vào. Trong cửa sổ Output Window – Command Page bạn có thể đặt các ấn định cho các
ký hiệu VTREG giống như ngững biến và các thanh ghi.
Ví Dụ:
Các user và tín hiệu chức năng ( Signal Function )
Bạn có thể kết hợp các ký hiệu VTREG với chức năng tìm lỗi của Vision để tạo
ra một phương thức phức tạp của việc cung cấp dữ liệu ngoài được nhập vào tới các
chương trình của bạn.
Chương trình mẫu Measure sử dụng bộ giải mã khởi tạo file MEASURE.INI để
định nghĩa các tín hiệu hàm cho:
▪ Xuất hiện xung răng cưa trên ngõ vào A/D AD01.
▪ Xuất hiện sóng sine trên ngõ vào A/D AD02.
▪ Xuất hiện tín hiệu nhiễu trên ngõ vào A/D AD03.
Tập tin MEASURE.INI được lưu dưới dạng Options for Target – Debug –
Initialization File và có nội dung như sau:
PORT2=0xDA
AD01=2.3
; set digital input PORT2 to 0xDA.
; set analog input AD01 to 2.3 volts.
/* */
/* Function MyRegs() shows Registers R0...R3 */
/* */
FUNC void MyRegs (void) {
printf ("---------- MyRegs() ----------n");
printf (" R0 R1 R2 R3n");
printf (" %02X %02X %02X %02Xn");
printf (" n");
}
//
// Generate Saw Tooth Signal on A/D input AD01
//
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
signal void AD01_Saw (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float delay;
float val;
long i, end, steps;
volts = 2.0;
offset = 0.2;
frequency = 140;
duration = 8.0;
printf ("Saw Tooth Signal on A/D input AD01n");
steps = 100;
delay = (0.01/frequency);
printf ("Saw Steps = %dn", steps);
end = (duration * 10000);
for (i = 0 ; i < end; i++) {
val = (i % steps) / ((float) steps);
AD01 = (val * volts) + offset;
swatch (delay);
}
}
//
// Generate Sine Wave Signal on A/D input AD02
//
signal void AD02_Sine (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float val;
long i, end;
volts = 1.4;
offset = 1.6;
frequency = 180;
duration = 5.0;
printf ("Sine Wave Signal on A/D input AD02n");
end = (duration * 10000);
for (i = 0 ; i < end; i++) {
val = sin (frequency * (((float) STATES) / CLOCK) * 2 * 3.1415926);
AD02 = (val * volts) + offset;
swatch (0.0001); // in 100 uSec steps
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
}
}
//
// Generate Noise Signal on A/D input AD03
//
signal void AD03_Noise (void) {
float volts; // peak-to-peak volatage
float frequency; // output frequency in Hz
float offset; // volatge offset
float duration; // duration in Seconds
float val;
long i, end;
volts = 1.4;
offset = 1.6;
duration = 0.5;
printf ("Noise Signal on A/D input AD03n");
end = (duration * 100000);
for (i = 0 ; i < end; i++) {
val = ((float) rand (0)) / 32767.0;
AD03 = (val * volts) + offset;
swatch (0.00001); // in 10 uSec steps
}
}
//
// Run Signal Functions at Startup
//
signal void Startup (void) {
swatch (1.0);
AD01_Saw ();
swatch (0.3);
AD02_Sine ();
swatch (0.6);
AD03_Noise ();
// wait 1.0 seconds
// wait 0.3 seconds
// wait 0.6 seconds
}
Startup (); // Start the Signals
define button "AD01 Saw Tooth",
define button "AD02 Sine Wave",
"AD01_Saw ()"
"AD02_Sine ()"
define button "AD03 Noise Signal", "AD03_Noise ()"
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bạn có thể kèm theo chức năng dò lỗi cho những hàm trong cửa sổ Output
Window – Command Page.
>MyRegs ()
MyRegs()
R0 R1 R2 R3
00 00 00 00
Cho nhiều tín hiệu chức năng ta có thể dùng hộp công cụ ToolBox cho các yêu
cầu khẩn cấp.
Thực hiện phân tích (Performance Analyzer)
Vision cho phép bạn thực hiện viện phân tích tính toán thời gian của những ứng
dụng tích hợp Performance Analyzer. Để chuẩn bị cho sự phân tích tính toán thời gian,
ta dừng việc thực thi chương trình và mở menu Debug - Performance Analyzer để mở
hộp thoại Setup Performance Analyzer.
Bạn có thể chọn các ký hiệu hàm hay đánh tên hàm hoặc mật dãy địa chỉ khi dùng
hộp thoại Setup Performance Analyzer .
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Thực hiện các bước để thấy việc thực hiện phân tích:
mở hộp thoại Performance Analyzer
reset CPU và xóa các điểm ngắt
nếu chương trình bị dừng khi bắt đầu việc đo đạc
mở cửa sổ Serial Window#1 và gõ lệnh S , gõ D.
Performance Analyzer cho ta thấy biểu đồ dạng cột trong mỗi phạm vi.biểu đồ
hình cột cho thấy phần trăm thời gian thực hiện đoạn mã trong mỗi phạm vi. Click vào
một cột để thấy thông tin thống kê chi tiết.
Phân tích tín hiệu logic
Với Logic Analyzer, Vision Debugger/Simulator cung cấp một màn hình đồ thị
cho giá trị thay đổi của biến hoặc VTREGs.
Thực hiện các bước sau để thấy việc phân tích giá trị Logic hoạt động:
Mở hộp thoại Logic Analyzer
▪ Sử dụng hộp thoại để biểu diễn các tín hiệu bạn muốn. Một ví dụ là AD01,
AD02, AD03 và một cấu trúc như là current.time.sec. Bạn có thể chọn
giữa nhiều kiểu mẫu.
Chạy chương trình và hiển thị mức logic ngõ ra
Logic Analyzer cung cấp một màn hình tính toán thời gian chi tiết của các tían
hiệu đã chọn.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Sử dụng các chip ngoại vi
Đây là các thông số kỹ thuật mà bạn phải biết để tạo những chương trình dùng các
chip ngoại vi và những đặt tính của họ 8051. những thông số được đề cập trong chương
này. Bạn có thể sử dụng các đoạn mã được giới thiệu để có thể nhanh chóng làm việc với
8051.
Ở đây không có các chế độ đơn đặt thiết bị ngoại vi trong 8051. thay vào đó chip
8051 cung cấp một sự sử dụng đa dạng các chip ngoại vi để phân biệt giữa chúng với
nhau. các đoạn mã mẫu trong chương này cho ta biết cách sử dụng các họ chip ngoại vi
đặc biệt. Chú ý rằng có nhiều tùy chọn cấu hình hơn được giới thiệu trong phần này.
• Start up code
• Special function Register
• Register bank
• Interrupt service Rountine
• Interrupt Enable Registors
• Parallel Port I/O
• Timer/counter
• Serial Interface
• Watchdog Timer
• D/A Coverter
• A/D Coverter
• Power Redution Modes
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Mã khởi động ( startup code )
Mã khởi động được thực hiện ngay lập tức khi ta reset toàn bộ hệ thống và nó thực
hiện các thao tác sau:
▪ Phụ thuộc vào sự khác nhau của thiết bị, những đặc tính đặc biệt của thiết
bị.
▪ Xóa toàn bộ các dữ liệu (tùy chọn)
▪ Thiết lập trạng thái ban đầu giá trị các ngăn xếp và con trỏ ngăn xếp(tùy
chọn)
▪ Thiết lập trạng thái ban đầu của con trỏ ngăn xếp phần cứng 8051
▪ Chuyển đổi điều khiển tới các biến được thiết lập hoặc các hàm chính của
C.
Trình biên dịch Keil 51 các thiết bị đặc biệt có các mã khởi động khác nhau chút
ít. Một mã khởi động chung được cung cấp trong tập tin ..C51LIBSTARTUP.A51.
Chức năng các thanh ghi đặc biệt (Special Function Registers)
Các chip thiết bị ngoại vi của 8051 được truy nhập sử dụng các thanh ghi có chức
năng đặc biệt hoặc SFRs. SRFs được định vị trí bên trong chip một cách trực tiếp có địa
chỉ từ 80H đến 0FFH. Nhà phát triển Keil đã cung cấp các công cụ gồm các tập tin hoặc
các file tiêu đề có thể định nghĩa các thanh ghi nà cho bạn. Bạn có thể sử dụng các file
tiêu đề được cung cấp sẵn hoặc tự tạo cho mình một file để định địa chỉ các chip ngoại vi.
Ki bạn tạo một chương trình với Vision bạn có thể chèn việc định nghĩa các thanh ghi
đặc biệt của thiết bị bằng cách dùng menu trong cửa sổ làm việc.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Nhiều chương trình mẫu trong chương này đều sử dụng đoạn mã bắt đầu như sau:
Các tập tin định nghĩa thanh ghi được lưu trong thư mục C:KEILC51INC.
Đoạn mã sau đây được trích từ một tập tin định nghĩa thanh ghi cho các port song song
I/O .
Bạn có thể định các giá trị SFRs một cách trực tiếp bằng các mã nguồn C các tiêu
đề flie.
Chú ý:
▪ Khi bạn lấy hoặc ghi giá trị các thanh ghi đặc biệt bạn cần phải khai báo
SFR trong tập tin nguồn.
▪ Bit ký hiệu SFR chỉ có thể định nghĩa cho bit địa chỉ của thanh ghi SFR,
mà nó được định vị theo địa chỉ 0x80, 0x88, 0x90 … 0xF8.
Register Banks ( các thanh ghi lưu trữ )
▪ Vi điều khiển 8051 được xây dựng dựa vào các vùng nhớ căn bản với tám
thanh ghi thông dụng (R0 –R70). Mỗi thanh ghi là một thanh ghi byte đơn.
Tám thanh ghi đa dụng này có thể quản lý việc lưu trữ và các thanh ghi lưu
trữ.
▪ 8051 cung cấp 4 thanh ghi lưu trữ mà bạn có thể sử dụng. Quá trình làm
việc cơ bản của các thanh ghi dễ dàng được nhận thấy khi bạn thực hiện
ngắt.
▪ Dùng cho chương trình C trên 8051 thì ta không cần chọn hoặc mở thanh
ghi vì chương trình đã mặc đinh chọn thanh ghi lưu trữ 0.
▪ Các thanh ghi lưu trữ 1, 2, 3 trong quá các quá trình ngắt vì để tránh việc
lưu trữ và khôi phục các ngăn xếp.
Các điều kiện ngắt ( Interrupt Service Routines )
Trình biên dịch C51 cho phép viết những điều kiện ngắt trong C. trình biên dịch
được sử dụng một cách hiệu quả bằng mã khởi đầu và mã kết thúc và điều tiết mở các
thanh ghi lưu trữ. Các điều kiện ngắt được khai báo như sau:
Chỉ số ngắt (interrupt number) giúp xác định địa chỉ véc tơ ngắt của hàm ngắt. Sử
dụng bảng sau để xác định chỉ số ngắt:
Interrupt Number Address Interrupt Number Address
0 (EXTERNAL INT 0) 0003h 16 0083h
1 (TIMER/COUNTER 0) 000Bh 17 008Bh
2 (EXTERNAL INT 1) 0013h 18 0093h
3 (TIMER/COUNTER 1) 001Bh 19 009Bh
4 (SERIAL PORT) 0023h 20 00A3h
5 (TIMER/COUNTER 2) 002Bh 21 00ABh
6 (PCA) 0033h 22 00B3h
7 003Bh 23 00BBh
#include <reg51.h>
sfr IE = 0xA8; // Interrupt Enable register at SFR address 0xA8
sbit EA = IE^7; // global Interrupt Enable Flag (bit 7 of SFR IE)
void function_name (void) interrupt interrupt_number [using register_bank]
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
// 8-bit I/O Port P0
// 8-bit I/O Port P1
// 8-bit I/O Port P2
// 8-bit I/O Port P3
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
8 0043h 24 00C3h
9 004Bh 25 00CBh
10 0053h 26 00D3h
11 005Bh 27 00DBh
12 0063h 28 00E3h
13 006Bh 29 00EBh
14 0073h 30 00F3h
15 007Bh 31 00FBh
Việc sử dụng các thuộc tính để cho ta có thể chỉ rõ một thanh ghi lưu trữ trong
suốtt thời gian thực hiện hàm ngắt. Những điều ngắt khoảng ngắn có thể hiệu quả hơn
không sử dụng thuộc tính, khi chúng sử dụng thanh ghi lưu trữ 0. bạn có thể kiểm chứng
bằng hai đoạn mã essembler xem hiệu quả của chúng.
Chú ý:
Các hàm kèm theo điều kiện ngắt cần phải được biên tập với chỉ thị NOAREGS.
Việc này bảo đảm rằng việc biên dịch không phát sinh việc thay đổi các thanh ghi tuyệt
đối.
Ví dụ sau cho ta thấy một hàm ngắt tiêu biểu:
}
Trong ví dụ trên điều kiện ngắt chi chỉ số ngắt 4 được thiết lập. Tên của hàm ngắt
là com_isr. Khi lệnh ngắt được thực hiện sẽ kéo theo, các mã mục được lưu vào thanh ghi
CPU và chọn thanh ghi lưu trữ 1. Khi thủ tục ngắt kết thúc thì giá trị các thanh ghi được
khôi phục.
Sau đây là đoạn mã sinh ra bởi lậnh ngắt kể trên. Chú ý rằng nội dung thanh ghi
lưu trữ sẽ được hoán đổi và được khôi phục lại sau khi thoát.
#include <reg51.h> // Special Function Registers of 80C51 CPU
#pragma NOAREGS // do not use absolute register symbols (ARx)
// for functions called from interrupt routines.
static void HandleTransmitInterrupt (void) {
:
:
}
static void HandleReceiveInterrupt (void) {
:
:
}
#pragma AREGS // for other code it is save to use ARx symbols
static void com_isr (void) interrupt 4 using 1 {
if (TI) HandleTransmitInterrupt ();
if (RI) HandleReceiveInterrupt ();
; FUNCTION com_isr (BEGIN)
0000 C0E0
Pointer
0002 C083
0004 C082
0006 C0D0
PUSH ACC ; Save the Accumulator and Data
PUSH
PUSH
PUSH
0008 75D008 MOV
DPH
DPL
PSW ; Save PSW (and the current Register Bank)
PSW,#08H ; This selects Register Bank 1
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
:
:
0052 D0D0 POP PSW ; Restore PSW (and prior reg bank)
0054 D082 POP DPL
0056 D083 POP DPH
0058 D0E0 POP ACC ; Restore the Accumulatorand DPTR
005A 32 RETI
; FUNCTION com_isr (END)
Các thanh ghi cho phép ngắt (Interrupt Enable Registers)
8051 cung cấp điều kiện ngắt cho nhiều chip ngoại vi. Quá trình ngắt hoàn toàn
phụ thuộc vào bit EA của Interrupt Enable (IE) SFR. Khi bit EA lên mức 1 thì quá trình
ngắt được thực hiện. Khi bit EA xuống mức 0 thì quá trình ngắt bị vô hiệu.
Mỗi quá trình ngắt thì được kiểm soát bởi than ghi IE SFR. Tên một số chip 8051
có thể có hơn 1 thanh ghi IE. Kiểm tra tài liệu về chip đó để tận dụng các quá trình ngắt.
Các port song song vào/ra (Parallel Port I/O)
Một chip 8051 bình thường có 4 port vào ra song song mà bạn có thể kết nối với
các thiết bị ngoại vi. Chúng là Port 0, Port 1, Port 2, Port 3. Một số IC 8051 mở rông có
tới 8 Port xuất nhập.
Port Direction Width Alternate use
P0 I/O 8 bits Mux'd. 8-bit bus: A0-A7 & D0-D7
P1 I/O 8 bits P1.0-P1.7: Available for user I/O
P2 I/O 8 bits Mux'd. 8-bit bus: A8-A15
P3 I/O 8 bits P3.0: RXD (Serial Port Receive)
P3.1: TXD (Serial Port Transmit)
P3.2: /INT0 (Interrupt 0 input)
P3.3: /INT1 (Interrupt 1 input)
P3.4: T0 (Timer/Counter 0 Input)
P3.5: T1 (Timer/Counter 1 Input)
P3.6: /WR (Write Data Control)
P3.7: /RD (Read Data Control)
Các Port trên IC 8051 bình thường thì không có các dữ liệu trên thanh ghi điều
khiển. Thay vào đó, các chân của Port 1, Port 2, Port 3 mỗi chân có thể tăng lên mà
chúng có thể là đầu nhập hay đầu xuất. Để ghi giá trị vào một Port bạn chỉ đơn giản ghi
giá trị tùng chân của Port đó. Để lấy giá trị từ Port trước hết giá trị của chân phải được
ghi là 1 ( đây cũng là giá trị ban đầu sau khi RESET ).
Ví dụ sau là chương trình ghi và xuất giá trị các Port I/O:
sfr P1 = 0x90;
sfr P3 = 0xB0;
// SFR definition for Port 1
// SFR definition for Port 3
sbit DIPswitch = P1^4;
sbit greenLED = P1^5;
// DIP switch input on Port 1 bit 4
// green LED output on Port 1 bit 5
void main (void) {
unsigned char inval;
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Timer/Counter ( bộ định thời và bộ đếm )
IC 80C52 có ba bộ Timer/Counter (Timer 0, Timer 1, và Timer 2). Timer 1 và
Timer 0 có các chức năng thông thường như nhau trong khi Timer 2 có khả năng ứng
dụng cao hơn. Các timer có thể hoạt động độc lập với nhau với các kiểu định thời, kiểu
đếm, kiểu phát tốc độ baud (cho các Port tuần tự).
Chương trình sau là một ví dụ dùng Timer 1 tạo một xung vuông có tần số 10KHz.
inval = 0;
while (1) {
if (DIPswitch == 1) {
inval = P1 & 0x0F;
greenLED = 0;
}
else {
greenLED = 1;
}
// initial value for inval
// check if input P1.4 is high
// read bit 0 .. 3 from P1
// set output P1.5 to low
// if input P1.4 is low
// set output P1.5 to high
P3 = (P3 & 0xF0) | inval; // output inval to P3.0 .. P3.3
}
}
#include <reg52.h>
/*
* Timer 1 Interrupt Service Routine: executes every 100 clock cycles
*/
static unsigned long overflow_count = 0;
void timer1_ISR (void) interrupt 3 {
overflow_count++; // Increment the overflow count
}
/*
* MAIN C function: sets Timer1 for 8-bit timer w/reload (mode 2).
* The timer counts to 255, overflows, is reloaded with 156, and
* generates an interrupt.
*/
void main (void) {
TMOD = (TMOD & 0x0F) | 0x20;
reload)
// Set Mode (8-bit timer with
TH1 = 256 - 100;
TL1 = TH1;
ET1 = 1;
TR1 = 1;
EA = 1;
// Reload TL1 to count 100 clocks
// Enable Timer 1 Interrupts
// Start Timer 1 Running
// Global Interrupt Enable
while (1);
timer 1 ISR will
// Do Nothing (endless-loop): the
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bộ biến đổi tương tự – số
Các bộ biến đổi tương tự số A/D là các linh kiện chỉ có trên một số thành viên của
họ 8051 nhưng khá phổ biến. Các bộ biến đổi A/D thường được điều khiển thông qua
thanh ghi chủ ADCON, thanh ghi này được gán cho một vị trí còn trống nào đó trong
đoạn nhớ dành cho các SFR, thanh chi ADCON cho phép người sử dụng chọn lựa kênh
cần được biến đổi A/D, bặ đầu một biến đổi mới và kiểm tra trạng thái của lần biến đổi
hiện tại.
Các bộ biến đổi A/D điển hình cần 40 chu kỳ lệnh hoặc ít hơn để hoàn tất việc
biến đổi và chúng được cấu hình để tạo ra ngắt vào lúc hoàn tất việc biến đổi, việc này
làm cho bộ vi điều khiển định hướng đến một vector ngắt cụ thể dành cho việc biến đổi
A/D. thông thường khuyết điểm của bộ biến đổi A/D là bộ này yêu cầu bộ vi điều khiển
phải ở mức tính cực thay vì đi vào nghỉ để chờ ngắt do việc biến đổi hoàn tất. Kết quả
của việc biến đổi được đọc từ một SFR khác hoặc một cặp SFR, phụ thuộc vào độ phân
giãi của bộ biến đổi.
Chương trình sau là ví dụ chuyển đổi tương tự từ tín hiệu ngõ vào sang số:
// occur every 100 clocks. Since the
80C51 CPU runs
// at 12 MHz, the interrupt happens
10 KHz.
}
#include <ADUC812.H>
#include <stdio.h>
void main (void) {
unsigned char chan_2_convert;
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xA0;
TR1 = 1;
TI = 1;
// Configure the serial port.
// Configure A/D to sequentially convert each input
channel.
ADCCON1 = 0x7C;
while (1) {
unsigned int conv_val;
unsigned char channel;
// 0111 1100
// Start a conversion and wait for it to complete.
chan_2_convert = (chan_2_convert + 1) % 8;
ADCCON2 = (ADCCON2 & 0xF0) | chan_2_convert;
SCONV = 1;
while (ADCCON3 & 0x80);
// Read A/D data and print it out.
channel = ADCDATAH >> 4;
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Bộ biến đổi số sang tương tự ( D/A coverter)
Bộ biến đổi nàychuye63n đổi tían hiệu số đi vào thành tín hiệu dòng điện ở ngõ ra.
IC Philips 87LPC769 là một trong các IC có tích hợp bộ chuyển đổi số – tương tự. IC
Philips 87LPC769 gồm 2 kênh, và bộ chuyển đổi 8bit D/A dễ dàng thực hiện với chương
trình. Ví dụ sau cho ta thấy cách dùng bộ chuyển đổi sử dụng D/A SFRs.
conv_val = ADCDATAL | ((ADCDATAH & 0x0F) << 8);
printf ("ADC Channel %bu = 0x%4.4Xrn", channel, conv_val);
}
}
/*
* This program generates sawtooth waveforms on the DAC
* of the Philips 87LPC769.
*/
#include <REG769.H>
void main (void) {
// Disable the A/D Converter (this is required for
DAC0)
ADCI = 0;
ADCS = 0;
ENADC = 0;
// Clear A/D conversion complete flag
// Clear A/D conversion start flag
// Disable the A/D Converter
// Set P1.6 and P1.7 to Input Only (Hi Z).
P1M2 &= ~0xC0;
P1M1 |= 0xC0;
ENDAC0 = 1; // Enable the D/A Converters
ENDAC1 = 1;
while (1) {
unsigned int i;
// Create a sawtooth wave on DAC0 and the
// opposite sawtooth wave on DAC1.
for (i = 0; i < 0x100; i++) {
DAC0 = i;
DAC1 = 0xFF - i;
}
}
}
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
Điều khiển cấp điện (Power Reduction Modes)
Chế độ nghỉ (Idle mode) được kích hoạt bằng cách thiết lập bit IDLE bằng 1. chế
độ nghỉ làm dừng mọi việc thực thi chương trình. Các nội dung trên RAM được bảo toàn
và mạch dao động tiếp tục hoạt động nhưng xung clock bị khó không đến được CPU.
Các bộ định thời và UART tiếp tục thực hiện bìn thường các chức năng của chúng.
Chế độ nghỉ được kết thúc bằng cách kích hoạt một điểm ngắt bất kỳ. Khi việc
thực thile65nh ngắt ISR kết thúc thì hệ thống sẽ làm việc lại từ lênh set bit IDLE lên 1.
Sau đây là chương trình thực hiện chế độ nghỉ:
Chế độ giảm cấp điện ( power down mode) được thiết lập bằng cách set bit
PDWN lên 1. trong chế độ nàyma5ch dao động trong chip bị dừng. Như vậy các bộ định
thời và UART cũng như việc thực hiện phần mềm đều tạm ngưng. Miễn là có điện áp tối
thiểu 2V đặt vào chip thì các nội dung lưu trên RAM vẫn được bảo toàn.
Cách duy nhất để buộc bộ vi điều khiển ra khỏi chế độ giảm công suất là áp đặt
thiết lập lại (RESET) bộ vi điều khiển này khi cấp điện.
Sau đây là chương trình thự hiện quá trình giãm cấp điện:
Bộ định thời WATCHDOG
Bộ định thời Watchdog có sẵn trên nhóm mở rộng của các thành viên họ 8051.
mục đích của bộ định thời Watchdog là thiết lập lại (reset) lại bộ vi điều khiển nếu bộ
định thời không được cung cấp một trình tự thao tác cụ thể trong một khoảng thời gian
xác định. Điều này ngăn ngừa việc nạp lại Wachdog mọt cách trùng khớp ngẫu nhiên bởi
các phần mềm khác.
Trong họ 8051, watchdog thường được thực hiện dưới dạng một bộ định thời khác
trên chip, bộ định thời này lập tỉ lệ giảm tần số mạch dao động hệ thống và kế đến đếm
xung clock đã được chia tỉ lệ. Khi bộ định thời quay vòng, hệ thống thiết lập lại từ đầu
(reset). Watchdog có thể được cấu hình đối với tốc độ quay vòng và thường có thể được
sử dụng làm bộ định thời khác mặc dù đây là bộ định thời có độ phân giải thấp.
sfr PCON = 0x87;
void main (void) {
while (1) {
task_a ();
task_b ();
task_c ();
PCON |= 0x01; /* Enter IDLE Mode - Wait for enabled interrupt */
}
}
sfr PCON = 0x87;
void main (void) {
while (1) {
task_a ();
task_b ();
task_c ();
PCON |= 0x02; /* Enter Power Down Mode */
}
}
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
#include <reg51f.h>
/* This function adjusts the watchdog timer compare value to the current
* PCA timer value + 0xFF00. Note that you must write to CCAP4L first,
* then write to CCAP4H. */
void watchdog_reset (void) {
unsigned char newval;
newval = CH + 0xFF;
CCAP4L = 0;
CCAP4H = newval;
}
void main (void) {
unsigned int i;
/* Configure PCA Module 4 as the watchdog and make
sure it doesn't time-out immediately. */
watchdog_reset ();
CCAPM4 = 0x48;
/* Configure the PCA for watchdog timer. */
CMOD = (CMOD & 0x01) | 0x40;
/* Start the PCA Timer: From this point on, we must reset the watchdog
timer every 0xFF00 clock cycles. If we don't, the watchdog timer
will reset the MCU. */
CR = 1;
/* Do something for a while and make sure that we don't get reset by
the watchdog. */
for (i = 0; i < 1000; i++) {
watchdog_reset ();
}
/* Stop updating the watchdog and we should get reset. */
while (1);
}
Chương trình sau đây cho thấy cách thiết lập giá trị ban đầu và reset watchdog:
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
PHẦN III
THI CÔNG MẠCH VÀ
ỨNG DỤNG LẬP TRÌNH C TRONG AT89C2051
I.Điều khiển led đơn
❖ Sơ đồ nguyên lý:
❖ Code C:
#include < at892051.h >
char const num[ ] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
void wait (void)
{ ;
}
void main( void )
{
unsigned int i;
unsigned char j;
P1 = 0;
while(1){
for( j = 0; j < 8; j++ )
{
P1 = num[ j ];
for ( i = 0; i < 10000; i++ )
{
wait();
}
}
}
}
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
II. ỨNG DỤNG CHO 2 LED 7 ĐOẠN VỚI NÚT NHẤN
❖ Sơ đồ nguyên lý:
❖ Code C:
#include < at892051.h >
char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void wait (void)
{ ; }
void main ( void ){
unsigned char cnt, right;
unsigned int i;
P1 = 0;
P3 = 0;
for( ;; ){
for (right=0;right<3;right++)
{
P3 = right;
for (cnt=0;cnt<10;cnt++)
{
P1 = num[cnt];
for (i = 0; i < 10000; i++)
{
wait();
}
}
}
}
}
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
III.ỨNG DỤNG CHO LED MATRIX 5x7.
• Sơ Đồ Nguyên Lý:
• Code C:
#include < at892051.h >
char const pat[5]={ 0x3f, 0x02, 0x04, 0x02, 0x3f };
void wait (void)
{ ;
}
void main( void )
{
unsigned char cnt, col;
unsigned int i;
P3 = 0;
P1 = 0;
for( ;; )
{
col = 1;
for (cnt=0;cnt<5;cnt++)
{
for(col = 0;col < 32;col<<=1)
{
P1 =pat[cnt];
P3 = col;
for (i = 0; i < 10000; i++)
{
wait();
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
}
}
}
}
}
SOẠN THẢO VÀ BIÊN DỊCH CHƯƠNG TRÌNH
CHO HỌ VI ĐIỀU KHIỂN 8051
1. Soạn thảo chương trình
Dùng chức năng Edit của NC (Norton Commander) hoặc bất cứ
phần mềm soạn thảo văn bản nào khác.
Lưu dưới dạng file .A51 hoặc .ASM, hoặc .C v.v..
2. Chuyển thành file object (.obj) bằng chương trình A51.exe, hoặc
ASM51.exe.
A51 baitap.a51 [enter]
ASM51 baitap.a51 [enter]
Chương trình dịch sẽ tạo ra file baitap.obj và baitap.lsl.
File.obj là file cơ sở cho việc liên kết thành chương trình thực thi được.
Còn file .lsl là file văn bản chứa các lệnh, mã lệnh và địa chỉ tương ứng.
File .lsl còn chứa các thông báo của chương trình biên dịch về những lỗi
cú pháp (nếu có).
Sau khi thực hiện biên dịch xong sẽ nhận được thông báo:
ASSEMBLY COMPLETE, NO ERRORS FOUND
Hoặc ASSEMBLY COMPLETE, x ERRORS FOUND (y)
Với x là số lỗi cú pháp và y là số thứ tự của hàng lệnh bị lỗi cuối cùng
trong chương trình.
Mở file baitap.lsl để xem các lỗi. Sau đó, mở file baitap.a51, hoặc file
baitap.asm để sửa các lỗi rồi tiến hành biên dịch lại.
3. Chuyển file object thành file hex (.HEX) bằng chương trình
OHS51.EXE hoặc OH.EXE.
Ohs51.exe baitap.obj [enter]
Oh.exe baitap.obj [enter]
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
PHẨN IV
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
KẾT LUẬN
Trong đề tài này chúng tôi tìm hiểu và nghiên cứu lập trình C cho
họ vi điều khiển 8051 và mới chỉ đi vào một số ứng dụng nhỏ như là điều
khiển led đơn , led bảy đoạn, và led ma trận . Tôi chưa khai thác hết tầm
hạn của phần mềm Keil C cũng như chip AT89C2051.
Khảo sát qua phần mềm Keil C.
Thực hiện biên dịch mã nguồn C cho led đơn, led 7 đoạn, led matrix
5x7.
HƯỚNG PHÁT TRIỂN
Hướng phát triển của đồ án là: dùng ngôn ngữ lập trình C để ứng
dụng vào hệ thống nhúng của họ vi điều khiển 8051 hoặc các họ vi điều
khiển khác như là Philips P89C51Rx2/P89V51 Rx2 mà không chỉ xuất
đơn thuần là led đơn , mà là led matrix 5x7, matrix 8x8 , hoặc LCD 1 line,
LCD 2 line, LCD 4 line…Và ứng dụng ngôn ngữ lập trình C để thiết kế
những ứng dụng thực tiễn phục vụ cho đời sống của con người.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
TÀI LIỆU THAM KHẢO
✓ Datasheet AT8051/AT89C51/AT89C2051 Preliminary (Complete)
của hãng Atmel Corporation.
✓ User’s Guide for Keil µVision.
✓ Phạm Quang Trí, Giáo trình Vi xử lý của trường ĐHCN TP.HCM.
✓ Giáo trình Vi xử lý của trường ĐHBKTPHCM.
✓ Website : http://www.keil.com /
✓ Sách embedded C
✓ Sách Ngôn ngữ C của các tác giả Quách Tuấn Ngọc .
✓ Handel-C Language Reference Manual.
Đồ Án Tốt Nghiệp
https://www.maudon.vn/
MỤC LỤC
1. Phần I
✓ tổng quan đề tài ............................................................ trang 4
• đặt vấn đề ................................................................
• Nội dung đề tài
trang 4
2. Phần II
✓ Nội dung đề tài ............................................................... trang 5
Chương 1: Giới thiệu bộ vi điều khiển ĂT9C2051 và 89C51
• Giới thiệu bộ vi điều khiển AT89C2051 ................ trang 5
• Giới thiệu sơ lược về vi điều khiển AT89C51........ trang 19
Chương 2: Giới thiệu phần mềm Keil µVision ............ trang 21
3. Phần III
✓ Thi công mạch và Ứng dụng lập trình C trong AT89C2051 trang 62
4. Phần IV
✓ Kết luận và Hướng phát triển đề tài .............................. trang 67
5. Tài liệu tham khảo ............................................................... trang 68
6. Mục lục ............................................................................... trang 69

More Related Content

What's hot

Tim hieu lenh trong pic16 f877a
Tim hieu lenh trong pic16 f877aTim hieu lenh trong pic16 f877a
Tim hieu lenh trong pic16 f877atrungnb22
 
Giáo trình thí nghiệm vi điều khiển ứng dụng
Giáo trình thí nghiệm vi điều khiển ứng dụngGiáo trình thí nghiệm vi điều khiển ứng dụng
Giáo trình thí nghiệm vi điều khiển ứng dụngMan_Ebook
 
he-thong-bai-tap-plc-co-ban
he-thong-bai-tap-plc-co-banhe-thong-bai-tap-plc-co-ban
he-thong-bai-tap-plc-co-banbtminh
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngHuyen Pham
 
Giao trinh ky thuat xung so
Giao trinh ky thuat xung soGiao trinh ky thuat xung so
Giao trinh ky thuat xung sokhoangtoicuocdoi
 
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docx
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docxTính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docx
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docxMan_Ebook
 
NGHỊCH LƯU VÀ BIẾN TẦN.pdf
NGHỊCH LƯU VÀ BIẾN TẦN.pdfNGHỊCH LƯU VÀ BIẾN TẦN.pdf
NGHỊCH LƯU VÀ BIẾN TẦN.pdfMan_Ebook
 
đIều khiển mờ và mạng noron
đIều khiển mờ và mạng noronđIều khiển mờ và mạng noron
đIều khiển mờ và mạng noronMan_Ebook
 
đIều khiển logic và plc ts. nguyễn như hiền
đIều khiển logic và plc ts. nguyễn như hiềnđIều khiển logic và plc ts. nguyễn như hiền
đIều khiển logic và plc ts. nguyễn như hiềnebookbkmt
 
Huong dan su dung phan mem Pspice
Huong dan su dung phan mem PspiceHuong dan su dung phan mem Pspice
Huong dan su dung phan mem PspiceNhu Ngoc Phan Tran
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Vũ Anh
 
Giáo Trình Máy Điện
Giáo Trình Máy ĐiệnGiáo Trình Máy Điện
Giáo Trình Máy Điệnbaotoxamac222
 
Các hệ thống điều khiển trạm biến áp
Các hệ thống điều khiển trạm biến ápCác hệ thống điều khiển trạm biến áp
Các hệ thống điều khiển trạm biến ápnataliej4
 

What's hot (20)

Tim hieu lenh trong pic16 f877a
Tim hieu lenh trong pic16 f877aTim hieu lenh trong pic16 f877a
Tim hieu lenh trong pic16 f877a
 
Giáo trình thí nghiệm vi điều khiển ứng dụng
Giáo trình thí nghiệm vi điều khiển ứng dụngGiáo trình thí nghiệm vi điều khiển ứng dụng
Giáo trình thí nghiệm vi điều khiển ứng dụng
 
Tài liệu chi tiết bộ điều khiển PLC Siemens S7-1500
Tài liệu chi tiết bộ điều khiển PLC Siemens S7-1500Tài liệu chi tiết bộ điều khiển PLC Siemens S7-1500
Tài liệu chi tiết bộ điều khiển PLC Siemens S7-1500
 
he-thong-bai-tap-plc-co-ban
he-thong-bai-tap-plc-co-banhe-thong-bai-tap-plc-co-ban
he-thong-bai-tap-plc-co-ban
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Tài liệu kỹ thuật biến tần siemens G120C
Tài liệu kỹ thuật biến tần siemens G120CTài liệu kỹ thuật biến tần siemens G120C
Tài liệu kỹ thuật biến tần siemens G120C
 
Giao trinh ky thuat xung so
Giao trinh ky thuat xung soGiao trinh ky thuat xung so
Giao trinh ky thuat xung so
 
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docx
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docxTính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docx
Tính toán, thiết kế chế tạo mạch nghịch lưu nguồn áp một pha.docx
 
Đề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOT
Đề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOTĐề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOT
Đề tài: Thiết kế hệ thống phân loại sản phẩm ứng dụng PLC, HOT
 
NGHỊCH LƯU VÀ BIẾN TẦN.pdf
NGHỊCH LƯU VÀ BIẾN TẦN.pdfNGHỊCH LƯU VÀ BIẾN TẦN.pdf
NGHỊCH LƯU VÀ BIẾN TẦN.pdf
 
đIều khiển mờ và mạng noron
đIều khiển mờ và mạng noronđIều khiển mờ và mạng noron
đIều khiển mờ và mạng noron
 
đIều khiển logic và plc ts. nguyễn như hiền
đIều khiển logic và plc ts. nguyễn như hiềnđIều khiển logic và plc ts. nguyễn như hiền
đIều khiển logic và plc ts. nguyễn như hiền
 
Đề tài: Hệ thống nối đất chống sét cho trạm biến áp 220/110kV
Đề tài: Hệ thống nối đất chống sét cho trạm biến áp 220/110kVĐề tài: Hệ thống nối đất chống sét cho trạm biến áp 220/110kV
Đề tài: Hệ thống nối đất chống sét cho trạm biến áp 220/110kV
 
Huong dan su dung phan mem Pspice
Huong dan su dung phan mem PspiceHuong dan su dung phan mem Pspice
Huong dan su dung phan mem Pspice
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520
 
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chipĐề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
Đề tài: Ứng dụng lập trình điều khiển động cơ bước sử dụng chip
 
Đề tài: Thiết kế bộ điều khiển tốc độ động cơ một chiều, HOT
Đề tài: Thiết kế bộ điều khiển tốc độ động cơ một chiều, HOTĐề tài: Thiết kế bộ điều khiển tốc độ động cơ một chiều, HOT
Đề tài: Thiết kế bộ điều khiển tốc độ động cơ một chiều, HOT
 
Giáo Trình Máy Điện
Giáo Trình Máy ĐiệnGiáo Trình Máy Điện
Giáo Trình Máy Điện
 
Các hệ thống điều khiển trạm biến áp
Các hệ thống điều khiển trạm biến ápCác hệ thống điều khiển trạm biến áp
Các hệ thống điều khiển trạm biến áp
 
Đề tài: Xây dựng bộ đếm xung, ứng dụng đo tốc độ động cơ, HAY
Đề tài: Xây dựng bộ đếm xung, ứng dụng đo tốc độ động cơ, HAYĐề tài: Xây dựng bộ đếm xung, ứng dụng đo tốc độ động cơ, HAY
Đề tài: Xây dựng bộ đếm xung, ứng dụng đo tốc độ động cơ, HAY
 

Similar to Đề tài Lập trình C cho họ vi điều khiển 8051

Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505Nguyen Luc
 
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thư Viện Số
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thuTrần Đức Anh
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfMan_Ebook
 
Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Pham Hoang
 
Cantudong phanvan thang_dh04td
Cantudong phanvan thang_dh04tdCantudong phanvan thang_dh04td
Cantudong phanvan thang_dh04tdToai Nguyen
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdfDuyL84058
 
Lap trinh-c-cho-vdk
Lap trinh-c-cho-vdkLap trinh-c-cho-vdk
Lap trinh-c-cho-vdkHiepsvd Bk
 
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVRViết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVRMr Giap
 
Bai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucBai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucmster_dang
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfNuioKila
 
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
Đồ Án Đo Điện Áp Hiển Thị Trên LCDĐồ Án Đo Điện Áp Hiển Thị Trên LCD
Đồ Án Đo Điện Áp Hiển Thị Trên LCDMr Giap
 
Do_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdfDo_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdfThnCht9
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcnamnam2005nt
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picCu Bi
 
Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Ngananh Saodem
 
Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!Văn Phong Cao
 

Similar to Đề tài Lập trình C cho họ vi điều khiển 8051 (20)

Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
Do an lap_trinh_c_cho_vi_dieu_khien_8051_8462_1505
 
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
 
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdfBÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
BÁO cáo học tập về PLC MITSHUBISHI FX3U.pdf
 
Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921
 
Cantudong phanvan thang_dh04td
Cantudong phanvan thang_dh04tdCantudong phanvan thang_dh04td
Cantudong phanvan thang_dh04td
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdf
 
Nhóm-HM.docx
Nhóm-HM.docxNhóm-HM.docx
Nhóm-HM.docx
 
Atmel avr
Atmel avrAtmel avr
Atmel avr
 
Lap trinh-c-cho-vdk
Lap trinh-c-cho-vdkLap trinh-c-cho-vdk
Lap trinh-c-cho-vdk
 
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVRViết Ngôn Ngữ Lập Trình 8051 PIC AVR
Viết Ngôn Ngữ Lập Trình 8051 PIC AVR
 
Bai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucBai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautruc
 
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdfĐồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
Đồ Án Thiết Kế Lịch Vạn Niên Điện Tử Hiển Thị Trên LCD.pdf
 
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
Đồ Án Đo Điện Áp Hiển Thị Trên LCDĐồ Án Đo Điện Áp Hiển Thị Trên LCD
Đồ Án Đo Điện Áp Hiển Thị Trên LCD
 
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAYLuận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
Luận văn: Hoàn thành Bài thí nghiệm bình trộn nhiên liệu, HAY
 
Do_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdfDo_an_Den_giao_thong.pdf
Do_an_Den_giao_thong.pdf
 
Bao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dcBao cao do an dieu khien dong co dc
Bao cao do an dieu khien dong co dc
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-pic
 
Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951
 
Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!Lập trình cỡ nhỏ - LOGO!
Lập trình cỡ nhỏ - LOGO!
 

More from Brooklyn Abbott

Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...
Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...
Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...Brooklyn Abbott
 
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tông
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tôngĐề tài Mô hình điều khiển và giám sát trạm trộn bê tông
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tôngBrooklyn Abbott
 
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị An
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị AnBáo cáo tham quan thực tế tại nhà máy thủy điện Trị An
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị AnBrooklyn Abbott
 
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...Brooklyn Abbott
 
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...Brooklyn Abbott
 
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemens
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemensNghiên cứu thiết kế và thi công tủ ats dùng logo siemens
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemensBrooklyn Abbott
 
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...Brooklyn Abbott
 
Đề tài Spectral estimation and adaptive filters
Đề tài Spectral estimation and adaptive filtersĐề tài Spectral estimation and adaptive filters
Đề tài Spectral estimation and adaptive filtersBrooklyn Abbott
 
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...Brooklyn Abbott
 

More from Brooklyn Abbott (9)

Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...
Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...
Đề tài Ứng dụng nguồn năng lượng mặt trời để cấp điện cho hệ thống camera an ...
 
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tông
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tôngĐề tài Mô hình điều khiển và giám sát trạm trộn bê tông
Đề tài Mô hình điều khiển và giám sát trạm trộn bê tông
 
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị An
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị AnBáo cáo tham quan thực tế tại nhà máy thủy điện Trị An
Báo cáo tham quan thực tế tại nhà máy thủy điện Trị An
 
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...
Nghiên cứu ứng dụng công nghệ nhận diện giọng nói vào việc xây dựng phần mềm ...
 
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...
Đề tài Ứng dụng phần mềm PSSADETP bù tối ưu công suất phản kháng cho hệ thống...
 
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemens
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemensNghiên cứu thiết kế và thi công tủ ats dùng logo siemens
Nghiên cứu thiết kế và thi công tủ ats dùng logo siemens
 
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...
Chuyên đề Siêu tụ điện công nghệ nano thân thiện môi trường và xu hướng ứng d...
 
Đề tài Spectral estimation and adaptive filters
Đề tài Spectral estimation and adaptive filtersĐề tài Spectral estimation and adaptive filters
Đề tài Spectral estimation and adaptive filters
 
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...
Đề tài Thiết kế điều khiển thiết bị bằng giọng nói với google assistant ( goo...
 

Recently uploaded

bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa2353020138
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNguyễn Đăng Quang
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...ThunTrn734461
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Recently uploaded (19)

bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoabài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
bài 5.1.docx Sinh học di truyền đại cương năm nhất của học sinh y đa khoa
 
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdfNQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
NQA Lợi ích Từ ISO và ESG Tăng Trưởng và Bền Vững ver01.pdf
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
QUẢN LÝ HOẠT ĐỘNG GIÁO DỤC KỸ NĂNG SỐNG CHO HỌC SINH CÁC TRƯỜNG TRUNG HỌC CƠ ...
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Đề tài Lập trình C cho họ vi điều khiển 8051

  • 1. https://www.maudon.vn/ BỘ CÔNG NGHIỆP TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNG NGHỆ ĐIỆN TỬ  Đồ Án Tốt nghiệp Đề Tài: LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051
  • 2. Đồ Án Tốt Nghiệp https://www.maudon.vn/ PHẦN I TỔNG QUAN về ĐỀ TÀI I. ĐẶT VẤN ĐỀ: Ngày nay, những ứng dụng của Vi điều khiển đã đi sâu vào đời sống sinh hoạt và sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân dụng hiện nay đều có sự góp mặt của Vi Điều Khiển và vi xử lí . Ứng dụng vi điều khiển trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn định của thiết bị và hệ thống.Trên thị trường có rất nhiều họ vi điều khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Zilog, PIC của hãng Microchip, H8 của Hitachi,vv… Việc phát triển ứng dụng các hệ vi xử lý đòi hỏi những hiểu biết cả về phần cứng cũng như phần mềm, nhưng cũng chính vì vậy mà các hệ vi xử lý được sử dụng để giải quyết những bài toán rất khác nhau. Tính đa dạng của các ứng dụng phụ thuộc vào việc lựa chọn các hệ vi xử lý cụ thể cũng như vào kỹ thuật lập trình. Ngày nay các bộ vi xử lý có mặt trong rất nhiều thiết bị điện tử hiện đại: từ đầu đĩa CD, máy thu hình, máy ghi hình, dàn âm thanh HiFi, bộ điều khiển lò sưởi cho đến các thiết bị điều khiển dùng trong công nghiệp. Lĩnh vực ứng dụng của các hệ vi xử lý cũng rất rộng lớn: từ nguyên cứu khoa học, truyền dữ liệu, đến công nghiệp, năng lượng, giao thông và y tế… Tùy theo kinh nghiệm và mức độ thông thạo mà chúng ta có thể sử dụng các ngôn ngữ khác ngoài hợp ngữ như: C, C++, Visual basic để có những chương trình chất lượng cao hơn. II. NỘI DUNG CỦA ĐỀ TÀI: ✓ Sơ lược về vi điều khiển AT89C51. ✓ Khảo sát vi điều khiển AT89C2051 của hãng ATMEL. • Gồm sơ đồ chân linh kiện. • Sơ đồ khối của AT89C2051. • Các nội dụng ứng dụng của AT89C2051. ✓ Giới thiệu phần mềm Keil Software µViSion 2 ✓ Ứng dụng ngôn ngữ C và Assembly điều khiển lập trình led. • Ứng dụng cho led đơn, led 7 đoạn, led ma trận… ✓ Kết luận và hướng phát triển của đề tài.
  • 3. Đồ Án Tốt Nghiệp https://www.maudon.vn/ PHẦN II NỘI DUNG ĐỀ TÀI CHƯƠNG 1: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 và 89C51 I.GIỚI THIỆU BỘ VI ĐIỀU KHIỂN89C2051 I.1 CÁC ĐẶCĐIỂM ✓ Tương thích với các sản phẩm của họ MSC-51. ✓ 2K byte bộ nhớ Flash lập trình được. ✓ Khả năng :1000 chu kì ghi/xóa. ✓ Tầm điện áp hoạt động từ 2,7 V đến 6V ✓ Tầm tần số hoạt động từ 0 Hz đến 21 MHz ✓ 2 mức khóa bộ nhớ chương trình (program memory). ✓ RAM bên trong (internal RAM) có dung lượng 128 x 8 bit. ✓ 15 đường I/O lập trình được. ✓ 2 bộ định thời /đếm 16 bit. ✓ 6 nguồn (nguyên nhân ) ngắt. ✓ Kênh nối tiếp UART lập trình được. ✓ Các ngõ ra kích LED trực tiếp. ✓ Mạch so sánh tương tự trên chip (on-chip analog comparator). ✓ Các chế độ nghỉ công suất thấp và chế độ giảm công suất. I.2 MÔ TẢ Chip AT89C2051 là chip vi điều khiển CMOS 8 bit điện áp thấp, hiệu suất cao có 2K byte bộ nhớ Flash chỉ đọc, xóa được và lập trình được PEROM (Flash programmable and erasable readonly memory). Linh kiện này được sản xuất bằng cách sử dụng công nghệ bộ nhớ không thay đổi mật độ cao của Atmel và tương thích với tập tệp của MCS-51 chuẩn công nghiệp. Bằng cách kết hợp một CPU 8-bit đa năng và linh hoạt với Flash trên chip đơn tinh thể , Atmel AT89C2051 là chip vi điều khiển mạnh cung cấp giải pháp linh động cao và mang lại hiệu quả về giá thành cho nhiều ứng dụng điều khiển nhúng (embedded control application). AT89C2051 cung cấp các đặc tính chuẩn sau đây : bộ nhớ Flash 2K byte , 128 byte RAM , 15 đường I/O, 2 bộ định thời/đếm 16-bit , kiến trúc ngắt hai mức 5 vector, port nối tiếp hoàn toàn song công , mạch so sánh tương tự chính xác, mạch dao động và tạo xung clock trên chip . Ngoài ra AT89C2051 được thiết kế có mạch logic tĩnh cho hoạt động giảm đến tần số 0 Hz và hỗ trợ 2 chế độ tiết kiệm công suất lựa chọn được bằng phần mềm. Chế dộ nghĩ ( idle mode ) sẽ dùng CPU nhưng vẫn cho phép RAM, các bộ định thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ giảm công suất duy trì nội dung của RAM nhưng làm dừng mạch dao động, không cho phép mọi chức năng khác của chip hoạt động cho đến lần reset cứng kế tiếp (nghĩa là ta thiết lập lại trạng thái ban đầu [reset] cho chiop bằng mạch điện bên ngoài).
  • 4. Đồ Án Tốt Nghiệp https://www.maudon.vn/ I.3 CẤU HÌNH CHÂN Hình1.1 I.4 SƠ ĐỒKHỐI
  • 5. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Hình1.2 ✓RAM ADDR. REGISTER: thanh ghi địa chỉ RAM . ✓RAM: vùng nhớ truy cập ngẫu nhiên (RAM). ✓FLASH: vùng nhớ FLASH. ✓B REGISTER:thanh ghi B. ✓ACC: thanhchứa. ✓STACK POINTER: con trỏ vùng nhớ xếp chồng. ✓PROGRAM ADDRESS REGISTER: thanh ghi địa chỉ chương trình. ✓TMP1: thanh ghi tạm 1 ✓TMP2: thanh ghi tạm 2 ✓ALU: đơn vị số học/logic. ✓BUFFER:bộđệm. ✓PC INCREMENTER: bộ tăng thanh ghi đếm chương trình PC. ✓INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các khối ngắt, port nối tiếp và định thời. ✓PROGRAM COUNTER: bộ đếm chương trình PC. ✓PSW: từ trạng thái chương trình . ✓TIMING AND CONTROL:mạch logic điều khiển và định thời. ✓INSTRUCTIONREGISTERED:thanhghilệnh. ✓DPTR: con trỏ dữ liệu . ✓PORT1 LATCH: bộ chốt port 1. ✓PORT3 LATCH: bộ chốt port 3. ✓ANALOG COMPARTOR:bộ so sánh tương tự . ✓OSC:mạchdaođộng. ✓PORT 1 DRIVERS: các mạch kích port 1. ✓PORT 3 DRIVERS: các mạch kích port 3. I.5 MÔ TẢCHÂN VCC Chân cấp điện áp Vcc cho chip. GND Chân nốiđất. Port 1 Port 1 là port I/O (port nhập/xuất: input/output port) hai chiều 8-bit. Các chân của port từ P1.2 đến P1.7 cung cấp các mạch kéo lên bên trong (internal pull-ups). Các chân P1.0 và P1.1 yêu cầu các mạch kéo lên bên ngoài . P1.0 và P1.1 cũng còn được sử dụng làm ngõ vào dương (AIN0) và ngõ vào âm (ÁIN), theo thứ tự, của mạch so sánh tương tự chính xác trên chip (on – chip precision analog comparator). Các mạch đệm ngõ ra (output buffer) của port 1 có thể hút dòng 20mA và kích trực tiếp các bộ hiện thị LED. Khi các logic 1 được ghi đến các chân của port 1, các chân này có thể được sử dụng làm các ngõ vào. Khi các chân từ P1.2 đến P1.7 được sử dụng làm các ngõ vào và được kéo xuống mức thấp từ bên ngoài, chúng sẽ cung cấp dòng (IIL) do các mạch kéo lên bên trong. Port 1 cũng nhận dữ liệu chương trình hay dữ kiệu mã (code data) trong thời gian lập trình và kiểm tra bộ nhớ Flash. Port 3 Các chân của port 3 từ P3.0 đến P3.5, P3.7 là chân I/O hai chiều với các mạch kéo lên bên trong. P3.6 được nối dây cứng làm ngõ vào nối đến ngõ ra của mạch so sánh trên chip và không thể truy cập như một chân I/O có mục đích tổng quát. Các mạch đệm ngõ ra của port 3 có thể hút dòng 20mA.Khi các logíc được ghi đến các chân của port 3, các chân này được kéo lên mức cao bởi các mạch kéo lên bên trong và có thể được sử dụng làm các ngõ vào. Khi là các ngõ vào, các chân nào của port 3 được kéo xuống mức thấp bởi mạch bên ngoài sẽ cung cấp dòng (IIL) do các
  • 6. Đồ Án Tốt Nghiệp https://www.maudon.vn/ mạch kéo lên. Các chân của port 3 còn được sử dụng cho các chức năng đặc biệt khác của AT89C2051 như được liệt kê dưới đây ( bảng 11,1). Port 3 cũng nhận một số tín hiệu điều khiển để lập trình và kiểm tra bộ nhớ Flash. Bảng 1.1 RST Ngõ vào reset (thiết lập lại trạng thái ban đầu). Tất cả các chân I/O được reset đến mức logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ máy trong khi mạch dao động đang hoạt động sẽ reset chip. XTAL 1 Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock bên trong. XTAL 2 Ngõ ra từ mạch khuếch đại dao động đảo. I.6 CÁC ĐẶC TÍNH CỦA MẠCH DAO ĐỘNG. XTAL 1 và XTAL 2 là ngõ vào và ngõ ra, theo thứ tự, của mạch khuếch đại đảo có thể được cấu hình để trở thành mạchdao động trên chip như được trình bày ở hình 1.3. Một tinh thể thạch anh hoặc mạch cộng hưởng gốm đều có thể sử dụng được. Để kích chip từ nguồnxung clock bên ngoài, chân XTAL 2 sẽ không kết nối trong khi chân ATAL 1 được kích như được trình bày ở hình 1.4. Không có yêu cầu nào về chu kỳ nhiệm vụ (duty cycle) của tín hiệu xung clock bên ngoài vì ngõ vào đến mạch vì ngõ vào đến mạch tạo xung clock bên trong sẽ đi qua một flipflop làm nhiệm vụ chia 2 tần số, nhưng các đặc tính về điện áp tối thiểu và tối đa của mức cao và mức thấp phải được xemxét. Hình 1.3 các kết nối của mạch dao động. Lưu ý: C1,C2=30pF  10pF đối với các thạch anh ; C1,C2=40pF  10pF đối với các bộ cộng hưởng gốm. Hình 1.4: Cấu hình kích xung clock bên ngoài.
  • 7. Đồ Án Tốt Nghiệp https://www.maudon.vn/ I.7CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR Bảng 1.2 Các giá trị khi reset và bản đồ các SFR của AT89C2051 Một bản đồ vùng nhớ trên chip được gọi là không gian thanh ghi chức năng đặc biệt SFR (special function registor) được trình bày ở bản trên đây (bảng 1.2). Lưu ý rằng không phải tất cả địa chỉ đều bị chiếm bởi các thanh ghi này, các địa chỉ không bị chiếm có thể không được thực hiện trên chip. Các truy cập đọc đến các địa chỉ này trong trường hợp tổng quát, sẽ trả về dữ liệu ngẫu nhiên và các truy cập ghi sẽ có tác động không rõ ràng. Phần mêm của người sử dụng không nên ghi các logic 1 đến các vị trí nhớ không được liệt kê vì chúng có thể được sử dụng trong các sản phẩm tương lai để đáp ứng các đặt tính mới. Trong trường hợp đó, các giá trị do reset hoặc các giá trị không tích cực của các bit mới sẽ luôn luôn bằng 0. I.8 CÁC GIỚI HẠN TRÊN MỘT SỐ LỆNH AT89C2051 là một thành viên tiết kiệm và có hiệu quả về giá thành của họ vi đièu khiển đang phát triển của Atmel. Chip này chứa 2K bộ nhớ chương trình Flash. Chip này hoàn toàn tương thích với kiến trúc MCS-51và có thể được lập trình bằng cấch sử dụng tập lệnh MCS-51. tuy nhiên, có vài cân nhắc mà ta ohải chú ý khi sử dụng một số lập trình của chip này. Tất cả các lệnh liên quan đến các hoạt động nhảy và rẽ nhánh sẽ bị giới hạn, chẳn hạn như địa chỉ đíh rơi vào trong không gian nhớ của chip, không gian này là 2K byte với AT89C2051. Vấn đề này là trách nhiệm của nguowif lập trình phầnmềm. Thí dụ, lệnh LJMP 7E0H sẽ là lệnh hợp lệ đối với AT89C2051 (có 2K byte bộ nhớ chương trình)trong khi đó lệnh LJMP 900H là lệnh không hợplệ.
  • 8. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Các lệnh rẽ nhánh LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các lệnh rẽ nhánh không điều kiện này sẽ thực thi đúng miễn là người lập trình lưu ý rằng địa chỉ đích rẽ nhánh phải nằm trong giới hạn vật lý của kích thước bộ nhớ chương trình (các vị trí nhớ từ 00H đến 7FFH đối với AT89C2051). Việc vi phạm các giới hạn khong gian vật lý có thể gây ra hành vi không biết được của chương trình CJNE [. . . ], DJNZ [. . . ], JB, JNB, JC, JNC, JBC, JZ, JNZ - Với các lệnh rẽ nhánh có điều kiện này, các quy luật giống như ở trên cũng được áp dụng. Một lần nữa, việc vi phạm các giơis hạn bộ nhớ vật lý sẽ làm cho chương trình thực hti không đúng. Đối với các ứng dụng bao gồm các cách ngắt, các vị trí địa chỉ của chương trình phục vụ ngắt (interrupt service rountine) bình thường của cấu trúc họ 89C2051 được bảo toàn. Các lệnh liên quan đến MOVX, bộ nhớ dữ liệu AT89C2051 chứa 128 byte bộ nhớ dữ liệu bên trong (intenal data memory). Như vậy trong AT89C2051,kích thước của bộ xếp chồng (stack depth) được giới hạn tới 128 byte, đay là dung lượng của RAM có sẳn. Việc truy cạp bộ nhớ bên ngoài không được hỗ trợ trong chip này và việc thưc thi chương trình bên ngoài cũng không được hỗ trợ. Như vậy không có lệnh MOVX [. . . ] nào chứa trong chương trình. Một trình dịch hợp ngữ (assembler) điển hình của 89C51 vẫn dịch các lệnh này,ngay cả khi chúng được viết dưới dạng vi phạm các giới hạn đã đề cập ở trên. Người sử dụng bộ vi điều khiển phải có trách nhiệm phải biết các tính chất vật lý và giới hạn của linh kiện đang được sử dụng và điều chỉnh các lệnh được sử dụng một cách thích hợp. Các giới hạn trên đây cho ta thấy các khuyết điểm của At89C2051. I.9 CÁC BIT KHOÁ BỘ NHỚ CHƯƠNG TRÌNH Với chip AT89C2051 ta có 2 bit khoá (lock bit), các bit này có thể để lại không lập trình (U) hoặc có thể lập trình (P) đẻ nhận thêm được các tính chất được liệt kê ở bảng 11.3. Các bit khoá chương trình LB1 LB2 Loại bảovệ 1 U U Không có tính chất khoá chương trình. 2 P U Việc lập trình thêm nữa cho bộ nhớ Flash bị cấm. 3 U U Tương tự chế độ 2, việc kiểm tra cũng bị cấm. Lưu ý: các bit khoá chỉ có thể bị xoá bằng thao tác xoá chip Bảng 1.3:Các chế độ bảo vệ của bit khoá. I.10 CHẾ ĐỘNGHỈ Trong chế đọ nghỉ CPU sẽ tự ngủ, trong khi tất cả các ngoại vi khác trên chip điều hoạt động và điều duy trì trạng thái ở chế độ tích cực. Chế đọ này được yêu cầu bởi phần mềm. Nội dung của RAM trên chip và tất cả tren các thanh ghi chức năng đặc biệt điều giữ nguyên không thay đổi trong thời gian ở chế độ này. Chế độ nghỉ có thể được kết thúc bởi cách ngắt bất kì được phép hoăc bằng cách reset phần cứng. Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên bên ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài. Cũng cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip sẽ tiếp tục thực thi chương trình bình thường từ nơi chương trình bị rời bỏ, đến 2 chu kỳ máy trước giải thuật reset bên trong lấy quyền điều khiển. Phần cứng trên chip ngăm cản việc truy cập đến RAM bên trong ở chế độ này nhưng không cấm việc truy cập đến cá chân của port. Để laọi bỏ khả năng có một thao tác không mong đợi đến một chân của port khi chế độ nghỉ được kết thúc bằng reset, lẹnh theo sau lệnh yêu cầu chế nghỉ sẽ không thể là lệnh ghi đến một chân port hoặc bộ nhớ ngoài.
  • 9. Đồ Án Tốt Nghiệp https://www.maudon.vn/ I.11 CHẾ ĐỘ GIẢM CÔNG SUẤT Trong chế độ giảm công suất, mạch dao động bị dừng và lệnh yêu cầu chế độ giảm công suất là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi chức năng đặc biệt giữ lại các giá trị của chúng cho đén khi các chế độ giảm công suất được kết thúc.Lối thoát duy nhất ra khỏi chế độ giảm công suất là sử dụng reset cứng. Reset sẽ định nghĩa lại các thanh ghi chuacứ năng đặc biệt nhưng không làm thay đổi Ram trên chip. Reset không nên được kích hoạt trươc khi điện áp VCC được khôi phục đến mức hoạt động bình thường và reset phải duy trì tích cực đủ lâu để cho phép mạch hoạt động trở lại và trở nên ổnđịnh. Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên bên ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài. I.12 LẬP TRÌNH FLASH AT89C2051 trên thị trường có dải nhớ chương trình PEROM trên chip la 2K byte ở trạng thái đã được xóa (nghĩa là toàn bộ nội dung của các byte là FFH) và sẳn sàng được lập trình. Dải nhớ chương trình được lập trình một byte cho mỗi thời điểm. Một khi dãi này đã được lập trình, để lập trình lại bất kì byte nào không trống, toàn bộ dải nhớ được xóa bằng điện. Bộ điếm địa chỉ bên trong AT89C2051 có một bộ đếm địa chỉ PEROM bên trong, bộ đếm này luôn luôn được thiết lập là 00H ở cạnh lên của RST và được tăng lên bằng cách áp dụng xung đang trở thành mức dương (positve going pluse) đến chân XTAL1. Giải thuật chương trình Để lập trình AT89C2051, theo trình tự sau đây. 1. Trình tự cấpđiện: Cấp điện giữa các chân VCC và GND Thiêt lập RST và XTLA1 đến mức thấp (GND) 2. Thiết lâp RST lên mức cao (‘H’) Thiết lập chân P3.2 lên mức cao (‘H’) 3. Áp dụng tổ hợp các mức logic ‘H’ và ‘L’ thích hợp đên các chân P3.3, P3.4, P3.5 và P3.7 để chọn 1 trong các thao tác lập trình được trình bày trong bảng các chế độ lập trình PEROM (PEROM proramming modes table). Để lập trình và kiểm tra dải nhớ chương trình: 4. Đặt dữ liệu của byte chhương trình ( hay còn gọi là byte mã) ở vị trí 00h đến các chân từ P1.0 đếnP1.7. 5. Tăng RST lên 12V để cho phép lập trình. 6. Đưa một xung đến chân P3.2 để lập trình một byte trong dải PEROM hoặc các bit khóa. Chu kỳ ghi byte được tự định thời và điển hình chiếm1.2ms. 7. Để kiểm tra dữ liệu đã lập trình, giảm thấp RST từ 12V xuống mức logic cao ‘H’ và thiết lập các chân từ P3.3 đến P3.7 đến các mức logic thích hợp. Dữ liệu xuất có thể được đọc ở các chân của port 1. 8. Để lập trình một byte ở vị trí địa chỉ kế tiếp, đưa một xung đến XTAL1 để tăng bộ đếm địa chỉ bên trong (internal address counter). đặt dữ liệu mới đến các chân của port 1. 9. Lập lại các bước từ 6 đến 8, thay đổi dữ liệu và tăng bộ đếm địa chỉ cho toàn bộ dải byte hoăc cho đến khi kết thúc tập tin đối tượng (objectfile). 10.Trình tự ngắt nguồn điện. Thiết lập XTLA1 đến mức thấp (‘L’) Thiết lập RST đến mức thấp (‘L’) Tắt nguồn cấp điện cho VCC.
  • 10. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Data Polling: AT89C2051 có Data Polling để chỉ ra việc kết thúc một chu kỳ ghi. Trong thời gian của một chu kỳ ghi, việc thử đọc byte sau cùng được ghi sẽ dẫn đến việc lấy bù dữ liệu được ghi trên chân P1.7. Một khi chu kỳ ghi đã kết thúc, dữ liệu sẽ có hiệu lực trên tất cả các ngõ ra và chu kỳ kế tiếp có thể bắt đầu. Data Polling có thể bắt đầu bất cứ lúc nào sau khki một chu kỳ ghi được khởi động. Ready/Busy: Tiến trình lập trình byte cũng có thể giám sát bằng tín hiệu ngõ ra RDY/ BSY. Chân P3.1 được kéo xuống mức thấp sau khi chân P3.2 trở thành mức cao trong thời gian lập trình sẽ chỉ ra trạng thái bận (BUSY). Chân P3.1 được kéo lên mức cao lấn nữa khi việc lập trình kết thúc sẽ chhỉ ra trạng thái sẳn sàng (READY). Program verify ( kiểm tra chưong trình ): Nếu các bit khóa LB1 và LB2 đã không được lập trình, dữ liệu chương trình có thể đọc ngược về thông qua các đường dữ liệu để kiểm tra: 1. Reset bộ đếm địa chỉ bên trong về 00H để mang RST từ ‘L’ lên ‘H’. 2. Đặt các tín hiệu thích hợp để đọc dữ liệu chương trình và đọc dữ liệu ngõ ra ở các chân của port 1. 3. Đưa một xung đến chân XTAL 1 để tăng bộ đếm địa chỉ bên trong. 4. Đọc byte dữ liệu kế tiếp ở các chân của port 1. 5. Lập lại các bước 3 và 4 cho đến khi toàn bộ dải nhớ chương trình được đọc. Các bit khóa khong thể được kiểm tra trực tiếp. Việc kiểm tra các bit khóa sẽ nhận được bằng cách tuân theo các tính chất được cho phép củachúng. Chip erase (xóa chip): Toàn bộ dải PEROM (2K byte) và hai bit khóa đựơc xóa bằng điện bằng sử dụng tổ hợp thích hợp các tín hiệu điều khiển và bằng cách giữ cho chân P3.2 ở mức thấp trong 10ms. Dải nhớ chương trinhd được ghi với tất cả các bit điều là 1 trong thao tác xóa chip va phải được thực hiện trước khi bất kỳ byte nhớ không trống nào có thể được lập trình lại. Reading the signature bytes (đọc các byte chữ ký ): Các byte chữ ký được đọc với cùng thủ tục như viêc kiểm tra bình thường các vị trí nhớ 000H, 001H, 002H, ngoại trừ các chân P3.3 và chân P3.5 phải được kéo xuống mức logic thấp. Các giá trị được trả về như sau: (000H) = 1EH chỉ ra được sản xuất bởi Atmel. (001H) = 21H chỉ ra 89C2051. I. 3CÁC CHẾ ĐỘ LẬP TRÌNH FLASH Các chế độ lập trình Flash được tóm tắt ở bảng 1.4.
  • 11. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Lưu ý: 1. Bộ đếm địa chỉ PEROM bên trong được reset về 000H ở cạnh lên của RST và được tăng bởi xung dương ở chân XTAL 1. 2. việc xóa chip yêu cầu xung PROG kéo dài 10ms. 3. Chân P3.1 được kéo xuống mức thấp trong thời gian lập trình để chỉ ra RDY/BSY Write code data: ghi dữ liệu chương trình. Read code data: đọc dữ liệu chương trình. Write lock : ghi các bitkhóa. Chip erase : xóa chip. Read signature byte : đọc byte chữ ký SEE FLASH PROGRAMMING MODE TABLE:xem bảng chế độ lập trình Flash. PGM DATA: dữ liệu chương trình. TO INCREMENT ADDRESS COUTER: để tăng bộ đếm địa chỉ. I.14 CÁC ĐẶC ĐIỂM LẬP TRÌNH FLASH Ký hiệu Thông số Min Max Đơn vị VPP Điện áp cho phép lập trình. 11.5 12.5 V IPP Dòng điện cho phép lập trình. 250 µA tDVGL Thời gian từ lúc dữ liệu đến khi PROG ở mức thấp. 1.0 µs tGHDX Thời gian giữ dữ liệu sau khi PROG tích cực. 1.0 µs t EHSH Thời gian P3.4 ( NABLE ) từ ‘H’ lên VPP. 1.0 µs tSHGL Thời gian từ lúc thiết lập VPP đến khi PROG ở mức thấp. 10 µs tGHSL Thời gian giữa VPP sau khi PROG tích cực. 10 µs tGLGH Độ rộng của PROG. 1 110 µs tELQV Thời gian từ lúc ENABLE ở mức thấp cho đến khi dữ liệu có 1.0 µs
  • 12. Đồ Án Tốt Nghiệp https://www.maudon.vn/ hiệulực. tEHQZ Thời gian thả nổi dữ liệu sau khi ENABLE tích cực. 0 1.0 µs tGHBL Thời gian từ khi PROG ở mức cao cho đén khi BUSY o mức thấp. 50 ns tWC Thời gian của chu kỳ ghi byte. 2.0 ms tBHIH Trì hoãn từ RDY/BSY đến khi clock tăng. 1.0 µs tHIL Thời gian c0lock ở mức cao. 200 ns Bảng 11.5 Các đặt điểm lập trình và kiểm tra Flash. TA = 00C đến 700 C, VCC = 5.0 ± 10%. Chỉ sử dụng ở chế độ lập trình 12 V. I.15 CÁC ƯỚC LƯỢNG CỰC ĐẠI TUYỆT ĐỐI Tầm nhiệt độhoạt động: từ -550C đến +1250C. Tầm nhiệt độtích trữ: từ -660C đến +1500C. Điện áp trên bất kì chân nào so với đất (GND): -1.0 V đến +7 V. Điện áp cấp điệncực đại: 6.6 V. Dòng DC ngõ ra: 25.0 mA. CÁC DẠNG SÓNG LẬP TRÌNH VÀ KIỂM TRA FLASH Hình 1.5 Các dạng sóng lập trình và kiểm tra Flash.
  • 13. Đồ Án Tốt Nghiệp https://www.maudon.vn/ DẠNG SÓNG MẠCH KÍCH XUNG CLOCK BÊN NGOÀI Hình 1.6:Dạng sóng mạch kích xung clock bên ngoài. MẠCH KÍCH XUNG CLOCK BÊN NGOÀI Ký hiệu Thông số VCC=2.7V đến6.0V Min Max VCC=4.0V đến6.0V Min Max Đơn vị 1/tCLCL Tần số daođộng. 0 12 0 24 MHZ tCLCL Chu kỳ xung clock. 83.3 41.6 ns tCHCX Thời gian mức cao. 30 15 ns tCLCX Thời gian mức thấp. 30 15 ns tCLCH Thời gian tăng (cạnh lên). 20 20 ns tCHCL Thơi gian giảm (cạnh xuống). 20 20 ns Bảng 1.5 Các thông số của mạch kích xung clock bên ngoài. ĐỊNH THỜI PORT NỐI TIẾP: ĐIỀU KIỆN KIỂM TRA CHẾ ĐỘ THANH GHI DỊCH VCC = 5.0 ± 20%; điện dung tải = 80 pF. Ký hiệu Thông số Dao động 12 MHZ Min Max Dao động thayđổi Min Max Đơn vị Thời gian chu kỳ xung clock port nối tiếp. 1.0 12tCLCL µs Thời gian từ lúc thiết lập dữ liệu xuất đến cạnh lên của xung clock 700 10tCLCL – 133 ns Thời gian giữ dữ liệu xuất sau cạnh lên của xung clock. 50 2tCLCL – 177 ns Thời gian giữ dữ liệu nhập saucạnh lên của xung clock 0 0 ns Thời gian từ cạnh lên xung clock đến khi dữ liệu nhậpcó hiệu lực. 700 10tCLCL – 133 ns Bảng 1.6 Các điều kiện kiểm tra chế độ định thời thanh ghi dịch
  • 14. Đồ Án Tốt Nghiệp https://www.maudon.vn/ CÁC DẠNG SÓNG ĐỊNH THỜI CHẾ ĐỘ THANH GHI DỊCH Hình 1.7 Dạng sóng định thời chế độ thanh ghi dịch. DẠNG SÓNG NGÕ VÀO/NGÕ RA KIỂM TRA AC1 Hình 1.8:Dạng sóng ngõ vào/ngõ ra kiểm tra AC. Lưu ý: 1. Các ngõ vào AC trong thời gian kiểm tra được kích ở (VCC – 0.5) V đối với logic 1 và 0.45 V đối với logic 0. Các phép đo định thời được thực hiện ở VIHmin đối với logic 1và VILmax đối với logic0. DẠNG SÓNG THẢ NỔI1 Hình 1.9 Dạng sóng thả nổi. Timing reference points: các điểm tham chiếu định thời. Lưu ý: 1. Đối với mục đích định thời, một chân port sẽ không còn thả nổi kho có sự thay đổi 100mV từ điện áp trên tải. Một chân port bắt đầu thả nổi khi có sự thay đổi 100mV từ mức VOH/VOL (có tải).
  • 15. Đồ Án Tốt Nghiệp https://www.maudon.vn/ ICC Ở CHẾ ĐỘ TÍCH CỰC Hình 1.10: ICC ở chế độ tích cực. ICC Ở CHẾ ĐỘ NGHỈ VÀ CHẾ ĐỘ GIẢM CÔNG SUẤT Hình 1.11: (a) ICC ở chế độ nghỉ ,(b) ICC ở chế độ giảm công suất.
  • 16. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Packaging Information
  • 17. Đồ Án Tốt Nghiệp https://www.maudon.vn/ II.Giới thiệu về Vi Điều Khiển AT89C51 ❖ MSC51 là một họ Vi Điều Khiển (Microcontroller) do hãng Intel sản xuất.Các IC của họ MSC51 tiêu biểu là 8051 và 8031. Đặc biệt, vi điều khiển 89C51 sản xuất gần đây mang các đặc điểm sau: ✓ 4Kbytes EEPROM. ✓ 128 bytes RAM. ✓ 4 Port I/O (Input/Output). ✓ 2 bộ định thời Timer 16 bits. ✓ Giao tiếp nối tiếp. ✓ 64Kbytes không gian bộ nhớ chương trình mở rộng. ✓ 64Kbytes không gian bộ nhớ dữ liệu mở rộng. ✓ Một bộ xử lý luận lí (thao tác trên các bits đơn). ✓ 210 bits được địa chỉ hóa. ✓ Bộ nhân chia 4µs. ❖ HỆ THỐNG GIAO TIẾP PORT. • Port 0: port 0 là một port hai chức năng trên các chân 32-39. Hãy nhớ rằng : trên các chân này chưa có điện trở kéo dương, do đó khi cần chúng ta cần nhớ đến đặc điểm này. • Port 1: port 1 là một port I/O trên các chân 1-8. • Port 2: port 2 là một port công dụng kép trên các chân 21-28. • Port 3: port 3 là một port công dụng kép trên các chân 10-17. Các chân này đều có nhiều chức năng, các công dụng chuyển đổi có liên hệ tới các đặc tính đặc biệt của 8051 ở bảng sau:
  • 18. Đồ Án Tốt Nghiệp https://www.maudon.vn/ ❖ CÁC TÍN HIỆU ĐIỀU KHIỂN: Chip AT89C51 có các tín hiệu điều khiển cần phải lưu ý như sau: • Tín hiệu vào EA trên chân 31 thường đặt lên mức cao ( +5V) hoặc mức thấp (GND) Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52). Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối đa đến 64Kbyte). Ngoài ra người ta còn dùng EA làm chân cấp điện áp 12V khi lập trình EEPROM trong 8051. • CHÂN PSEN (Program store enable): PSEN là chân tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển cho phép chương trình mở rộng, PSEN thường được nối đến chân OE (Output Enable) của một EPROM hoặc ROM để cho phép đọc các bytes mã lệnh. Hãy nhớ rằng : bình thường chân PSEN sẽ được thả trống ( No Connect).Chỉ khi nào cho EA ở mức thấp thì lúc đó: PSEN sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của chương trình được lấy từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh. PSEN ở mức thụ động (mức cao) nếu thi hành chương trình trong ROM nội của 8951. ❖ CÁC CHÂN NGUỒN: AT8951 hoạt động ở nguồn đơn +5V.Vcc được nối vào chân 40, và Vss (GND) được nối vào chân 20.
  • 19. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Chương 2: Giới thiệu chung về phần mềm Keil Software Phần mềm Keil SoftWare 8051 công cụ phát triển được liệt kê ở dưới là những chương trình mà để biên tập mã C, tập hợp những tập tin assembly, liên kết và định vị những đoạn chương trình hướng đối tượng, những thư viện , khởi tạo file HEX, và trình gỡ lỗi. • µVision® là một môi trường phát triển tích hợp mà kết hợp quản lý project ,soạn thảo mã nguồn và trình gỡ lỗi trong môi trường mạnh. • Cx51 ANSI tối ưu bộ biên dịch C và tạo ra những đoạn chương trình hướng đối tượng định vị lại từ mã nguồn C. • Ax51 Macro Assembler tạo ra những đaọn chương trình hướng đối tượng định vị lại 8051 mã nguồn assembly. • BL51 bộ kết nối / dò tìm định vị lại những đoạn chương trình hướng đối tượng được tạo ra từ C51 và A51 vào những đoạn chương rình hướng đối tượng tuyệt đối. • LX51 mở rộng bộ kết nối / bộ dò tìm hộ trợ những phương án thiết bị mở rộng và cung cấp nhựng đặc tính bổ sung.LX51 hỗ trợ tất cả các phương án của Cx51 và Ax51. • LIBx51 trình quản lý thư viện kết hợp những đoạn chương trình hướng đối tượng vào trong những thư viện mà có thể được sử dụng bởi bộ kết nối. • OHx51 bộ biến đổi sang file HEX . tạo ra những file HEX từ những đoạn chương trình hướng đối tượng tuyệt đối. • RTX51 Tiny hệ thống thời gian thực RTX51 , thiết kế đơn giản những dự án phần mềm phức tạp, định thời.
  • 20. Đồ Án Tốt Nghiệp https://www.maudon.vn/ II.1 CHU TRÌNH PHÁT TRIỂN PHẦN MỀM Khi chúng ta sử dụng phần mềm Keil µVision , chu trình phát triển phần mềm cũng giống như chu trình phát triển bao phần mểm khác. 1. Khởi tạo project , lựa chọn chip từ cơ sở dữ liệu thiết bị , thiết đặt những công cụ định hình. 2. Tạo ra những tập tin nguồn C hoặc assembly. 3. Xây dựng những ứng dụng với Project Manager. 4. Kiểm tra lỗi tập tin nguồn. 5. Kiểm tra những ứng dụng được liên kết. Sơ đồ khối sau đây minh họa chu trình phát triển phần mểm µVision/ARM đầy đủ .Mỗi phần được mô tả ở bên dưới. II.2 µVision IDE µVision IDE kết hợp quản lý dự án , trình biên tập với sự sửa chữa lỗi, cài đặt tùy chọn, phương tiện, và giúp đỡ trực tuyến. Sử dụng µVision để tạo ra những tập tin nguồn và tổ chức chúng vào trong những dự án ứng dụng. µVision IDE tự dộng biên tập, lắp ráp, và liên kết những ứng dụng nhúng. C51 Compiler & A51 Macro Assembler (Trình biên tập C51 và trình hợp ngữ A51 ) Những tập tin nguồn được tạo ra bởi µVision IDE và được đưa qua C51 hoặc A51.Trình biên tập và trình lắp ráp xử lý những tập tin nguồn và tạo ra những tập tin đối tượng định vị lại được.
  • 21. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Trình biên dich Keil C51 là một sự thi hành mã ANSI đầy đủ của ngôn ngữ lập trình mà hỗ trợ tất cả các đặc tính chuẩn của ngôn ngữ C. Ngoài ra , nhiều đặc tính hỗ trợ trực tiếp kiến trúc 8051 đã được thêm. Chương trình Keil A51 hỗ trợ tập lệnh đầy đủ của 8051. LIB51 Library Manager (trình quản lý thư viện LIB51) LIB51 cho phép chúng ta tạo ra thư viện mục tiêu từ những tập tin đối tượng được tạo ra từ trình biên tập và trình lắp ráp. Những thư viện được định dạng đặc biệt, sắp đặt cho chương trình những tập hợp của những đoạn chương trình hướng đối tượng mà có thể được kết nối những lần sau.Khi bộ kết nối xử lý một thư viện , chỉ những đoạn chương trình hướng đối tượng cần thiết để tạo ra chương trình mới được sử dụng. BL51 Linker/Locator ( Bộ kết nối BL51/dò tìm) Bộ kết nối BL51/dò tìm tạo ra file LF/DWARF tuyệt đối sử dụng những đoạn chương trình hướng đối tượng từ những thư viện và được tạo ra từ trình biên tâp và trình lắp ráp.Một tập tin đối tượng tuyệt đối hoặc mođun chứa đựng những mã và dữ liệu không xác định, Tất cả các đoạn mã và dữ liệu hiện có tại những vị trí bộ nhớ cố định. ELF/DWARF có thể được sử dụng • Lập trình một Flash Rom hoặc những thiết bị bô nhớ khác • Với trình gỡ lỗi • Chương trình chạy thử Vision Debugger (Trình gỡ lỗi ) Trình gỡ lỗi có tính chất tượng trưng, mức mức nguồn gỡ lối lý tưởng phù hợp và tin cậy.Trình gỡ lỗi bao gồm một simulator high-speed để chúng ta mô phỏng 8051. Những thuộc tính của chip mà chúng` ta sử dụng thì tự động định hình khi chúng ta lụa chọn từ Device Database. Trình sửa lỗi cung cấp vài phương pháp để cho chúng ta kiểm tra các thiết bị phần cứng • Thiết đặt MON51 trên hệ thống và tải chương trình của bạn sử dụng giao diện Monitor-51 tới trình gỡ lỗi. • Sử dụng giao diện GDI để kèm theo trình gỡ lỗi tới hệ thống Bản dưới đây liệt kê những thư mục công cụ phát triển phần mềm Keil .
  • 22. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Assembler Source Template and Include files for the Macro Assembler.( file nguồn assembly và những file cho trình dịch Macro Assembler) Executable files of the µVision/C51 tool chain.( những tập tin chạy của µVision/C51) Example programs ( những chương trình ví dụ) Configuration files for Flash Monitor and pre-configured versions.( Cấu hình cho Flash Monitor và những phiên bản định hình On-Line documentation for µVision/C51.(tài liệu trực tuyến cho µVision/C51) Include files for the C compiler.(những tập tin cho trình biên tập C) Files for ISD51 In-System Debugger and pre-configured versions.(những file hỗ trợ ISD51 trình gỡ lỗi Run-time libraries and CPU startup files.(thư viện và CPU khởi động sắp xếp nhưng file) Configuration files for Monitor-51 (for Classic 8051 Devices).(cấu hình cho Monitor- 51) Configuration files for Monitor-390 (for Dallas Contiguous Mode) .(cấu hình cho monitor-390) RTX51 Tiny Version 2 Real-Time Operation System.(hệ thống bộ định thời) Thư mục µVision
  • 23. Đồ Án Tốt Nghiệp https://www.maudon.vn/ II.3 GIAO DIỆN NGƯỜI DÙNG II.4 Create a Procject (Tạo một Procject ) µVision là một ứng dụng Windows và chương trình được kích hoạt khi click lên biểu tượng (icon) Create a Project File (tạo ra một dự án) Để tạo một hồ sơ mới ta lựa chọn từ µVision menu Project – New Project…một hội thoại Windows hiện ra và hỏi bạn đặt tên cho cho Project mới vừa khởi tạo.Chúng gợi ý rằng ta nên sử dụng một Folder riêng cho mỗi Project.Đơn giản hơn để tạo một Project mới chọn biểu tượng để tạo ra một Procject mới . µVision tạo ra một Procject mới với tên PROCJECT1.UV2 chứa đựng một tên nhóm và hồ sơ mặc định. Ta có thể thấy tên này trong Project Workspace – Files . Khi ta tạo ra một Procject mới uVision hỏi ta lựa chọn CPU cho Procject .hộp thoại lựa chọn thiết bị xuất hiện cho ta thấy cơ sở dữ liệu thiết bị uVision , chỉ cần lụa chọn bộ điều khiển mà ta sử dụng . Ví dụ như ta chọn Bộ điều khiển Philips 80C51RD+ .Những tùy chọn công cụ này cho Philips 80C51RD+ được rút gọn bên cấu hình công cụ.
  • 24. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Chú ý: • Ta có thể lựa chọn Bộ kết nối mở rộng (LX51) và trình Assembler mở rộng (AX51) trong hộp thoại.Linker và Assembler mở rộng sẵn sàng trong the Keil Professional Developer's Kit và đưa cho chúng ta những đặc tính bổ sung . • Khi ta tạo ra một Procject mới , uVision có thể tự động thêm mã khởi động CPU • Trên một vài thiết bị , môi trường uVision cần những tham số bổ sung mà ta phải thiết lập.Đọc những thông tin này một cách cẩn thận được cung cấp dưới sụ mô tả của hộp thoại này, từ đó có thể có những chỉ dẫn bổ sung cho cấu hình thiết bị.
  • 25. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Ta có thể tạo ra một tập tin nguồn mới với menu option File – New. Điều này mở một cửa sổ biên tập, nơi mà ta có thể biên soạn mã nguồn. uVision những cú pháp màu khi ta lưu file với hộp thoại (File –Save As…) dưới tên *.C. Ví dụ chúng ta lưu dưới tên Main.C Khi ta đã tạo tập tin nguồn , ta có thể thêm file tới Procject . Những đề xuất uVision vài cách để thêm tập tin nguồnvào một Procject. Ví dụ như ta có thể lựa chọn nhóm Procject Workspace-Files và click chuột phải để mở menu. Tùy chọn Add files được mở ra. Chọn file MAIN.C mà ta đã tạo ra.
  • 26. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Thêm và định hình mã khởi Động ( Add and Configure the Starup Code) File STARUP.A51 là mã khởi động cho đa số CPU 8051. Mã khởi động làm sạch bộ nhớ dữ liệu và tạo những con trỏ ngăn xếp. Ngoài ra một vài dẫn xuất 8051 yêu cầu một mã khởi tạo CPU phù hợp với với cấu hình phần cứng. Ví dụ Philips 8051RD+ đề nghị ta chèn on-chip xdata RAM mà cần được thêm vào trong mã khởi động. Khi ta cần sửa đổi file toán học cho phù hợp với phần cứng, ta phải copy file STARUP.A51 từ C:KEILC51LIB đến ngăn Procject Tạo nhóm Procject Nhóm hồ sơ cho phép chúng ta tổ chức những Procject lớn. Cho mã khởi động CPU và những cấu hình hệ thống mà ta có thể tạo ra một Procject – những thành phần, môi trường , hướng dẫn …trong hộp thoại.Chèn một group mới để tạo ra một hệ thống có tên nhóm hồ sơ ngăn xếp. trong Procject mới có thể kéo thả file STARTUP.A51 lên nhóm file mới này. Bây giờ , Project Workspace – Files liệt kê tất cả trong Project . Để mở một Project soạn thảo, nhấn double lên file Project Workspace .Ta có thể cần định hình STARTUP.A51 trong trình biên tập.
  • 27. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Thiết đặt những tùy chọn cho những mục tiêu. uVision cho chúng ta thiết đặt những tùy chọn cho mục tiêu phần cứng .Hộp thoại những tùy chọn cho những mục tiêu được mở qua biểu tượng thanh công cụ hoặc qua menu tùy chọn Project. Trong bảng mục tiêu chỉ rõ những tham số thích đáng phần cứng và thành phần chip mà bạn đã lựa chọn. Sau đây là ví dụ những thiết đặt : Sau đây là bản mô tả những tùy chọn của hộp thoại Target
  • 28. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Xtal – chỉ tần số clock mà CPU của bạn hoạt động. Trong đa số trường hợp giá trị này đồng nhất với tần số XTAL.( Specifies the CPU clock of your device. In most cases this value is identical with the XTAL frequency) Memory Model – chỉ rõ bộ nhớ C51, để bắt đầu những ứng dụng mặc định là một sự lựa chọn tốt. Allocate On-Chip... Use multiple DPTR registers – chỉ rõ cách dùng những thành phần của chip cho phép mã khởi động CPU , nếu ta đang sử dụng bộ nhớ xdata RAM ta cũng phải cho phép sự truy nhập XRAM trong STARTUP.A51 sắp xếp. Off-chip...Memory – chỉ rõ tất cả các vùng bộ nhớ ngoài Chỉ rõ những tham số cho mã và xdata. Tham chiếu tơi Code Banking để biết thêm chi tiết hơn Specifies the parameters for code and xdata banking. Refer to the "Code Banking" section for more information Vài tùy chọn trong hộp thoại chỉ có nếu ta đang sử dụng LX51 Linker/Locater. LX51 Linker/Locater chỉ có trong gói PK51 Xây dựng Project và khởi tạo file HEX Những thiết đặt công cụ dưới những tùy chọn-mục tiêu mà ta cần để khởi động một ứng dụng mới. Ta có thể dịch tất cả các tập tin nguồn và kẻ những ứng dụng với một cái click trên biểu tượng Build Target . Khi ta xây dựng với những lỗi cú pháp, uVision sẽ trình bày những thông báo lỗi và cảnh báo với những lỗi có thể xảy ra. Nhấn double trên hàng thông báo lỗi để mở file nguồn để định vị trong trình biên tập uVision Một lần thành công ta có thể khởi động trình gỡ lỗi như mô tả dưới Testing Programs với trình gỡ lỗi uVision .
  • 29. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bây giờ ta có thể sửa lỗi mã nguồn hoặc thêm những tập tin nguổn mới vào dự án. Nút thanh công cụ Build Target dịch những file nguồn chỉ được sửa đổi, hoặc file nguồn mới và file thực thi. uVision lưu giữ một danh sách và những file được sử dụng trong file nguồn. Thậm chí những tùy chọn công cụ được lưu trữ trong danh sách phụ thuộc, để uVision xây dựng lại nếu cần thiết, với lệnh Rebuild Target , tất cả những file nguồn được dịch bất chấp những cải biến. Sau khi kiểm tra ứng dụng của bạn, nó có thể yêu cầu tạo ra file HEX vả để tải xuống phần mềm ứng dụng vào trong thiết bị sử dụng một tiện ích lập trình Flash. uVision tạo file HEX với mỗi lần xây dựng dưới những tùy chọn cho Target-Outout dược cho phép. Tùy chọn Merge32K Hexfile sẵn sàng cho những ứng dụng Code Applocations khi ta đã lựa chọn Extended Linker LX51. Ta có thể khởi động tiện ích lập trình Flash sau khi trình dịch làm quá trình khi bạn chỉ rõ những chương trình Run Program#1.
  • 30. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Chương trình mẫu Mục này mô tả những chương trình mẫu chạy trên Keil C51. Những chương trình mẫu này sẵn sàng cho bạn chạy thử. Những chương trình này giúp ta học cách sử dụng các công cụ của Keil C51. Đồng thời, ta cũng có thể sao chép các đọan mã của chúng vào chương trình của chúng ta. Các chương trình mẫu của Keil C51 được lưu trong thu mục C:KEILC51EXAMPLES . Mỗi chương trình được lưu trong một thư mục riêng cùng với một tập tin dữ kiện giúp bạn có thể nhanh chóng xây dựng và đánh giá chương trình. Ngoài ra, các chương trình nhỏ riêng biệt cho RTX – 51 cũng được cung cấp trong mục RTX – 51. Bảng sau là danh sách các chương trình mẫu trong C51 và tên thư mục của chúng. Kiểu mẫu Mô tả ADI 83x Các chương trình dùng cho các thiết bị tương tự ADuC83x và ADuC84x mà nó chỉ ra các thiết bị mở rộng và cách dùng ADI MONITOR DRIVER ASM Một chưogn trình hợp ngữ đơn giản mà ta cả thể viết một đoạn text cho các port tuần tự Benchmarks... Vài chương trình riêng biệt: Dhrystone, Whetstone, Sieve. BLINKY Loại 8051 Blinky làm sáng LED trên board Keil MCBx51 CodeBanking... Kiểu mã Banking chỉ ra việc lập trình trên bộ nhớ 64K CSAMPLE Bộ cộng và trừ đơn giản mà cho thấy làm sao xây dựng một chương trình với nhiều module trên Vision Dallas 390 Vài ví dụ sử dụng Dallas Contigious Addressing Mode mà nó có sẵn một vài thiết bị khác nhau như DS80C390, DS80C400, DS80C41x, DS5240, and DS5250. FarMemory Làm sao mở rộng ô nhớ tr6n 64K Hello Chương trình hiện chữ Hello world. Chạy thử nó trước khi sử dụng Vision. Infineon C517 Cho thấy cách dùng Infineon mở rộn các thiết bị: MDU và bộ giao điện nối tiếp. Infineon XC866 Những chương trình mẫu cho bo mạch Keil MCBXC866 hỗ trợ được thiết bị Infineon XC800 M8051EW Các chương trình mẫu cho Mentor M8051EW MEASURE Là hệ thống thu thập và tập hợp những dữ liệu số và tương tự. Là chương trình điều khiển hệ thống đo lường nhiệt độ từ xa. Philips 80C51MX Là chương trình mẫu cho họ Philips 80C51MX hỗ trợ tới 16MB vùng địa chỉ Philips LPC9xx Chương trình cho bo mạch Keil MCB900 Evaluation mà hỗ trợ các thiết bị Philips LPC900 - LPC94x Philips LPC95x Chương trình cho bo mạch Keil MCB9xx Evaluation mà hỗ trợ các thiết bị Philips LPC950 - LPC99x ST uPSD Chương trình mẫu cho dòng ST uPSD cho thấy cấu hình hệ thống Keil ULINK USB-JTAG Adapter TI MSC121x Chương trình cho các thiết bị TI MSC121x chỉ ra cách dùng hệ thống giải mã ISD51 In-System Debugger TI MSC1200 Chương trình cho các thiết bị TI MSC1200 chỉ ra cách dùng hệ thống giải mã ISD51 In-System Debugger
  • 31. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Để bắt đầu sử dụng một trong các chương trình mẫu, ta mở menu Project – Open Project trong Vision rồi mở tâp tin chương trình. Các mục trong chương này mô tả làm sao sử dụng các công cụ để xây dựng các chương trình sau: ▪ HELLO : chương trình C viết cho 8051 ▪ MEASURE: hệ thống đo lường từ xa. HELLO Chương trình HELLO được lưu trong thư mục C:KEILC51EXAMPLESHELLO . chương trình này không làm gì hơn là xuất đoạn text “ HELLO WORLD “ ra port. Toàn bộ chương trình được lưu trong tập tin nguồn là HELLO.C Ứng dụng nhỏ này giúp bạn có thể biên tập, liên kết và gỡ lỗi một ứng dụng. Bạn có thể thực hiện thao tác này từ dòng lệnh trên DOS, sử dụng tập tin dạng batch hoặc dùng Vison trên windown với các tập tin chương trình. Phần cứng cho chữ HELLO dựa vào CPU 8051 chuẩn. Một con chip ngoại vi được sử dụng cho các dãy port. Tuy nhiên, với Vision bạn không cần phải có 1 CPU vì chương trình đã đóng vai trò phần cứng yêu cầu cho chương trình này. Tập tin chương trình HELLO Trong Vision, những ứng dụng được lưu trong tập tin chương trình. Một chương trình được viết cho chữ HELLO. Để mở chương trình này ta chọn Open Project từ menu Project và mở tập tin HELLO.UV2 từ thư mục …C51EXEMPLESHELLO. Soạn thảo chương trình HELLO.C Bây giờ bạn có thể soạn thảo chương trình HELLO.C bằng cách nhấp đúp chuột vào cửa sổ project file. Vision sẽ tải và hiển thị nội dung file HELLO.C trên cửa sổ làm việc.
  • 32. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Biên dịch và kết nối HELLO Khi bạn đã sẵn sàng biên dịch và liên kết chương trình của mình, sử dụng lệnh Build Target từ menu Project hoặt thanh công cụ Build. Vision bắt đầu biên dịch và liên kết tạo ra một đoạn chương trình mà bạn có thể tải vào Vision cho việc thử lỗi. Quá trình xây dựng được liệt kê trong cửa sổ ngõ ra. Chú ý Bạn cần phải không gặp lỗi khi chạy các chương trình mẫu chạy thử HELLO Khi chương trình HELLO đã được biên dịch và kết nối ta có thể kiểm tra nó với trình tìm lỗi của µVision. Trong µVision, sử dụng lệnh Start/Stop Debug Session từ menu Debug hoặc thanh công cụ. µVision khởi tạo trình báo lỗi và khởi động các chương trình con đến các chương trình chính. Sau đây là màn hình hiển thị:
  • 33. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Mở cửa sổ Serial Window #1 cho ta thấy các hiển thị ở ngõ ra với lệnh mở cửa sổ Serial Window #1 từ menu VIEW hoặc thanh công cụ Debug. Chạy chương trình HELLO với lệnh GO từ thanh công cụ Debug. Chương trình lời chào được thực hiện và hiển thị đoạn văn bản “HELLO WORLD” trong cửa sổ serial window. Sau khi ngõ ra hiển thị “HELLO WORLD” nó sẽ chạy với vòng lập vô tận. Dừng việc chạy chương trình HELLO với lệnh Halt từ menu Debug hoặc thanh công cụ. Bạn cũng có thể đánh lệnh ESC trong trang lệnh của cửa sổ OUTPUT. Trong suốt quá trình kiểm tra lỗi của µVision sẽ được hiển thị như sau:
  • 34. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Chạy từng bước và ngắt ngang Sử dụng lệnh Insert/Remove Breakpoints từ thanh công cụ hoặc từ trình đơn trên menu lập trình. Ta dùng chuột phải để đặt điểm dừng trên điểm bắt đầu của hiển chính. Sử dụng lệnh Reset CPU từ menu DEBUG hoặc thanh công cụ. Nếu bạn dừng chương trình đang chạy bởi lậnh RUN. µVision sẽ dừng chương trình tại điểm dừng mà bạn đã đặt. Bạn có thể chạy từng bước chương trình HELLO bằng cách ấn nút STEP trên thanh công cụ DEBUG. Những câu lệnh sẽ được chỉ ra với mũt tên màu vàng. Mũi tên sẽ di chuyển theo từng bước thực hiện. Đặt con trỏ chuột trên các biến để xem giá trị của chúng. Bạn có thể chạy hoặc dừng chương trình bất kỳ kúc nào với lệnh START/STOP DEBUG. MEASURE: hệ thống điều khiển thiết bị từ xa Chương trình điều khiển (MEASURE) được lưu trong thư mục ..C51ExamplesMeasure. Chương trình này sử dụng các dữ liệu số và tương tự thường được dùng trong các đài khí tượng và điều khiển trong công nghiệp. Chương trình này chạy trên P89LPC935 CPU và ghi dữ liệu từ hai port kỹ thuật số và bốn ngõ vào chuyển đổi A/D. Một bộ định thời (Timer) điều khiển quá trình lấy dữ liệu. Mẫu dữ liệu có thể định hình từ 1 mili giây đến 60 phút. Mỗi dữ liệu đo được trong suốt thời gian hoặc từ các kênh ngõ vào đề được lưu vào RAM.
  • 35. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Tập tin lệnh của chương trình đo lường Tập tin này có tên là MEASURE.UV2. để mở tập tin ta dùng lệnh Open Project từ menu Project và chọc file MEASURE.UV2 trong thư mục C:KeilC51ExamplesMeasure. Trang tập tin trong cửa sổ Project cho ta thấy những tập tin nguồn dùng để biên soạn chương trình trắc lượng. Chương trình đo lường mẫu gồm có 3 tâp tin nguồn đó là: Getline.c, Mcommand.c, và Measure.c mà ta có thể tìm thấy trong nhóm file nguồn. Ngoài ra bạn còn có thể tìm thấy mã khởi động CPU và tập tin dữ liệu. Để mở một file ta nhấp đúp vào tên tấp tin trong Project Workpage Các chương trình có chức năng nhằm vào các mục đích khác nhau cho những môi trường thử nghiệm khác nhau. Để dò lỗi chạy chương trình mô phỏng ta chọn mục mô phỏng SIMULATOR trong thanh công cụ BUILD. Khi sử dụng phiên bản ước lượng Evaluation Version bạn cần phải chọn Demo - Simulator.
  • 36. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Mô tả các chức năng của tập tin nguồn Measure.c Chức các hàm chính của C cho hệ thống đo lường và điều kiện ngắt cho timer0. các hàm chính khởi tạo tất cả các thiết bị ngoại vi của P89LPC935 và xử lý các lệnh hệ thống. Điều kiện ngắt timer,timer0, quản lý đồng hồ thời gian thực và lấy dữ liệu từ phép đo của hệ thống. Mcommand.c Những quá trình hiển thị, thời gian và khoảng cách giữa các lệnh. Những hàm này được gọi từ chương trình chính. Các lệnh hiển thị giá trị tương tự từ điểm giao động sẽ cho tín hiệu điện từ 0.00V đến 3.30V Getline.c Gồm các dòng lệnh được soạn thảo cho những dữ kiện nhận từ các port Yêu cầu phần cứng Các ứng dụng đo lường chỉ có thể chạy trên bo mạch Keil MCB900 hoặc các phần cứng cơ bản khác dùng P89LBC935. Bộ vi điều khiển PL89LBC935 cung cấp khả năng nhập vào cả tín hiệu số và tương tự. Port 1 và Port2 được dùng để nhập tín hiệu số và từ AD00 đến AD03 để nhập tín hiệu tương tự. Tuy nhiên, chúng ta sẽ không cần một bo mạch nào hết vì Vision đã tích hợp chức năng này. biên dịch và liên kết chương trình MEASURE Khi đã sẵn sàng biên dịch và liện kết chương trình, sử dụng lệnh Buil Target từ menu Project hoặc thanh công cụ. Vision sẽ thực hiện toàn bộ quá trình và sẽ thông báo cho bạn khi hoàn tất. chạy thử chương trình MEASURE Chương trình mẫu điều khiển đo lường được lập trình để chấp nhận các lệnh trên chip của các port tuần tự. Nếu bạn có phần cứng thực tế, bạn có thể dử dụng phần mô phỏng cuối cùng để kết nối với CPU P89LPC935. nếu bạn không có phần cứng thì có thể sử dụng phần cứng mô phỏng trên Vision. Bạn có thể sử dụng cửa sổ Serial Windown để cung cấp tín hiệu được nhập vào.
  • 37. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Mỗi lần chương trình Measure được xây dựng bạn có thể chạy thử. Sử dụng lệnh START/STOP trong menu DEBUG để chạy chương trình kiểm tra lỗi. Những lệnh của hệ thống điều khiển đo lường từ xa Chuỗi các lệnh dùng cho chương trình được liệt kê trong bảng. Những lệnh này bao gồm bảng mã ASCII và tất cả các lệnh điều phải được hoàn tất bằng một sự quay vòng. Lệnh Cấu trúc Chức năng clear C Xóa tất cả các dữ liệu đo được trước đó Dislay D Hiển thị thời gian làm việc và giá trị ngõ vào time T hh:mm:ss Đặt thời gian theo chuẩn 24h Interval I mm:ss.ttt Đặt những khoảng thời gian cho mỗi phép đo khoảng thời gian này từ 0:00.001(1ms) và 60:00.000 (60 phút) start S Khởi động quá trình ghi dữ liệu đo được. Khi nhận lệnh start, chương trình đo lấy mẫu tất cả các tín hiệu ngõ vào tại các khoảng thời gian đã định. Read R[count] Hiển thị các giá trị đo được, bạn có thể chỉ rõ số của tâ1t cả các mẫu mà mình muốn đọc. Nếu không chỉ ra thứ tự nào, lệnh đọc sẽ hiển thị tất cả các giá trị đo. Bạn chỉ có thể đọc các giá trị này trong 1 giây. Nếu muốn hơn thì phải dừng chương trình. quit Q Thoát khỏi quá trình ghi giá trị đo Khi bạn chạy một lần chương trình mô phỏng trên Vision, bạn có thể vào các lệnh này trong cửa sổ Serial Windown#1 ở bên dưới:
  • 38. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Vision cho phép bạn hiển thị các đoạn mã của chương trình trong cửa sổ Disassembly Window bằng cách mở menu View hoặc dùng các nút trên thanh công cụ. Cửa sổ Disassembly Window cho thấy sự trộn lẫn các nguồn và các đoạn assembly. Bạn có thể thay đổi cách hiển thị bằng cách nhấp chuột phải vào menu ngữ cảnh. Hiển thị các đoạn mã của chương trình
  • 39. Đồ Án Tốt Nghiệp https://www.maudon.vn/ hiển thị nội dung các ô nhớ Vision có thể hiển thị các ô nhớ ở các định dạng khác nhau. Cửa sổ ô nhớ Memory Window được mở từ menu View hoặc từ thanh công cụ. Bạn có thể nhập địa chỉ của 4 vùng nhớ ở trang này. Menu ngữ cảnh cho phép bạn sửa đổi nội dung ô nhớ hoặc lựa chọn những kiểu ngõ ra khác nhau. các biến thay đổi đồng hồ thời gian Bạn có thể liên tục nhìn nội dung của các biến, cấu trúc và các mảng. Ta có thể mở cửa sổ Watch Window từ menu View hoặc thanh công cụ. Một trang ngữ cảnh hiện ra cho thấy taa61t cả các ký tự ngữ cảnh của hàm hiện thời. Các trang Watch#1 và Watch#2 cho phép ta vào bất kỳ biến nào của chương trình như ở trang sau: Vào các biến thời gian trong cửa sổ Watch Window Lựa chọn văn bản < ấn F2 để chỉnh sửa > cùng với 1 cái click chuột và đợi trong một giây. Một cái click chuôt khác cùng quá trình chỉnh sửa giúp ta thêm vàog ía trị của các biến. Với cùng cách như trên ta có thể thay đổi nhiều giá trị. Cách khác là bạn có thể dùng phím F2.
  • 40. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Để xóa đi một biến, nhấn chọn và ấn phím delete. Những cấu trúc và mảng sẽ hiện ra khi ấn ký hiệu [+]. Các dòng bị thụt vào để phản chiếu sự lồng nhau. Chú ý Cửa sổ Watch Window cập nhập bầt cứ khi nào chương trình thực hiện dừng. Khi bạn mở chế độ View - Periodic Window Update các giá trị cập nhật sẽ lấy liên tục trong suốt quá trình chạy chương trình mô phỏng. Vào biến thời gian từ cửa sổ soạn thảo Chọc một biến trong vùng soạn thảo và dùng câu lệnh Add to Watch Window từ menu ngữ cảnh bằng cách click phải chuột. Vào các biến thời gian từ trang lệnh ngõ ra (output window) Sử dụng lênh WatchSet để thêm giá trị biến vào cửa sổ Watch Window
  • 41. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Thực hiện chương trình trước khi bắt đầu mô phòng chương trình MEASURE, mở cửa sổ Serial Window#1 để hiển thị chuỗi giá trị ngõ ra bằng cách vào menu View hoặc thanh Debug. Bạn có thể thu nhỏ các cửa sổ khác nếu màn hình không đủ lớn. Bạn có thể chạy từng bước bằng lệnh Step các câu lệnh Essembler hoặc các đoạn mã gốc. Nếu cửa sổ Assembly Window đang mở, bạn nên chọc chạy tùng bước các lệnh essembly cơ bản. Nếu cửa sổ soạn thảo với các mã gốc được mở, bạn chạy từng bước với từng mã nguồn. nút lệnh ‘chạy từng bước đến” (stepinto) cho phép bạn thực hiện một bước nhảy đến các chương trình được gọi thực hiện việc gọi một hàm và sẽ không tự động ngắt cho đến khi gặp điểm ngắt. trên nguyên tắc ta có thể ngẫu nhiên nhảy vào một hàm chưa hoàn tất. Bạn có thể dùng lệnh StepOut để hoàn tất hàm đó và trả lại giá trị cho nó ngay lập tức khi có lệnh gọi. mũi tên vàng đánh dấu câu lệnh hiện thời và hoặc các lệnh cấp cao. Bạn có thể ngẫu nhiên bước vào một hàm chưa hoàn tất. lệnh chạy ngay hàng của con trỏ (Run till Cursor Line) lệnh đặt và bỏ điểm ngắt Insert/Remove BreakPoint Hộp thoại BreakPoint vision cũng hỗ trợ các điểm ngắt phức tạp. Chẳng hạn bạn muốn ngắt một chương trình khi một biến đạt giá trị nhất định. Cài đặt ở bên dưới khi nào giá trị 3 được viết cho current.time.sec
  • 42. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Để định nghĩa điểm dừng này ta mở hộp thoại BreakPoint từ menu Debug. Đánh dấu chọn vào ô Write ( dấu chọn này chỉ ra là lệnh ngắt chỉ được kiểm tra khi được viết tới ). Tiếp tục click vào nút Define để chọn điểm dùng. Để kiểm tra việc thực hiện điểm dừng làm các bước sau: Reset CPU Nếu sự thực hiện chương trình dừng thì bắt đầu chạy chương trình đo Sau một ít thời gian, Vision dừng sự thực hiện. Chương trình đếm hàng đánh dấu vị trí hàng mà trong đó điểm ngắt được đặt. Sự ghi vệt tin Quá trình này thực hiện trong suốt thời gian kiểm lỗi cho đến điểm dừng nơi bạn yêu cầu thông tin cho giá trị thanh ghi và những nguyên nhân khác dẫn tới dự ngắt. Nếu Debug - Enable/Disable Trace Recording được đặt bạn có thể nhìn thấy các lệnh liên quan tới CPU thực hiện trước điểm dừng.
  • 43. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bảng giá trị các thanh ghi Gọi ngăn xếp Các ngăn xếp trong của Vision sẽ được lấp đầy khi chương trình hoàn tất. Trang CallStack của cửa sổ Watch Window cho thấy sự lồng nhau giữa các hàm hiện thời. Nhấp đúp lên một hàng hiển thị mã gốc để thực hiện chức năng của nó. On-Chip ngoại vi Vision cung cấp một số cách để hiển thị và sửa dổi các chip ngoại vi sử dụng trong chương trình của bạn. Bạn có thể thấy kết quả của ví dụ khi thực hiện các bước sau: Reset CPU và xóa tất cả các điểm ngắt Nếu chương trình bị dừng khi bắt đầu đo lường. Mở cửa sổ Serial Window #1 và vào lệnh ‘d’ cho ứng dụng MEASURE. Chương trình đo lường cho thấy giá trị từ ngõ vào port1 và port2 và bộ chuyển đổi A/D 1-3. Cửa sổ Serial Window #1 được biễu diễn ở hình sau:
  • 44. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Những hộp thoại thiết bị ngoại vi Vision cung cấp các hộp thoại cho: I/O port, thiết bị ngắt, bộ định thời, chuyển đổi A/D, và một số chip ngoại vi đặc biệt. Các hộp thoại này có thể mở từ menu Peripheral. Mỗi hộp thoại cho thấy các ký hiệu SFR liên quan và tình trạng các thiết bị ngoại vi. Cho ứng dụng đo đạc bạn có thể mở Peripherals - I/O Ports - Port2 và Peripherals - A/D Converter - ADC0/DAC0. những hộp thoại này cho thấy tình trạng của các thiết bị ngoại vi và bạn có thể thay đổi giá trị ngõ vào.
  • 45. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bạn có thể sử dụng Virtual Simulator Registers (VTREGs) để thay đổi giá trị ngõ vào. Trong cửa sổ Output Window – Command Page bạn có thể đặt các ấn định cho các ký hiệu VTREG giống như ngững biến và các thanh ghi. Ví Dụ: Các user và tín hiệu chức năng ( Signal Function ) Bạn có thể kết hợp các ký hiệu VTREG với chức năng tìm lỗi của Vision để tạo ra một phương thức phức tạp của việc cung cấp dữ liệu ngoài được nhập vào tới các chương trình của bạn. Chương trình mẫu Measure sử dụng bộ giải mã khởi tạo file MEASURE.INI để định nghĩa các tín hiệu hàm cho: ▪ Xuất hiện xung răng cưa trên ngõ vào A/D AD01. ▪ Xuất hiện sóng sine trên ngõ vào A/D AD02. ▪ Xuất hiện tín hiệu nhiễu trên ngõ vào A/D AD03. Tập tin MEASURE.INI được lưu dưới dạng Options for Target – Debug – Initialization File và có nội dung như sau: PORT2=0xDA AD01=2.3 ; set digital input PORT2 to 0xDA. ; set analog input AD01 to 2.3 volts. /* */ /* Function MyRegs() shows Registers R0...R3 */ /* */ FUNC void MyRegs (void) { printf ("---------- MyRegs() ----------n"); printf (" R0 R1 R2 R3n"); printf (" %02X %02X %02X %02Xn"); printf (" n"); } // // Generate Saw Tooth Signal on A/D input AD01 //
  • 46. Đồ Án Tốt Nghiệp https://www.maudon.vn/ signal void AD01_Saw (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float delay; float val; long i, end, steps; volts = 2.0; offset = 0.2; frequency = 140; duration = 8.0; printf ("Saw Tooth Signal on A/D input AD01n"); steps = 100; delay = (0.01/frequency); printf ("Saw Steps = %dn", steps); end = (duration * 10000); for (i = 0 ; i < end; i++) { val = (i % steps) / ((float) steps); AD01 = (val * volts) + offset; swatch (delay); } } // // Generate Sine Wave Signal on A/D input AD02 // signal void AD02_Sine (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float val; long i, end; volts = 1.4; offset = 1.6; frequency = 180; duration = 5.0; printf ("Sine Wave Signal on A/D input AD02n"); end = (duration * 10000); for (i = 0 ; i < end; i++) { val = sin (frequency * (((float) STATES) / CLOCK) * 2 * 3.1415926); AD02 = (val * volts) + offset; swatch (0.0001); // in 100 uSec steps
  • 47. Đồ Án Tốt Nghiệp https://www.maudon.vn/ } } // // Generate Noise Signal on A/D input AD03 // signal void AD03_Noise (void) { float volts; // peak-to-peak volatage float frequency; // output frequency in Hz float offset; // volatge offset float duration; // duration in Seconds float val; long i, end; volts = 1.4; offset = 1.6; duration = 0.5; printf ("Noise Signal on A/D input AD03n"); end = (duration * 100000); for (i = 0 ; i < end; i++) { val = ((float) rand (0)) / 32767.0; AD03 = (val * volts) + offset; swatch (0.00001); // in 10 uSec steps } } // // Run Signal Functions at Startup // signal void Startup (void) { swatch (1.0); AD01_Saw (); swatch (0.3); AD02_Sine (); swatch (0.6); AD03_Noise (); // wait 1.0 seconds // wait 0.3 seconds // wait 0.6 seconds } Startup (); // Start the Signals define button "AD01 Saw Tooth", define button "AD02 Sine Wave", "AD01_Saw ()" "AD02_Sine ()" define button "AD03 Noise Signal", "AD03_Noise ()"
  • 48. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bạn có thể kèm theo chức năng dò lỗi cho những hàm trong cửa sổ Output Window – Command Page. >MyRegs () MyRegs() R0 R1 R2 R3 00 00 00 00 Cho nhiều tín hiệu chức năng ta có thể dùng hộp công cụ ToolBox cho các yêu cầu khẩn cấp. Thực hiện phân tích (Performance Analyzer) Vision cho phép bạn thực hiện viện phân tích tính toán thời gian của những ứng dụng tích hợp Performance Analyzer. Để chuẩn bị cho sự phân tích tính toán thời gian, ta dừng việc thực thi chương trình và mở menu Debug - Performance Analyzer để mở hộp thoại Setup Performance Analyzer. Bạn có thể chọn các ký hiệu hàm hay đánh tên hàm hoặc mật dãy địa chỉ khi dùng hộp thoại Setup Performance Analyzer .
  • 49. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Thực hiện các bước để thấy việc thực hiện phân tích: mở hộp thoại Performance Analyzer reset CPU và xóa các điểm ngắt nếu chương trình bị dừng khi bắt đầu việc đo đạc mở cửa sổ Serial Window#1 và gõ lệnh S , gõ D. Performance Analyzer cho ta thấy biểu đồ dạng cột trong mỗi phạm vi.biểu đồ hình cột cho thấy phần trăm thời gian thực hiện đoạn mã trong mỗi phạm vi. Click vào một cột để thấy thông tin thống kê chi tiết. Phân tích tín hiệu logic Với Logic Analyzer, Vision Debugger/Simulator cung cấp một màn hình đồ thị cho giá trị thay đổi của biến hoặc VTREGs. Thực hiện các bước sau để thấy việc phân tích giá trị Logic hoạt động: Mở hộp thoại Logic Analyzer ▪ Sử dụng hộp thoại để biểu diễn các tín hiệu bạn muốn. Một ví dụ là AD01, AD02, AD03 và một cấu trúc như là current.time.sec. Bạn có thể chọn giữa nhiều kiểu mẫu. Chạy chương trình và hiển thị mức logic ngõ ra Logic Analyzer cung cấp một màn hình tính toán thời gian chi tiết của các tían hiệu đã chọn.
  • 50. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Sử dụng các chip ngoại vi Đây là các thông số kỹ thuật mà bạn phải biết để tạo những chương trình dùng các chip ngoại vi và những đặt tính của họ 8051. những thông số được đề cập trong chương này. Bạn có thể sử dụng các đoạn mã được giới thiệu để có thể nhanh chóng làm việc với 8051. Ở đây không có các chế độ đơn đặt thiết bị ngoại vi trong 8051. thay vào đó chip 8051 cung cấp một sự sử dụng đa dạng các chip ngoại vi để phân biệt giữa chúng với nhau. các đoạn mã mẫu trong chương này cho ta biết cách sử dụng các họ chip ngoại vi đặc biệt. Chú ý rằng có nhiều tùy chọn cấu hình hơn được giới thiệu trong phần này. • Start up code • Special function Register • Register bank • Interrupt service Rountine • Interrupt Enable Registors • Parallel Port I/O • Timer/counter • Serial Interface • Watchdog Timer • D/A Coverter • A/D Coverter • Power Redution Modes
  • 51. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Mã khởi động ( startup code ) Mã khởi động được thực hiện ngay lập tức khi ta reset toàn bộ hệ thống và nó thực hiện các thao tác sau: ▪ Phụ thuộc vào sự khác nhau của thiết bị, những đặc tính đặc biệt của thiết bị. ▪ Xóa toàn bộ các dữ liệu (tùy chọn) ▪ Thiết lập trạng thái ban đầu giá trị các ngăn xếp và con trỏ ngăn xếp(tùy chọn) ▪ Thiết lập trạng thái ban đầu của con trỏ ngăn xếp phần cứng 8051 ▪ Chuyển đổi điều khiển tới các biến được thiết lập hoặc các hàm chính của C. Trình biên dịch Keil 51 các thiết bị đặc biệt có các mã khởi động khác nhau chút ít. Một mã khởi động chung được cung cấp trong tập tin ..C51LIBSTARTUP.A51. Chức năng các thanh ghi đặc biệt (Special Function Registers) Các chip thiết bị ngoại vi của 8051 được truy nhập sử dụng các thanh ghi có chức năng đặc biệt hoặc SFRs. SRFs được định vị trí bên trong chip một cách trực tiếp có địa chỉ từ 80H đến 0FFH. Nhà phát triển Keil đã cung cấp các công cụ gồm các tập tin hoặc các file tiêu đề có thể định nghĩa các thanh ghi nà cho bạn. Bạn có thể sử dụng các file tiêu đề được cung cấp sẵn hoặc tự tạo cho mình một file để định địa chỉ các chip ngoại vi. Ki bạn tạo một chương trình với Vision bạn có thể chèn việc định nghĩa các thanh ghi đặc biệt của thiết bị bằng cách dùng menu trong cửa sổ làm việc.
  • 52. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Nhiều chương trình mẫu trong chương này đều sử dụng đoạn mã bắt đầu như sau: Các tập tin định nghĩa thanh ghi được lưu trong thư mục C:KEILC51INC. Đoạn mã sau đây được trích từ một tập tin định nghĩa thanh ghi cho các port song song I/O . Bạn có thể định các giá trị SFRs một cách trực tiếp bằng các mã nguồn C các tiêu đề flie. Chú ý: ▪ Khi bạn lấy hoặc ghi giá trị các thanh ghi đặc biệt bạn cần phải khai báo SFR trong tập tin nguồn. ▪ Bit ký hiệu SFR chỉ có thể định nghĩa cho bit địa chỉ của thanh ghi SFR, mà nó được định vị theo địa chỉ 0x80, 0x88, 0x90 … 0xF8. Register Banks ( các thanh ghi lưu trữ ) ▪ Vi điều khiển 8051 được xây dựng dựa vào các vùng nhớ căn bản với tám thanh ghi thông dụng (R0 –R70). Mỗi thanh ghi là một thanh ghi byte đơn. Tám thanh ghi đa dụng này có thể quản lý việc lưu trữ và các thanh ghi lưu trữ. ▪ 8051 cung cấp 4 thanh ghi lưu trữ mà bạn có thể sử dụng. Quá trình làm việc cơ bản của các thanh ghi dễ dàng được nhận thấy khi bạn thực hiện ngắt. ▪ Dùng cho chương trình C trên 8051 thì ta không cần chọn hoặc mở thanh ghi vì chương trình đã mặc đinh chọn thanh ghi lưu trữ 0. ▪ Các thanh ghi lưu trữ 1, 2, 3 trong quá các quá trình ngắt vì để tránh việc lưu trữ và khôi phục các ngăn xếp. Các điều kiện ngắt ( Interrupt Service Routines ) Trình biên dịch C51 cho phép viết những điều kiện ngắt trong C. trình biên dịch được sử dụng một cách hiệu quả bằng mã khởi đầu và mã kết thúc và điều tiết mở các thanh ghi lưu trữ. Các điều kiện ngắt được khai báo như sau: Chỉ số ngắt (interrupt number) giúp xác định địa chỉ véc tơ ngắt của hàm ngắt. Sử dụng bảng sau để xác định chỉ số ngắt: Interrupt Number Address Interrupt Number Address 0 (EXTERNAL INT 0) 0003h 16 0083h 1 (TIMER/COUNTER 0) 000Bh 17 008Bh 2 (EXTERNAL INT 1) 0013h 18 0093h 3 (TIMER/COUNTER 1) 001Bh 19 009Bh 4 (SERIAL PORT) 0023h 20 00A3h 5 (TIMER/COUNTER 2) 002Bh 21 00ABh 6 (PCA) 0033h 22 00B3h 7 003Bh 23 00BBh #include <reg51.h> sfr IE = 0xA8; // Interrupt Enable register at SFR address 0xA8 sbit EA = IE^7; // global Interrupt Enable Flag (bit 7 of SFR IE) void function_name (void) interrupt interrupt_number [using register_bank] sfr P0 = 0x80; sfr P1 = 0x90; sfr P2 = 0xA0; sfr P3 = 0xB0; // 8-bit I/O Port P0 // 8-bit I/O Port P1 // 8-bit I/O Port P2 // 8-bit I/O Port P3
  • 53. Đồ Án Tốt Nghiệp https://www.maudon.vn/ 8 0043h 24 00C3h 9 004Bh 25 00CBh 10 0053h 26 00D3h 11 005Bh 27 00DBh 12 0063h 28 00E3h 13 006Bh 29 00EBh 14 0073h 30 00F3h 15 007Bh 31 00FBh Việc sử dụng các thuộc tính để cho ta có thể chỉ rõ một thanh ghi lưu trữ trong suốtt thời gian thực hiện hàm ngắt. Những điều ngắt khoảng ngắn có thể hiệu quả hơn không sử dụng thuộc tính, khi chúng sử dụng thanh ghi lưu trữ 0. bạn có thể kiểm chứng bằng hai đoạn mã essembler xem hiệu quả của chúng. Chú ý: Các hàm kèm theo điều kiện ngắt cần phải được biên tập với chỉ thị NOAREGS. Việc này bảo đảm rằng việc biên dịch không phát sinh việc thay đổi các thanh ghi tuyệt đối. Ví dụ sau cho ta thấy một hàm ngắt tiêu biểu: } Trong ví dụ trên điều kiện ngắt chi chỉ số ngắt 4 được thiết lập. Tên của hàm ngắt là com_isr. Khi lệnh ngắt được thực hiện sẽ kéo theo, các mã mục được lưu vào thanh ghi CPU và chọn thanh ghi lưu trữ 1. Khi thủ tục ngắt kết thúc thì giá trị các thanh ghi được khôi phục. Sau đây là đoạn mã sinh ra bởi lậnh ngắt kể trên. Chú ý rằng nội dung thanh ghi lưu trữ sẽ được hoán đổi và được khôi phục lại sau khi thoát. #include <reg51.h> // Special Function Registers of 80C51 CPU #pragma NOAREGS // do not use absolute register symbols (ARx) // for functions called from interrupt routines. static void HandleTransmitInterrupt (void) { : : } static void HandleReceiveInterrupt (void) { : : } #pragma AREGS // for other code it is save to use ARx symbols static void com_isr (void) interrupt 4 using 1 { if (TI) HandleTransmitInterrupt (); if (RI) HandleReceiveInterrupt (); ; FUNCTION com_isr (BEGIN) 0000 C0E0 Pointer 0002 C083 0004 C082 0006 C0D0 PUSH ACC ; Save the Accumulator and Data PUSH PUSH PUSH 0008 75D008 MOV DPH DPL PSW ; Save PSW (and the current Register Bank) PSW,#08H ; This selects Register Bank 1
  • 54. Đồ Án Tốt Nghiệp https://www.maudon.vn/ : : 0052 D0D0 POP PSW ; Restore PSW (and prior reg bank) 0054 D082 POP DPL 0056 D083 POP DPH 0058 D0E0 POP ACC ; Restore the Accumulatorand DPTR 005A 32 RETI ; FUNCTION com_isr (END) Các thanh ghi cho phép ngắt (Interrupt Enable Registers) 8051 cung cấp điều kiện ngắt cho nhiều chip ngoại vi. Quá trình ngắt hoàn toàn phụ thuộc vào bit EA của Interrupt Enable (IE) SFR. Khi bit EA lên mức 1 thì quá trình ngắt được thực hiện. Khi bit EA xuống mức 0 thì quá trình ngắt bị vô hiệu. Mỗi quá trình ngắt thì được kiểm soát bởi than ghi IE SFR. Tên một số chip 8051 có thể có hơn 1 thanh ghi IE. Kiểm tra tài liệu về chip đó để tận dụng các quá trình ngắt. Các port song song vào/ra (Parallel Port I/O) Một chip 8051 bình thường có 4 port vào ra song song mà bạn có thể kết nối với các thiết bị ngoại vi. Chúng là Port 0, Port 1, Port 2, Port 3. Một số IC 8051 mở rông có tới 8 Port xuất nhập. Port Direction Width Alternate use P0 I/O 8 bits Mux'd. 8-bit bus: A0-A7 & D0-D7 P1 I/O 8 bits P1.0-P1.7: Available for user I/O P2 I/O 8 bits Mux'd. 8-bit bus: A8-A15 P3 I/O 8 bits P3.0: RXD (Serial Port Receive) P3.1: TXD (Serial Port Transmit) P3.2: /INT0 (Interrupt 0 input) P3.3: /INT1 (Interrupt 1 input) P3.4: T0 (Timer/Counter 0 Input) P3.5: T1 (Timer/Counter 1 Input) P3.6: /WR (Write Data Control) P3.7: /RD (Read Data Control) Các Port trên IC 8051 bình thường thì không có các dữ liệu trên thanh ghi điều khiển. Thay vào đó, các chân của Port 1, Port 2, Port 3 mỗi chân có thể tăng lên mà chúng có thể là đầu nhập hay đầu xuất. Để ghi giá trị vào một Port bạn chỉ đơn giản ghi giá trị tùng chân của Port đó. Để lấy giá trị từ Port trước hết giá trị của chân phải được ghi là 1 ( đây cũng là giá trị ban đầu sau khi RESET ). Ví dụ sau là chương trình ghi và xuất giá trị các Port I/O: sfr P1 = 0x90; sfr P3 = 0xB0; // SFR definition for Port 1 // SFR definition for Port 3 sbit DIPswitch = P1^4; sbit greenLED = P1^5; // DIP switch input on Port 1 bit 4 // green LED output on Port 1 bit 5 void main (void) { unsigned char inval;
  • 55. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Timer/Counter ( bộ định thời và bộ đếm ) IC 80C52 có ba bộ Timer/Counter (Timer 0, Timer 1, và Timer 2). Timer 1 và Timer 0 có các chức năng thông thường như nhau trong khi Timer 2 có khả năng ứng dụng cao hơn. Các timer có thể hoạt động độc lập với nhau với các kiểu định thời, kiểu đếm, kiểu phát tốc độ baud (cho các Port tuần tự). Chương trình sau là một ví dụ dùng Timer 1 tạo một xung vuông có tần số 10KHz. inval = 0; while (1) { if (DIPswitch == 1) { inval = P1 & 0x0F; greenLED = 0; } else { greenLED = 1; } // initial value for inval // check if input P1.4 is high // read bit 0 .. 3 from P1 // set output P1.5 to low // if input P1.4 is low // set output P1.5 to high P3 = (P3 & 0xF0) | inval; // output inval to P3.0 .. P3.3 } } #include <reg52.h> /* * Timer 1 Interrupt Service Routine: executes every 100 clock cycles */ static unsigned long overflow_count = 0; void timer1_ISR (void) interrupt 3 { overflow_count++; // Increment the overflow count } /* * MAIN C function: sets Timer1 for 8-bit timer w/reload (mode 2). * The timer counts to 255, overflows, is reloaded with 156, and * generates an interrupt. */ void main (void) { TMOD = (TMOD & 0x0F) | 0x20; reload) // Set Mode (8-bit timer with TH1 = 256 - 100; TL1 = TH1; ET1 = 1; TR1 = 1; EA = 1; // Reload TL1 to count 100 clocks // Enable Timer 1 Interrupts // Start Timer 1 Running // Global Interrupt Enable while (1); timer 1 ISR will // Do Nothing (endless-loop): the
  • 56. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bộ biến đổi tương tự – số Các bộ biến đổi tương tự số A/D là các linh kiện chỉ có trên một số thành viên của họ 8051 nhưng khá phổ biến. Các bộ biến đổi A/D thường được điều khiển thông qua thanh ghi chủ ADCON, thanh ghi này được gán cho một vị trí còn trống nào đó trong đoạn nhớ dành cho các SFR, thanh chi ADCON cho phép người sử dụng chọn lựa kênh cần được biến đổi A/D, bặ đầu một biến đổi mới và kiểm tra trạng thái của lần biến đổi hiện tại. Các bộ biến đổi A/D điển hình cần 40 chu kỳ lệnh hoặc ít hơn để hoàn tất việc biến đổi và chúng được cấu hình để tạo ra ngắt vào lúc hoàn tất việc biến đổi, việc này làm cho bộ vi điều khiển định hướng đến một vector ngắt cụ thể dành cho việc biến đổi A/D. thông thường khuyết điểm của bộ biến đổi A/D là bộ này yêu cầu bộ vi điều khiển phải ở mức tính cực thay vì đi vào nghỉ để chờ ngắt do việc biến đổi hoàn tất. Kết quả của việc biến đổi được đọc từ một SFR khác hoặc một cặp SFR, phụ thuộc vào độ phân giãi của bộ biến đổi. Chương trình sau là ví dụ chuyển đổi tương tự từ tín hiệu ngõ vào sang số: // occur every 100 clocks. Since the 80C51 CPU runs // at 12 MHz, the interrupt happens 10 KHz. } #include <ADUC812.H> #include <stdio.h> void main (void) { unsigned char chan_2_convert; SCON = 0x50; TMOD |= 0x20; TH1 = 0xA0; TR1 = 1; TI = 1; // Configure the serial port. // Configure A/D to sequentially convert each input channel. ADCCON1 = 0x7C; while (1) { unsigned int conv_val; unsigned char channel; // 0111 1100 // Start a conversion and wait for it to complete. chan_2_convert = (chan_2_convert + 1) % 8; ADCCON2 = (ADCCON2 & 0xF0) | chan_2_convert; SCONV = 1; while (ADCCON3 & 0x80); // Read A/D data and print it out. channel = ADCDATAH >> 4;
  • 57. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Bộ biến đổi số sang tương tự ( D/A coverter) Bộ biến đổi nàychuye63n đổi tían hiệu số đi vào thành tín hiệu dòng điện ở ngõ ra. IC Philips 87LPC769 là một trong các IC có tích hợp bộ chuyển đổi số – tương tự. IC Philips 87LPC769 gồm 2 kênh, và bộ chuyển đổi 8bit D/A dễ dàng thực hiện với chương trình. Ví dụ sau cho ta thấy cách dùng bộ chuyển đổi sử dụng D/A SFRs. conv_val = ADCDATAL | ((ADCDATAH & 0x0F) << 8); printf ("ADC Channel %bu = 0x%4.4Xrn", channel, conv_val); } } /* * This program generates sawtooth waveforms on the DAC * of the Philips 87LPC769. */ #include <REG769.H> void main (void) { // Disable the A/D Converter (this is required for DAC0) ADCI = 0; ADCS = 0; ENADC = 0; // Clear A/D conversion complete flag // Clear A/D conversion start flag // Disable the A/D Converter // Set P1.6 and P1.7 to Input Only (Hi Z). P1M2 &= ~0xC0; P1M1 |= 0xC0; ENDAC0 = 1; // Enable the D/A Converters ENDAC1 = 1; while (1) { unsigned int i; // Create a sawtooth wave on DAC0 and the // opposite sawtooth wave on DAC1. for (i = 0; i < 0x100; i++) { DAC0 = i; DAC1 = 0xFF - i; } } }
  • 58. Đồ Án Tốt Nghiệp https://www.maudon.vn/ Điều khiển cấp điện (Power Reduction Modes) Chế độ nghỉ (Idle mode) được kích hoạt bằng cách thiết lập bit IDLE bằng 1. chế độ nghỉ làm dừng mọi việc thực thi chương trình. Các nội dung trên RAM được bảo toàn và mạch dao động tiếp tục hoạt động nhưng xung clock bị khó không đến được CPU. Các bộ định thời và UART tiếp tục thực hiện bìn thường các chức năng của chúng. Chế độ nghỉ được kết thúc bằng cách kích hoạt một điểm ngắt bất kỳ. Khi việc thực thile65nh ngắt ISR kết thúc thì hệ thống sẽ làm việc lại từ lênh set bit IDLE lên 1. Sau đây là chương trình thực hiện chế độ nghỉ: Chế độ giảm cấp điện ( power down mode) được thiết lập bằng cách set bit PDWN lên 1. trong chế độ nàyma5ch dao động trong chip bị dừng. Như vậy các bộ định thời và UART cũng như việc thực hiện phần mềm đều tạm ngưng. Miễn là có điện áp tối thiểu 2V đặt vào chip thì các nội dung lưu trên RAM vẫn được bảo toàn. Cách duy nhất để buộc bộ vi điều khiển ra khỏi chế độ giảm công suất là áp đặt thiết lập lại (RESET) bộ vi điều khiển này khi cấp điện. Sau đây là chương trình thự hiện quá trình giãm cấp điện: Bộ định thời WATCHDOG Bộ định thời Watchdog có sẵn trên nhóm mở rộng của các thành viên họ 8051. mục đích của bộ định thời Watchdog là thiết lập lại (reset) lại bộ vi điều khiển nếu bộ định thời không được cung cấp một trình tự thao tác cụ thể trong một khoảng thời gian xác định. Điều này ngăn ngừa việc nạp lại Wachdog mọt cách trùng khớp ngẫu nhiên bởi các phần mềm khác. Trong họ 8051, watchdog thường được thực hiện dưới dạng một bộ định thời khác trên chip, bộ định thời này lập tỉ lệ giảm tần số mạch dao động hệ thống và kế đến đếm xung clock đã được chia tỉ lệ. Khi bộ định thời quay vòng, hệ thống thiết lập lại từ đầu (reset). Watchdog có thể được cấu hình đối với tốc độ quay vòng và thường có thể được sử dụng làm bộ định thời khác mặc dù đây là bộ định thời có độ phân giải thấp. sfr PCON = 0x87; void main (void) { while (1) { task_a (); task_b (); task_c (); PCON |= 0x01; /* Enter IDLE Mode - Wait for enabled interrupt */ } } sfr PCON = 0x87; void main (void) { while (1) { task_a (); task_b (); task_c (); PCON |= 0x02; /* Enter Power Down Mode */ } }
  • 59. Đồ Án Tốt Nghiệp https://www.maudon.vn/ #include <reg51f.h> /* This function adjusts the watchdog timer compare value to the current * PCA timer value + 0xFF00. Note that you must write to CCAP4L first, * then write to CCAP4H. */ void watchdog_reset (void) { unsigned char newval; newval = CH + 0xFF; CCAP4L = 0; CCAP4H = newval; } void main (void) { unsigned int i; /* Configure PCA Module 4 as the watchdog and make sure it doesn't time-out immediately. */ watchdog_reset (); CCAPM4 = 0x48; /* Configure the PCA for watchdog timer. */ CMOD = (CMOD & 0x01) | 0x40; /* Start the PCA Timer: From this point on, we must reset the watchdog timer every 0xFF00 clock cycles. If we don't, the watchdog timer will reset the MCU. */ CR = 1; /* Do something for a while and make sure that we don't get reset by the watchdog. */ for (i = 0; i < 1000; i++) { watchdog_reset (); } /* Stop updating the watchdog and we should get reset. */ while (1); } Chương trình sau đây cho thấy cách thiết lập giá trị ban đầu và reset watchdog:
  • 60. Đồ Án Tốt Nghiệp https://www.maudon.vn/ PHẦN III THI CÔNG MẠCH VÀ ỨNG DỤNG LẬP TRÌNH C TRONG AT89C2051 I.Điều khiển led đơn ❖ Sơ đồ nguyên lý: ❖ Code C: #include < at892051.h > char const num[ ] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; void wait (void) { ; } void main( void ) { unsigned int i; unsigned char j; P1 = 0; while(1){ for( j = 0; j < 8; j++ ) { P1 = num[ j ]; for ( i = 0; i < 10000; i++ ) { wait(); } } } }
  • 61. Đồ Án Tốt Nghiệp https://www.maudon.vn/ II. ỨNG DỤNG CHO 2 LED 7 ĐOẠN VỚI NÚT NHẤN ❖ Sơ đồ nguyên lý: ❖ Code C: #include < at892051.h > char num[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void wait (void) { ; } void main ( void ){ unsigned char cnt, right; unsigned int i; P1 = 0; P3 = 0; for( ;; ){ for (right=0;right<3;right++) { P3 = right; for (cnt=0;cnt<10;cnt++) { P1 = num[cnt]; for (i = 0; i < 10000; i++) { wait(); } } } } }
  • 62. Đồ Án Tốt Nghiệp https://www.maudon.vn/ III.ỨNG DỤNG CHO LED MATRIX 5x7. • Sơ Đồ Nguyên Lý: • Code C: #include < at892051.h > char const pat[5]={ 0x3f, 0x02, 0x04, 0x02, 0x3f }; void wait (void) { ; } void main( void ) { unsigned char cnt, col; unsigned int i; P3 = 0; P1 = 0; for( ;; ) { col = 1; for (cnt=0;cnt<5;cnt++) { for(col = 0;col < 32;col<<=1) { P1 =pat[cnt]; P3 = col; for (i = 0; i < 10000; i++) { wait();
  • 63. Đồ Án Tốt Nghiệp https://www.maudon.vn/ } } } } } SOẠN THẢO VÀ BIÊN DỊCH CHƯƠNG TRÌNH CHO HỌ VI ĐIỀU KHIỂN 8051 1. Soạn thảo chương trình Dùng chức năng Edit của NC (Norton Commander) hoặc bất cứ phần mềm soạn thảo văn bản nào khác. Lưu dưới dạng file .A51 hoặc .ASM, hoặc .C v.v.. 2. Chuyển thành file object (.obj) bằng chương trình A51.exe, hoặc ASM51.exe. A51 baitap.a51 [enter] ASM51 baitap.a51 [enter] Chương trình dịch sẽ tạo ra file baitap.obj và baitap.lsl. File.obj là file cơ sở cho việc liên kết thành chương trình thực thi được. Còn file .lsl là file văn bản chứa các lệnh, mã lệnh và địa chỉ tương ứng. File .lsl còn chứa các thông báo của chương trình biên dịch về những lỗi cú pháp (nếu có). Sau khi thực hiện biên dịch xong sẽ nhận được thông báo: ASSEMBLY COMPLETE, NO ERRORS FOUND Hoặc ASSEMBLY COMPLETE, x ERRORS FOUND (y) Với x là số lỗi cú pháp và y là số thứ tự của hàng lệnh bị lỗi cuối cùng trong chương trình. Mở file baitap.lsl để xem các lỗi. Sau đó, mở file baitap.a51, hoặc file baitap.asm để sửa các lỗi rồi tiến hành biên dịch lại. 3. Chuyển file object thành file hex (.HEX) bằng chương trình OHS51.EXE hoặc OH.EXE. Ohs51.exe baitap.obj [enter] Oh.exe baitap.obj [enter]
  • 64. Đồ Án Tốt Nghiệp https://www.maudon.vn/ PHẨN IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI KẾT LUẬN Trong đề tài này chúng tôi tìm hiểu và nghiên cứu lập trình C cho họ vi điều khiển 8051 và mới chỉ đi vào một số ứng dụng nhỏ như là điều khiển led đơn , led bảy đoạn, và led ma trận . Tôi chưa khai thác hết tầm hạn của phần mềm Keil C cũng như chip AT89C2051. Khảo sát qua phần mềm Keil C. Thực hiện biên dịch mã nguồn C cho led đơn, led 7 đoạn, led matrix 5x7. HƯỚNG PHÁT TRIỂN Hướng phát triển của đồ án là: dùng ngôn ngữ lập trình C để ứng dụng vào hệ thống nhúng của họ vi điều khiển 8051 hoặc các họ vi điều khiển khác như là Philips P89C51Rx2/P89V51 Rx2 mà không chỉ xuất đơn thuần là led đơn , mà là led matrix 5x7, matrix 8x8 , hoặc LCD 1 line, LCD 2 line, LCD 4 line…Và ứng dụng ngôn ngữ lập trình C để thiết kế những ứng dụng thực tiễn phục vụ cho đời sống của con người.
  • 65. Đồ Án Tốt Nghiệp https://www.maudon.vn/ TÀI LIỆU THAM KHẢO ✓ Datasheet AT8051/AT89C51/AT89C2051 Preliminary (Complete) của hãng Atmel Corporation. ✓ User’s Guide for Keil µVision. ✓ Phạm Quang Trí, Giáo trình Vi xử lý của trường ĐHCN TP.HCM. ✓ Giáo trình Vi xử lý của trường ĐHBKTPHCM. ✓ Website : http://www.keil.com / ✓ Sách embedded C ✓ Sách Ngôn ngữ C của các tác giả Quách Tuấn Ngọc . ✓ Handel-C Language Reference Manual.
  • 66. Đồ Án Tốt Nghiệp https://www.maudon.vn/ MỤC LỤC 1. Phần I ✓ tổng quan đề tài ............................................................ trang 4 • đặt vấn đề ................................................................ • Nội dung đề tài trang 4 2. Phần II ✓ Nội dung đề tài ............................................................... trang 5 Chương 1: Giới thiệu bộ vi điều khiển ĂT9C2051 và 89C51 • Giới thiệu bộ vi điều khiển AT89C2051 ................ trang 5 • Giới thiệu sơ lược về vi điều khiển AT89C51........ trang 19 Chương 2: Giới thiệu phần mềm Keil µVision ............ trang 21 3. Phần III ✓ Thi công mạch và Ứng dụng lập trình C trong AT89C2051 trang 62 4. Phần IV ✓ Kết luận và Hướng phát triển đề tài .............................. trang 67 5. Tài liệu tham khảo ............................................................... trang 68 6. Mục lục ............................................................................... trang 69