Làm quen với vi điều khiển 8051 cấu trúc phần cứng và cách lập trình phần mềm

25 951 2
Làm quen với vi điều khiển 8051   cấu trúc phần cứng và cách lập trình phần mềm

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bus địa chỉ của họ vi điều khiển 8051 gồm 16 đường tín hiệu (thường gọi là bus địa chỉ 16 bit). Với số lượng bit địa chỉ như trên, không gian nhớ của chip được mở rộng tối đa là 216 = 65536 địa chỉ, tương đương 64K. Bus dữ liệu của họ vi điều khiển 8051 gồm 8 đường tín hiệu (thường gọi là bus dữ liệu 8 bit), đó là lý do tại sao nói 8051 là họ vi điều khiển 8 bit. Với độ rộng của bus dữ liệu như vậy, các chip họ 8051 có thể xử lý các toán hạng 8 bit trong một chu kỳ lệnh. Bộ nhớ chương trình Vi điều khiển họ 8051 có không gian bộ nhớ chương trình là 64K địa chỉ, đó cũng là dung lượng bộ nhớ chương trình lớn nhất mà mỗi chip thuộc họ này có thể có được. Bộ nhớ chương trình của các chip họ 8051 có thể thuộc một trong các loại: ROM, EPROM, Flash, hoặc không có bộ nhớ chương trình bên trong chip. Tên của từng chip thể hiện chính loại bộ nhớ chương trình mà nó mang bên trong, cụ thể là vài ví dụ sau: Bộ nhớ dữ liệu Vi điều khiển họ 8051 có không gian bộ nhớ dữ liệu là 64K địa chỉ, đó cũng là dung lượng bộ nhớ dữ liệu lớn nhất mà mỗi chip thuộc họ này có thể có được (nếu phối ghép một cách chính tắc, sử dụng các đường tín hiệu của bus địa chỉ và dữ liệu). Bộ nhớ dữ liệu của các chip họ 8051 có thể thuộc một hay hai loại: SRAM hoặc EEPROM. Bộ nhớ dữ liệu SRAM được tích hợp bên trong mọi chip thuộc họ vi điều khiển này, có dung lượng khác nhau tùy loại chip, nhưng thường chỉ khoảng vài trăm byte. Đây chính là nơi chứa các biến trung gian trong quá trình hoạt động của chip. khi mất điện, do bản chất của SRAM mà giá trị của các biến này cũng bị mất theo. Khi có điện trở lại, nội dung của các ô nhớ chứa các biến này cũng là bất kỳ, không thể xác định trước. Bên cạnh bộ nhớ loại SRAM, một số chip thuộc họ 8051 còn có thêm bộ nhớ dữ liệu loại EEPROM với dung lượng tối đa vài Kbyte, tùy từng loại chip cụ thể. Dưới đây là một vài ví dụ về bộ nhớ chương trình của một số loại chip thông dụng thuộc họ 8051

Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Cấu trúc bus Bus địa họ vi điều khiển 8051 gồm 16 đường tín hiệu (thường gọi bus địa 16 bit) Với số lượng bit địa trên, không gian nhớ chip mở rộng tối đa 216 = 65536 địa chỉ, tương đương 64K Bus liệu họ vi điều khiển 8051 gồm đường tín hiệu (thường gọi bus liệu bit), lý nói 8051 họ vi điều khiển bit Với độ rộng bus liệu vậy, chip họ 8051 xử lý tốn hạng bit chu kỳ lệnh Bộ nhớ chương trình Vi điều khiển họ 8051 có khơng gian nhớ chương trình 64K địa chỉ, dung lượng nhớ chương trình lớn mà chip thuộc họ có Bộ nhớ chương trình chip họ 8051 thuộc loại: ROM, EPROM, Flash, khơng có nhớ chương trình bên chip Tên chip thể loại nhớ chương trình mà mang bên trong, cụ thể vài ví dụ sau: STT Tên chip ROM EPROM Flash 8051 Kbyte x x 8052 Kbyte x x 8031 x x x 8032 x x x 87C51 x Kbyte x 87C52 x Kbyte x AT89C51 / AT89S51 x x Kbyte AT89C52 / AT89S52 x x Kbyte Bộ nhớ liệu Vi điều khiển họ 8051 có khơng gian nhớ liệu 64K địa chỉ, dung lượng nhớ liệu lớn mà chip thuộc họ có (nếu phối ghép cách tắc, sử dụng đường tín hiệu bus địa liệu) Bộ nhớ liệu chip họ 8051 thuộc hay hai loại: SRAM EEPROM Bộ nhớ liệu SRAM tích hợp bên chip thuộc họ vi điều khiển này, có dung lượng khác tùy loại chip, thường khoảng vài trăm byte Đây nơi chứa biến trung gian trình hoạt động chip điện, chất SRAM mà giá trị biến bị theo Khi có điện trở lại, nội dung ô nhớ chứa biến bất kỳ, xác định trước Bên cạnh nhớ loại SRAM, số chip thuộc họ 8051 cịn có thêm nhớ liệu loại EEPROM với dung lượng tối đa vài Kbyte, tùy loại chip cụ thể Dưới vài ví dụ nhớ chương trình số loại chip thơng dụng thuộc họ 8051 STT Tên chip Bộ nhớ SRAM Bộ nhớ EEPROM AT89C51 128 byte AT89C52 256 byte AT89C2051 128 byte AT89S51 128 byte AT89S52 256 byte AT89S8252 256 byte 2048 byte Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Tổng quát nhớ 8051, ta thấy chip 8051 gồm có nhớ sau: 64 Kbyte Phần khơng gian địa cho nhớ chương trình cịn trống, 64 Kbyte trừ lượng nhớ onchip Phần không gian địa cho nhớ liệu (hoàn toàn trống rỗng 64K byte, dành cho nhớ liệu ghép thêm bên ngồi có) Bộ nhớ chương trình onchip Bộ nhớ SRAM Dung lượng tùy loại chip Đối với chip có nhớ SRAM 128 byte địa byte SRAM đánh số từ 00h đến 7Fh Đối với chip có nhớ SRAM 256 byte địa byte SRAM đánh số từ 00h đến FFh Ở hai loại chip, SRAM có địa từ 00h đến 7Fh gọi vùng RAM thấp, phần có địa từ 80h đến FFh (nếu có) gọi vùng RAM cao Bên cạnh nhớ, bên chip 8051 cịn có tập hợp ghi chức đặc biệt (SFR – Special Function Register) Các ghi liên quan đến hoạt động ngoại vi onchip (các cổng vào ra, timer, ngắt ) Địa chúng trùng với dải địa vùng SRAM cao, tức có địa từ 80h đến FFh Vùng RAM cao, có địa từ 80h đến FFh Vùng SFR, có địa từ 80h đến FFh Vùng RAM thấp có địa từ 00h đến 7Fh Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Vậy truy cập vào địa thuộc dải từ 00h đến 7Fh truy cập đến nhớ thuộc vùng RAM thấp Tuy nhiên truy cập đến địa x thuộc dải từ 80h đến FFh xảy vấn đề cần giải quyết: truy cập đến ghi SFR địa x hay truy cập đến ô nhớ địa x vùng RAM cao? Nhà sản xuất quy định rằng, trường hợp này, kiểu truy cập sử dụng chế độ địa trực tiếp truy cập vào vùng SFR, ngược lại kiểu truy cập sử dụng chế độ địa gián tiếp truy cập vào vùng RAM cao Bản đồ ghi SFR Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Nhắc lại nhớ 8501 8051 có không gian địa dành cho nhớ chương trình nhớ liệu riêng biệt Cả khơng gian có 16bit địa chỉ, chứa tối đa 216 = 64K = 65536 ô nhớ loại Bộ nhớ onchip 8051 gồm có Kbyte nhớ chương trình (ROM, EPROM, EEPROM Flash tùy loại biến thể) 128byte nhớ liệu (RAM) Kbyte nhớ chương trình onchip nằm không gian địa 64 Kbyte dành cho nhớ chương trình (thuộc dải địa từ 0x0000 đến 0x0FFF) 64K 4K Ngược lại, 128 byte RAM onchip lại không nằm không gian địa 64 Kbyte dành cho nhớ liệu Ta tưởng tượng khơng gian nhớ chương trình thùng lấp đầy 1/16 dung tích Kbyte nhớ onchip, cịn khơng gian nhớ liệu thùng to dung tích 64 Kbyte rỗng hồn tồn hộp nhỏ dung tích 128 byte (địa từ 0x00 đến 0x7F) nằm riêng rẽ bên cạnh 64K 128 byte Bộ nhớ chương trình dùng để chứa mã chương trình nạp vào chip Mỗi lệnh mã hóa hay vài byte, dung lượng nhớ chương trình phản ánh số lượng lệnh mà nhớ chứa Địa nhớ chương trình (0x0000) địa Reset 8051 Ngay sau reset (do tắt bật nguồn, mức điện áp chân RESET bị kéo lên 5V ), CPU nhảy đến thực lệnh đặt địa trước tiên, luôn Phần cịn trống khơng gian chương trình khơng dùng để làm Nếu muốn mở rộng nhớ chương trình, ta phải dùng nhớ chương trình bên ngồi có dung lượng ý muốn Tuy nhiên dùng nhớ chương trình ngồi, nhớ chương trình onchip khơng dùng nữa, nhớ chương trình ngồi chiếm dải địa từ địa 0x0000 Bộ nhớ liệu RAM onchip thường dùng để chứa biến tạm thời trình vi điều khiển hoạt động, nơi dành cho ngăn xếp hoạt động Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Khơng gian liệu 64Kbyte để trống hoàn toàn dùng ghép nối với nhớ liệu bên Khi ghép nối thêm nhớ liệu bên ngoài, dung lượng nhớ chiếm dần vị trí khơng gian, nhiên không ảnh hưởng đến 128byte RAM onchip Ngăn xếp 8051 liên quan đến ghi tên trỏ ngăn xếp SP (Stack Pointer) Thanh ghi ln trỏ vào đỉnh ngăn xếp, tức chứa địa vị trí sát vị trí lưu địa chỉ/dữ liệu vào Khi cất byte địa chỉ/dữ liệu vào ngăn xếp, SP tự động tăng lên đơn vị sau cất địa chỉ/dữ liệu vào nhớ có địa với giá trị SP sau tăng Khi lấy byte địa chỉ/dữ liệu khỏi ngăn xếp, giá trị lấy sau SP tự động trừ đơn vị Giá trị sau reset SP 0x07, quy định ngăn xếp cất liệu từ địa 0x08 trở Tuy nhiên đặc tính hoạt động bành trướng theo chiều tăng địa mà ngăn xếp thường bố trí lên vùng nhớ RAM onchip để tránh tranh chấp với biến lưu RAM Mơ tả nhớ chương trình 8051: Thân chương trình (chương trình chính, chương trình con, chương trình xử lý ngắt, bảng số ) 0x0FFF 0x0030 Vector ngắt thứ n Vector ngắt thứ 0x0003 địa reset 0x0000 Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Mơ tả nhớ liệu RAM 8051: 0x7F Vùng RAM thường (không đánh địa bit được) 0x30 Vùng RAM 16 byte đánh địa bit từ 0x00 đến 0x7F 0x2F băng ghi băng có ghi R0 0x1F 0x20 8052 có thêm vùng RAM cao (địa từ 0x80 đến 0xFF) truy nhập phải theo chế độ địa gián tiếp để phân biệt với vùng SFR Đây vùng ghi chức đặc biệt SFR (Special Function Register) có 8051 8052 Truy nhập (ghi/đọc) vùng truy nhập vào địa từ 0x80 đến 0xFF phải theo chế độ địa trực tiếp 0x00 Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Cổng vào/ra song song (Parrallel I/O Port) 8051 8051 có cổng vào song song, có tên P0, P1, P2 P3 Tất cổng cổng vào hai chiều 8bit Các bit cổng chân chip, cổng có chân chip Hướng liệu (dùng cổng làm cổng hay cổng vào) độc lập cổng chân (các bit) cổng Ví dụ, ta định nghĩa cổng P0 cổng ra, P1 cổng vào ngược lại cách tùy ý, với cổng P2 P3 lại Trong cổng P0, ta định nghĩa chân P0.0 cổng vào, P0.1 lại cổng tùy ý Liên quan đến cổng vào/ra song song 8051 có ghi SFR ( ghi chức đặc biệt) có tên trùng với tên cổng Ta có ghi P0 dùng cho cổng P0, ghi P1 dùng cho cổng P1 … Đây ghi đánh địa đến bit (bit addressable), ta dùng lệnh tác động bit bit ghi Mỗi ghi gồm bit tương ứng với chân (bit) cổng Khi chân (bit) cổng dùng làm cổng vào trước bit tương ứng ghi SFR phải đặt mức Nếu chân (bit) cổng dùng làm cổng giá trị bit tương ứng ghi SFR giá trị lôgic muốn đưa chân cổng Nếu muốn đưa mức lơgic cao (điện áp gần 5V), bit tương ứng ghi phải đặt 1, hiển nhiên muốn đưa mức lơgic thấp (điện áp gần 0V) bit tương ứng ghi phải đặt Như nói trên, bit ghi cổng đặt 1/0 mà không làm ảnh hưởng đến bit cịn lại cổng cách dùng lệnh setb (đặt lên 1) hay clr (đặt 0) Sau đặt chân cổng làm cổng vào, ta dùng lệnh kiểm tra bit để đọc vào kiểm tra mức lôgic mạch áp vào mức hay mức Các lệnh jb (nhảy bit 1), jnb (nhảy bit 0) Mỗi cổng có cấu trúc gồm latch (chính bit ghi cổng), mạch lái đầu (output driver) mạch đệm đầu vào (input buffer) Ngoài chức vào/ra thơng thường, số cổng cịn tích hợp thêm chức số ngoại vi khác Xem bảng liệt kê sau: Các chân cổng P1.0 P1.1 tích hợp với tín hiệu timer2 trường hợp chip 8052 Khi dùng với chức ngoại vi, chân cổng tương ứng phải đặt lên Nếu khơng tín hiệu ln bị ghim mức Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Sơ đồ mạch chân cổng: Cổng P0 khơng có điện trở treo cao (pullup resistor) bên trong, mạch lái tạo mức cao có sử dụng cổng với tính bus dồn kênh địa chỉ/dữ liệu Như với chức thông thường, P0 cổng open drain, với chức vào, P0 cổng vào cao trở (high impedance) Nếu muốn sử dụng cổng P0 làm cổng vào/ra thông thường, ta phải thêm điện trở pullup bên Giá trị điện trở pullup bên thường từ 4K7 đến 10K Các cổng P1, P2 P3 có điện trở pullup bên trong, dùng với chức cổng vào/ra thơng thường mà khơng cần có thêm điện trở pullup bên Thực chất, điện trở pullup bên FET, khơng phải điện trở tuyến tính thơng thường, khả phun dòng mạch lái đầu mức cao (hoặc đầu vào) nhỏ, khoảng 100 micro Ampe Trong datasheet AT89S5x (một biến thể họ 8051 Atmel sản xuất) có thống kê số liệu sau: Theo đó, ta thiết kế để cổng phải cung cấp cho tải đầu mức cao lượng dòng điện IOH = 60 micro Ampe mức điện áp đầu VOH bị kéo sụt xuống, đảm bảo từ 2.4V trở lên nhà sản xuất, cao sát với 5V lý thuyết Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Trong đó, khả nuốt dịng mạch lái đầu mức thấp lại cao nhiều, đạt từ vài đến hàng chục mili Ampe Như vậy, thiết kế với phần tử bên ngoài, ta nên để ý đến đặc tính vào/ra chân cổng Ví dụ dùng để ghép nối với LED đơn LED thanh, ta nên thiết kế chân cổng nuốt dòng từ LED để làm LED sáng (cổng nối với Cathode LED), không nên thiết kế chân cổng phun dòng cho LED để làm LED sáng (cổng nối với Anode LED) Cơ chế ngắt 8051 8051 có số lượng nguồn ngắt (interrupt source) gọi nguyên nhân ngắt Mỗi ngắt có vector ngắt riêng, địa cố định nằm nhớ chương trình, ngắt xảy ra, CPU tự động nhảy đến thực lệnh nằm địa Bảng tóm tắt ngắt 8051 sau: STT Tên ngắt INT0 Timer0 INT1 Timer1 Serial Port Mơ tả Ngắt ngồi có tín hiệu tích cực theo kiểu chọn chân P3.2 Ngắt tràn timer0 giá trị timer0 tràn từ giá trị max giá trị Ngắt có tín hiệu tích cực theo kiểu chọn chân P3.3 Ngắt tràn timer1 giá trị timer1 tràn từ giá trị max giá trị Ngắt cổng nối tiếp vi điều khiển nhận truyền xong byte cổng nối tiếp Cờ ngắt IE0 Thanh ghi chứa cờ TCON Vector ngắt 0x0003 TF0 TCON 0x000B IE1 TCON 0x0013 TF1 TCON 0x001B TI, RI SCON 0x0023 Với 8052, ngồi ngắt cịn có thêm ngắt timer2 (do vi điều khiển có thêm timer2 số ngoại vi onchip) Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Mỗi ngắt dành cho vector ngắt kéo dài 8byte Về mặt lý thuyết, chương trình đủ ngắn, mã tạo chứa đủ byte, người lập trình hồn tồn đặt phần chương trình xử lý ngắt vector ngắt Tuy nhiên hầu hết trường hợp, chương trình xử lý ngắt có dung lượng mã tạo lớn 8byte nên vector ngắt, ta đặt lệnh nhảy tới chương trình xử lý ngắt nằm vùng nhớ khác Nếu khơng làm vậy, mã chương trình xử lý ngắt lấn sang, đè vào vector ngắt kế cận Liên quan đến ngắt chủ yếu có hai ghi ghi IE ghi IP Để cho phép ngắt, bit tương ứng với ngắt bit EA phải đặt Thanh ghi IE ghi đánh địa bit, dùng lệnh tác động bit để tác động riêng rẽ lên bit mà không làm ảnh hưởng đến giá trị bit khác Cờ ngắt hoạt động độc lập với việc cho phép ngắt, điều có nghĩa cờ ngắt tự động đặt lên có kiện gây ngắt xảy ra, kiện có cho phép ngắt hay khơng Do vậy, trước cho phép ngắt, ta nên xóa cờ ngắt để đảm bảo sau cho phép, kiện gây ngắt khứ khơng thể gây ngắt Ví dụ trước cho phép ngắt timer0 mà timer chạy tràn (dù tràn hay nhiều lần) cờ TF0 1, sau ta cho phép ngắt timer0 gây ngắt cờ tràn (sự kiện tràn gây ngắt trường hợp tràn khứ, kiện ta quan tâm đến) Vì xóa cờ TF0 trước cho phép ngắt tràn timer0 Ngoại trừ cờ của ngắt nối tiếp (và cờ ngắt timer2 8052), cờ ngắt khác tự động xóa CPU thực chương trình phục vụ ngắt Lý ngắt cổng nối tiếp (và ngắt timer2 8052) gây nguyên nhân (có cờ cho ngắt), xảy ngắt, người lập trình cần phải kiểm tra xem cờ đặt để phân biệt nguyên nhân gây ngắt nguyên nhân để xử lý thích hợp Ví dụ ngắt cổng nối tiếp ngắt gây nguyên nhân: vi điều khiển nhận xong truyền xong byte liệu qua cổng nối tiếp Xảy kiện cờ ngắt tương ứng tự động đặt lên 1, nhận xong cờ RI 1, truyền xong cờ TI Trong chương trình xử lý ngắt, người lập trình phải kiểm tra cờ TI hay cờ RI để định xử lý ngắt truyền hay xử lý ngắt nhận Sau kiểm tra, Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 10 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm người lập trình phải viết lệnh xóa cờ việc khơng CPU thực tự động cờ ngắt khác Nói đến ngắt khơng thể khơng nói đến mức ưu tiên ngắt Mức ưu tiên ngắt hiểu phân bậc, định xử lý ngắt hai hay nhiều ngắt xảy Có chế phân bậc ưu tiên Thứ chế phân bậc dành cho ngắt xảy đồng thời, hai ngắt A B xảy thời điểm nhìn từ phía vi điều khiển Thứ hai chế phân bậc dành cho ngắt xảy xen kẽ nhau, xử lý ngắt A ngắt B xảy ra, trường hợp, CPU xử lý sao? Hãy xem Với trường hợp ngắt xảy đồng thời, CPU xem xét mức ưu tiên ngắt đó, từ định xử lý ngắt có mức ưu tiên cao trước Mức ưu tiên trường hợp mức ưu tiên cứng (được quy định nhà sản xuất, cấu trúc sẵn có 8051 người lập trình khơng thể thay đổi được) Nhìn vào bảng ta thấy ngắt INT0 ngắt có mức ưu tiên cao ngắt timer2 ngắt có mức ưu tiên thấp số ngắt Như ngắt ngắt timer0 xảy lúc, ngắt CPU xử lý trước, sau xử lý ngắt timer0 Với trường hợp xảy ngắt xen kẽ, CPU xử lý ngắt A mà ngắt B xảy ra, CPU giải theo hướng: tiếp tục xử lý ngắt A mức ưu tiên ngắt B không cao mức ưu tiên ngắt A, dừng việc xử lý ngắt A lại, chuyển sang xử lý ngắt B mức ưu tiên ngắt B cao mức ưu tiên ngắt A Mức ưu tiên cho ngắt trường hợp mức ưu tiên cứng nhà sản xuất quy định (tức không vào bảng trên) mà người lập trình đặt Người lập trình dùng ghi IP để quy định mức ưu tiên cho ngắt hai mức: mức cao mức thấp Để đặt mức ưu tiên ngắt (trong trường hợp xảy xen kẽ) mức cao, ta đặt bit tương ứng với ngắt ghi IP 1, mức thấp ứng với giá trị bit = Thanh ghi IP (Interrupt Priority) PT2 PS PT1 PX1 PT0 PX0 Các bit ghi IP tương ứng với ngắt ghi IE (bit PX0 dành cho ngắt 0, bit PT0 dành cho ngắt timer 0…) Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 11 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Một điều dễ nhận ngắt đặt mức ưu tiên cao (bit tương ứng ghi IP 1) chẳng có ngắt xen vào q trình xử lý Nói mức ưu tiên ngắt, dùng ví dụ tổng quát sau, giả sử hai ngắt timer0 ngắt cổng nối tiếp cho phép (các bit tương ứng bit EA ghi IE đặt 1), bit PT0 = 0, bit PS = thì: - Nếu hai ngắt xảy ra, ngắt timer0 thắng phục vụ trước - Nếu ngắt cổng nối tiếp xảy trước xử lý ngắt timer0 có xảy khơng thể chen vào, làm dừng q trình xử lý ngắt cổng nối tiếp - Nếu ngắt timer0 xảy trước xử lý mà ngắt cổng nối tiếp xảy CPU phải dừng việc xử lý ngắt timer0 lại, chuyển sang xử lý ngắt cổng nối tiếp, xử lý xong quay lại xử lý tiếp ngắt timer0 Ngắt (External Interrupt) Như nói trên, 8051 có ngắt ngồi INT0 INT1 Ngắt hiểu ngắt gây kiện mức lôgic (mức điện áp thấp, gần 0V) sườn xuống (sự chuyển mức điện áp từ mức cao mức thấp) xảy chân ngắt tương ứng (P3.2 với ngắt P3.3 với ngắt 1) Việc lựa chọn kiểu ngắt thực bit IT (Interrupt Type) nằm ghi TCON Đây ghi điều khiển timer bit LSB (bit0 3) dùng cho ngắt ngồi Khi bit ITx = ngắt tương ứng chọn kiểu ngắt theo sườn xuống, ngược lại bit ITx = ngắt ngồi tương ứng có kiểu ngắt ngắt theo mức thấp Các bit IE bit cờ ngắt ngồi, có tác dụng trường hợp kiểu ngắt chọn ngắt theo sườn xuống Khi kiểu ngắt theo sườn xuống chọn ngắt xảy lần có sườn xuống tín hiệu, sau tín hiệu mức thấp, có sườn lên, mức cao khơng có ngắt xảy có sườn xuống Cờ ngắt IE dựng lên có sườn xuống tự động bị xóa CPU bắt đầu xử lý ngắt Khi kiểu ngắt theo mức thấp chọn ngắt xảy tín hiệu chân ngắt mức thấp Nếu sau xử lý xong ngắt mà tín hiệu mức thấp lại ngắt tiếp, xử lý xong ngắt lần thứ n , tín hiệu lên mức cao thơi khơng ngắt Cờ ngắt IE trường hợp khơng có ý nghĩa Thơng thường kiểu ngắt hay chọn ngắt theo sườn xuống Các timer/counter 8051 8051 có timer tên timer0 timer1 Các timer timer 16bit, giá trị đếm max 216 = 65536 (đếm từ đến 65535) Hai timer có nguyên lý hoạt động hoàn toàn giống độc lập Sau cho phép chạy, có thêm xung đầu vào đếm, giá trị timer Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 12 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm tự động tăng lên đơn vị, giá trị tăng lên vượt giá trị max mà ghi đếm biểu diễn giá trị đếm lại đưa trở giá trị (thông thường = 0) Sự kiện hiểu kiện tràn timer (overflow) gây ngắt ngắt tràn timer cho phép (bit ETx ghi IE = 1) Việc cho timer chạy/dừng thực bit TR ghi TCON (đánh địa đến bit) Khi bit TRx = 1, timerx đếm, ngược lại TRx = 0, timerx không đếm có xung đưa vào Khi dừng không đếm, giá trị timer giữ nguyên Các bit TFx cờ báo tràn timer, kiện tràn timer xảy ra, cờ tự động đặt lên ngắt tràn timer cho phép, ngắt xảy Khi CPU xử lý ngắt tràn timerx, cờ ngắt TFx tương ứng tự động xóa Giá trị đếm 16bit timerx lưu hai ghi THx (byte cao) TLx (byte thấp) Hai ghi ghi/đọc lúc Tuy nhiên nhà sản xuất khuyến cáo nên dừng timer (cho bit TRx = 0) trước ghi/đọc ghi chứa giá trị đếm Các timer hoạt động theo nhiều chế độ, quy định bit ghi TMOD (không đánh địa đến bit) Để xác định thời gian, người ta chọn nguồn xung nhịp (clock) đưa vào đếm timer xung nhịp bên (dành cho CPU) Nguồn xung nhịp Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 13 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm thường đặn (có tần số ổn định), từ số đếm timer người ta nhân với chu kỳ xung nhịp để tính thời gian trơi qua Timer lúc gọi xác với tên “timer”, tức định thời Để đếm kiện bên ngoài, người ta chọn nguồn xung nhịp đưa vào đếm timer tín hiệu từ bên ngồi (đã chuẩn hóa dạng xung vng 0V/5V) Các tín hiệu nối với bit cổng có dồn kênh thêm tính T0/T1/T2 Khi có kiện bên ngồi gây thay đổi mức xung đầu vào đếm, timer tự động tăng lên đơn vị giống trường hợp đếm xung nhịp bên Lúc này, timer gọi xác với tên khác: “counter”, tức đếm (sự kiện) Nhìn vào bảng mơ tả ghi TMOD bên trên, ta nhận thấy có bit giống (gồm GATEx, C/Tx, Mx0 Mx1) dành cho timer0 Ý nghĩa bit timer Bit GATEx quy định việc cho phép timer đếm (run timer) Nếu GATEx = 0, timerx đếm bit TRx 1, dừng bit TRx Nếu GATEx = 1, timerx đếm bit TRx = tín hiệu chân INTx = 1, dừng hai điều kiện khơng cịn thỏa mãn Thơng thường người ta dùng timer với GATE = 0, dùng timer với GATE = trường hợp muốn đo độ rộng xung lúc timer đếm thời gian xung đưa vào chân INTx mức cao Bit C/Tx quy định nguồn clock đưa vào đếm timer Nếu C/Tx = 0, timer cấu hình định thời, C/Tx = 1, timer cấu hình đếm kiện Hai bit lại (Mx0 Mx1) tạo tổ hợp giá trị (00,01,10 11) ứng với chế độ hoạt động khác timerx Trong chế độ thường dùng chế độ timer/counter 16bit (Mx1 = 0, Mx0 = 1) chế độ Auto Reload 8bit timer/counter (Mx1 = 1, Mx0 = 0) Trong chế độ timer/counter 16bit, giá trị đếm (chứa hai ghi THx TLx) tự động tăng lên đơn vị lần nhận thêm xung nhịp Khi giá trị đếm tăng vượt giá trị max = 65535 tràn 0, cờ ngắt TFx tự động đặt = Chế độ dùng ứng dụng đếm thời gian đếm kiện Trong chế độ Auto Reload 8bit, giá trị đếm chứa ghi TLx, giá trị ghi THx số n (từ đến 255) người lập trình đưa vào Khi có thêm xung nhịp, giá trị đếm TLx đương nhiên tăng lên đơn vị bình thường Tuy nhiên trường hợp này, giá trị đếm lớn 255 65535 trường hợp timer/counter cịn 8bit Do kiện tràn lúc xảy nhanh hơn, cần vượt 255 giá trị đếm tràn Cờ ngắt TFx tự động đặt = trường hợp tràn 16bit Điểm khác biệt thay tràn 0, giá trị THx tự động nạp lại (Auto Reload) vào ghi TLx, timer/counter sau tràn có giá trị n (giá trị chứa THx) đếm từ giá trị n trở Chế độ dùng việc tạo Baud rate cho truyền thông qua cổng nối tiếp Để sử dụng timer 8051, thực bước sau: - Quy định chế độ hoạt động cho timer cách tính tốn ghi giá trị cho bit ghi TMOD - Ghi giá trị đếm khởi đầu mong muốn vào ghi đếm THx TLx Đôi ta không muốn timer/counter bắt đầu đếm từ mà từ giá trị để thời điểm tràn gần hơn, chẵn tính tốn sau Ví dụ cho timer đếm từ 15535 sau 50000 xung nhịp (tức 50000 micro Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 14 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm - giây với thạch anh 12MHz) timer tràn, thời gian giây dễ dàng tính xác = 20 lần tràn timer (đương nhiên lần tràn lại phải nạp lại giá trị 15535) Đặt mức ưu tiên ngắt cho phép ngắt tràn timer (nếu muốn) Dùng bit TRx ghi TCON timer chạy hay dừng theo ý muốn Cổng nối tiếp (Serial Port) 8051 Cổng nối tiếp 8051 chủ yếu dùng ứng dụng có u cầu truyền thơng với máy tính, với vi điều khiển khác Liên quan đến cổng nối tiếp chủ yếu có ghi: SCON SBUF Ngồi ra, ghi khác ghi PCON (không đánh địa bit) có bit tên SMOD quy định tốc độ truyền cổng nối tiếp có gấp đôi lên (SMOD = 1) hay không (SMOD = 0) Dữ liệu truyền nhận nối tiếp thông qua hai chân cổng P3.0(RxD) P3.1(TxD) Thanh ghi SBUF ghi 8bit chứa liệu truyền nhận Về thực chất có hai ghi liệu khác nhau, dành để chứa liệu truyền đi, để chứa liệ nhận Cả hai ghi có chung tên SBUF, nhiên CPU hoàn toàn phân biệt cách dễ dàng Khi ta muốn truyền liệu đi, ta phải ghi vào ghi SBUF (ví dụ viết lệnh mov SBUF,a), cịn muốn đọc kiểm tra liệu nhận ta phải đọc ghi SBUF (ví dụ viết lệnh mov a,SBUF) CPU vào việc ghi SBUF nằm vị trí tốn hạng đích (tốn hạng bên trái) hay toán hạng nguồn (toán hạng bên phải) để định truy nhập (đọc/ghi) ghi SBUF Người lập trình khơng cần phải quan tâm xử lý vấn đề Thanh ghi quy định chế độ hoạt động điều khiển cổng nối tiếp ghi SCON (đánh địa bit) SM0 SM1 SM2 REN TB8 RB8 TI RI Bit SM0, SM1, SM2 quy định chế độ hoạt động cổng nối tiếp Thông thường để truyền thông vi điều khiển vi điều khiển máy tính, giá trị bit SM2 đặt Khi truyền thông theo kiểu mạng đa vi xử lý (multiprocessor communication), SM2 đặt Hai bit SM0 SM1 thực bit quy định chế độ hoạt động cổng nối tiếp, chúng tạo tổ hợp (00,01,10 11) ứng với chế độ hoạt động mô tả bảng sau SM0 0 SM1 1 Chế độ - Đồng - Dị - Dị - Dị Khung liệu Baud rate bit SBUF Fosc/12 bit SBUF Thay đổi 8bit SBUF + Fosc/32 RB8/TB8 Fosc/64 8bit SBUF + Thay đổi RB8/TB8 Chế độ 0: chế độ truyền đồng Chân RxD tín hiệu truyền/nhận liệu, chân TxD tín hiệu xung nhịp Bit LSB (bit 0) liệu truyền trước tiên Tốc độ truyền cố định 1/12 giá trị thạch anh Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 15 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Chế độ 1: chế độ truyền dị bit Dữ liệu bit đóng khung bit Start (= 0) đầu bit Stop (=1) cuối trước truyền Tốc độ truyền thay đổi theo ý người lập trình Chế độ 2: chế độ truyền dị bit Dữ liệu bit ghép thành 8bit ghi SBUF bit RB8 (trường hợp nhận về) TB8 (trường hợp truyền đi) ghi SCON Ngoài bit Start Stop gắn bình đầu cuối khung truyền Trong chế độ này, tốc độ truyền chọn mức: 1/32 1/64 giá trị thạch anh (tùy thuộc vào giá trị bit SMOD ghi PCON nói trên) Chế độ 3: chế độ truyền dị bit, khác với chế độ chỗ tốc độ truyền thay đổi theo ý người lập trình chế độ Bit REN ghi SCON bit cho phép nhận liệu Dữ liệu nhận qua cổng nối tiếp bit = Bit TB8 bit liệu thứ trường hợp truyền bit (8 bit ghi SBUF) Bit RB8 bit liệu thứ trường hợp nhận bit (8 bit ghi SBUF) Bit TI cờ ngắt truyền, báo hiệu việc truyền khung liệu hoàn tất Bit RI cờ ngắt nhận, báo hiệu việc nhận khung liệu hoàn tất Để tạo tốc độ truyền (Baud rate) cổng nối tiếp 8051, phải dùng đến timer1 chế độ Auto Reload 8bit Giá trị nạp lại chứa ghi TH1 tính tốn theo cơng thức sau (phụ thuộc vào Baud rate mong muốn giá trị thạch anh) Tóm lại để sử dụng cổng nối tiếp 8051, thực bước sau: - Chọn chế độ cho cổng nối tiếp (đồng bộ/dị bộ, 8bit/9bit ), từ chọn giá trị cho bit ghi SCON Lưu ý xóa bit TI RI - Chọn tốc độ truyền mong muốn, từ tính giá trị ghi TH1 Cho timer1 chạy chế độ Auto Reload 8bit (không dùng ngắt tràn timer1) - Đặt mức ưu tiên ngắt cho phép ngắt cổng nối tiếp muốn - Bắt đầu trình truyền liệu lệnh ghi liệu muốn truyền vào ghi SBUF Quá trình truyền kết thúc cờ TI tự động đặt lên - Khi khung liệu nhận đầy đủ, cờ RI tự động đặt lên người lập trình lúc dùng lệnh đọc ghi SBUF để lấy liệu nhận xử lý Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 16 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Tập lệnh 8051 Trước nói tập lệnh 8051 phải nhắc tới ghi PSW, ghi có bit phản ánh trạng thái thời CPU Các bit cờ ghi tự động cập nhật thường xuyên sau lệnh CPU thực Ngoài bit cờ, bit RS0 RS1 cho phép người lập trình chọn bank ghi R dùng bank 0, 1, hay Các chế độ địa Chế độ địa trực tiếp: dùng cho toán hạng nằm vùng RAM thấp vùng ghi chức đặt biệt SFR Chế độ địa gián tiếp: dùng cho toán hạng nằm RAM (cả vùng cao, vùng thấp RAM ngồi), khơng dùng cho vùng SFR Địa toán hạng chứa ghi trỏ (R0 R1 RAM trong, DPTR RAM ngoài) Thay xuất trực tiếp câu lệnh chế độ trực tiếp, tốn hạng khơng xuất mà có ghi trỏ đại diện đứng Đặc điểm dễ nhận ghi xuất ln kèm theo ký tự “@” phía trước Chế độ địa ghi: dùng cho trường hợp toán hạng ghi Ri bank ghi chọn Các ghi R trường hợp khơng có ký tự “@” phía trước Chế độ địa ghi cụ thể: chế độ địa áp dụng cho lệnh tác động lên ghi Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 17 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Chế độ địa tức thời: chế độ địa mà giá trị toán hạng nêu rõ ràng câu lệnh Đặc điểm dễ dàng nhận toán hạng ln kèm theo ký tự “#” phía trước Chế độ địa chỉ số: dành cho lệnh movc, lệnh đọc nhớ chương trình, thường dùng cho việc tra bảng Trong câu lệnh xuất ký tự “@” sau tốn hạng tạo thành phép cộng ghi 16bit (PC DPTR) với ghi Acc Thanh ghi 16bit chứa địa đầu mảng, ghi A chứa độ lệch ô nhớ cần đọc so với đầu bảng Giá trị đọc ghi đè vào ghi A (xem mô tả tập lệnh để biết chi tiết hơn) Khi lập trình hợp ngữ cho 8051, lưu ý điều sau: - viết mã lệnh mà nhà sản xuất quy định, đừng nghĩ đến chuyện sáng tác mã lệnh Trình hợp ngữ không chấp nhận biến tấu nào, dù nhỏ - sử dụng chế độ địa dành cho lệnh Khơng phải lệnh cho phép sử dụng với tất chế độ địa kể trên, chí có lệnh cho phép sử dụng với chế độ địa - tuân theo cú pháp mà chế độ địa chọn yêu cầu - đặc biệt lưu ý lệnh có liên quan đến cờ lệnh cộng có nhớ (ADDC), lệnh trừ (SUBB), lệnh nhảy có điều kiện (JZ, JNZ, JC, JNC, CJNE ) Các cờ cập nhật giá trị cách tự động sau lệnh thực hiện, cần nắm tình giá trị cờ trước viết lệnh - viết thứ tự toán hạng Tốn hạng nguồn nằm bên phải, tốn hạng đích nằm bên trái, toán hạng ngăn cách dấu “,” Các ký hiệu dùng việc mô tả tập lệnh A: B: Ri: Rn: Dptr: Direct: #data: #data16: : : : : ghi chứa (Accumulator) ghi B ghi R0 R1 băng ghi băng ghi RAM ghi băng ghi băng ghi RAM ghi trỏ liệu (có độ rộng 16bit kết hợp từ ghi bit DPH DPL) biến bit(hay nhớ) RAM (trừ 32 ghi Rn đầu RAM) số bit số 16 bit địa nằm khoảng [PC-128 ; PC+127] địa nằm khoảng – 2Kbyte tính từ địa lệnh địa không gian 64K (áp dụng cho không gian nhớ chương trình khơng gian nhớ liệu) bit đánh địa (khơng dùng cho bit không đánh địa chỉ) Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 18 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Các lệnh tác động đến cờ ghi trạng thái STT Lệnh Cờ CY ADD X ADDC X SUBB X MUL DIV DA X RRC X RLC X SETB C CLR C 10 CPL C X 11 ANL C, X 12 ORL C, X 13 MOV C, X 14 CJNE X 0: cờ bị xóa “0” 1: cờ bị set lên “1” X: cờ bị thay đổi tùy theo kết việc thực lệnh Cờ OV X X X X X Cờ AC X X X Các lệnh tính tốn số học STT Mã lệnh 10 11 12 13 14 15 16 17 18 ADD ADD ADD ADD ADDC ADDC ADDC ADDC SUBB SUBB SUBB SUBB INC INC INC INC DEC DEC Cú pháp lệnh Toán hạng A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data A,Rn A,direct A,@Ri A,#data A Rn Direct @Ri A Rn Mô tả A = A + Rn A = A + direct A = A + @Ri A = A + #data A = A + Rn + C A = A + direct + C A = A + @Ri + C A = A + #data + C A = A – Rn – C A = A – direct – C A = A – @Ri – C A = A – #data – C A=A+1 Rn = Rn + direct = direct + @Ri = @Ri + A=A–1 Rn = Rn – Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com Số byte mã hóa 2 2 2 1 1 Số chu kỳ clock 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 19 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm 19 20 21 22 23 24 DEC DEC INC MUL DIV DA Direct @Ri Dptr AB AB A direct = direct – @Ri = @Ri – dptr = dptr + B:A = A*B A/B = A(thương) + B (dư) Hiệu chỉnh thập phân số liệu ghi A 1 1 12 12 24 48 48 12 Số byte mã hóa 2 2 2 1 1 1 Số chu kỳ clock Các lệnh thực phép tốn lơgic STT Mã lệnh 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Mơ tả Cú pháp lệnh Tốn hạng ANL ANL ANL ANL ANL ANL ORL ORL ORL ORL ORL ORL XRL XRL XRL XRL XRL XRL CLR CPL RL RLC RR RRC SWAP A,Rn A,direct A,@Ri A,#data direct,A Direct,#data A,Rn A,direct A,@Ri A,#data direct,A Direct,#data A,Rn A,direct A,@Ri A,#data direct,A Direct,#data A A A A A A A A = (A)and(Rn) A = (A)and(direct) A = (A)and(@Ri ) A = (A)and(#data) direct = (direct)and(A) direct = (direct)and(#data) A = (A)or(Rn) A = (A)or(direct) A = (A)or(@Ri ) A = (A)or(#data) direct = (direct)or(A) direct = (direct)or(#data) A = (A)xor(Rn) A = (A)xor(direct) A = (A)xor(@Ri ) A = (A)xor(#data) direct = (direct)xor(A) direct = (direct)xor(#data) A=0 A = not(A) Quay trái A Quay trái A qua cờ C Quay phải A Quay phải A qua cờ C Hoán đổi nửa A Nguyễn Xuân Kiên – MicroStudy Group PDF created with pdfFactory Pro trial version www.pdffactory.com 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 12 20 ... www.pdffactory.com Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Cổng vào/ra song song (Parrallel I/O Port) 8051 8051 có cổng vào song song, có tên P0, P1, P2 P3 Tất cổng cổng vào.. .Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm Tổng quát nhớ 8051, ta thấy chip 8051 gồm có nhớ sau: 64 Kbyte Phần khơng gian địa cho nhớ chương trình trống,... Pro trial version www.pdffactory.com 10 Làm quen với vi điều khiển 8051 - cấu trúc phần cứng cách lập trình phần mềm người lập trình phải vi? ??t lệnh xóa cờ vi? ??c không CPU thực tự động cờ ngắt khác

Ngày đăng: 21/08/2013, 10:29

Hình ảnh liên quan

bảng cách ằng số ...)  - Làm quen với vi điều khiển 8051   cấu trúc phần cứng và cách lập trình phần mềm

bảng c.

ách ằng số ...) Xem tại trang 5 của tài liệu.
Nhìn vào bảng trên ta thấy ngắt INT0 là ngắt có mức ưu tiên cao nhất và ngắt  timer2  là  ngắt  có  mức ưu  tiên  thấp  nhất  trong  số  các  ngắt - Làm quen với vi điều khiển 8051   cấu trúc phần cứng và cách lập trình phần mềm

h.

ìn vào bảng trên ta thấy ngắt INT0 là ngắt có mức ưu tiên cao nhất và ngắt timer2 là ngắt có mức ưu tiên thấp nhất trong số các ngắt Xem tại trang 11 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan