Vi Điều Khiển

Chào mừng các bạn đến với thế giới của Vi điều khiển!

--welcome to the world of microcontrollers^^ --

Điện Tử Cơ Bản

nơi khởi đầu

Lập Trình

linh hồn của phần cứng

Hiển thị các bài đăng có nhãn Giới thiệu 8051. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Giới thiệu 8051. Hiển thị tất cả bài đăng

Thứ Năm, 19 tháng 7, 2012

[Học lập trình 8051] Bài 7: Ngắt trong 8051


Ngắt trong 8051

Mục tiêu

Kết thúc bài học này, bạn có thể:

Ø  Phân biệt cơ chế ngắt với hỏi vòng
Ø  Nắm rõ các loại ngắt trong 8051
·        Ngắt timer/counter
·        Ngắt ngoài
·        Ngắt truyền thông nối tiếp
Ø  Lập trình các ngắt
·        Trình phục vụ ngắt là gì?
·        Cho phép ngắt và cấm ngắt
·        Thiết lập mức ưu tiên của các ngắt

Giới thiệu

            Ngắt (Interrupt) - như tên của nó, là một số sự kiện khẩn cấp bên trong hoặc bên ngoài bộ vi điều khiển xảy ra, buộc vi điều khiển tạm dừng thực hiện chương trình hiện tại, phục vụ ngay lập tức nhiệm vụ mà ngắt yêu cầu – nhiệm vụ này gọi là trình phục vụ ngắt (ISR: Interrupt Service Routine).
Trong bài này ta tìm hiểu khái niệm ngắt và lập trình các ngắt trong bộ vi điều khiển 8051.

1. Các ngắt của 8051

1.1  Phân biệt cơ chế ngắt với hỏi vòng

Lấy ví dụ: Bộ vi điều khiển đóng vai trò như một vị bác sĩ, các thiết bị kiểm soát bởi vi điều khiển được coi như các bệnh nhân cần được bác sĩ phục vụ.
Bình thường, vị bác sĩ sẽ hỏi thăm lần lượt từng bệnh nhân, đến lượt bệnh nhân nào được hỏi thăm nếu có bệnh thì sẽ được bác sĩ phục vụ, xong lại đến lượt bệnh nhân khác, và tiếp tục đến hết. Điều này tương đương với phương pháp thăm dò - hỏi vòng (Polling) trong vi điều khiển.
Cứ như thế, nếu chúng ta có 10 bệnh nhân, thì bệnh nhân thứ 10 dù muốn hay không cũng phải xếp hàng chờ đợi 09 bệnh nhân trước đó. Giả sử trường hợp bệnh nhân thứ 10 cần cấp cứu thì sao? Anh ta sẽ gặp nguy cấp trước khi đến lượt hỏi thăm của bác sĩ mất! L Nhưng, nếu anh ta sử dụng phương pháp “ngắt” thì mọi chuyện sẽ ổn ngay. Lúc đó vị bác sĩ sẽ ngừng mọi công việc hiện tại của mình, và tiến hành phục vụ trường hợp khẩn cấp này ngay lập tức, xong việc bác sĩ lại trở về tiếp tục công việc đang dở. Điều này tương đương với phương pháp ngắt (Interrupts) trong vi điều khiển.
            Trở lại với bộ vi điều khiển của chúng ta: 1 bộ vi điều khiển có thể phục vụ cho nhiều thiết bị, có 2 cách để thực hiện điều này đó là sử dụng các ngắt (Interrupts) và thăm dò (polling):

Ø  Trong phương pháp sử dụng ngắt: mỗi khi có một thiết bị bất kỳ cần được phục vụ thì nó báo cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi nhận được tín hiệu ngắt thì bộ vi điều khiển ngừng tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiết bị gọi ngắt. Chương trình ngắt được gọi là trình phục vụ ngắt ISR (Interrupt Service Routine) hay còn gọi là trình quản lý ngắt (Interrupt handler). Sau khi phục vụ ngắt xong, bộ vi xử lý lại quay trở lại điểm bị ngắt trước đó và tiếp tục thực hiện công việc.
Ø  Trong phương pháp thăm dò: bộ vi điều khiển kiểm tra liên tục tình trạng của tất cả các thiết bị, nếu thiết bị nào có yêu cầu thì nó dừng lại phục vụ thiết bị đó. Sau đó nó tiếp tục kiểm tra tình trạng của thiết bị kế tiếp cho đến hết. Phương pháp thăm dò rất đơn giản, nhưng nó lại rất lãng phí thời gian để kiểm tra các thiết bị kể cả khi thiết bị đó không cần phục vụ. Trong trường hợp có quá nhiều thiết bị thì phương án thăm dò tỏ ra không hiệu quả, gây ra chậm trễ cho các thiết bị cần phục vụ.

Điểm mạnh của phương pháp ngắt là:

Ø  Bộ vi điều khiển có thể phục vụ được rất nhiều thiết bị (tất nhiên là không tại cùng một thời điểm). Mỗi thiết bị có thể nhận được sự chú ý của bộ vi điều khiển dựa trên mức ưu tiên được gán cho nó. Đối với phương pháp thăm dò thì không thể gán mức ưu tiên cho các thiết bị vì nó kiểm tra tất cả mọi thiết bị theo kiểu hỏi vòng.
Ø  Quan trọng hơn, trong phương pháp ngắt thì bộ vi điều khiển còn có thể che (làm lơ) một yêu cầu phục vụ của thiết bị. Điều này lại một lần nữa không thể thực hiện được trong phương pháp thăm dò.
Ø  Lý do quan trọng nhất mà phương pháp ngắt được ưu chuộng là vì nó không lãng phí thời gian cho các thiết bị không cần phục vụ. Còn phương pháp thăm dò làm lãng phí thời gian của bộ vi điều khiển bằng cách hỏi dò từng thiết bị kể cả khi chúng không cần phục vụ.

Ví dụ trong các bộ định thời được bàn đến ở các bài trước ta đã dùng một vòng lặp kiểm tra và đợi cho đến khi bộ định thời quay trở về 0. Trong ví dụ đó, nếu sử dụng ngắt thì ta không cần bận tâm đến việc kiểm tra cờ bộ định thời, do vậy không lãng phí thời gian để chờ đợi, trong khi đó ta có thể làm việc khác có ích hơn.

1.2 Sáu ngắt trong 8051

            Thực tế chỉ có 5 ngắt dành cho người dùng trong 8051 nhưng các nhà sản xuất nói rằng có 6 ngắt vì họ tính cả lệnh RESET. Sáu ngắt của 8051 được phân bố như sau:

1.      RESET: Khi chân RESET được kích hoạt từ 8051, bộ đếm chương trình nhảy về địa chỉ 0000H.  Đây là địa chỉ bật lại nguồn.
2.      2 ngắt dành cho các bộ định thời: 1 cho Timer0 và 1 cho Timer1. Địa chỉ tương ứng của các ngắt này là 000BH001BH.
3.      2 ngắt dành cho các ngắt phần cứng bên ngoài: chân 12 (P3.2) và 13 (P3.3) của cổng P3 là các ngắt phần cứng bên ngoài INT0INT1 tương ứng. Địa chỉ tương ứng của các ngắt ngoài này là 0003H0013H.
4.      Truyền thông nối tiếp: có 1 ngắt chung cho cả nhận và truyền dữ liệu nối tiếp. Địa chỉ của ngắt này trong bảng vector ngắt là 0023H.

1.3 Trình phục vụ ngắt

            Đối với mỗi ngắt thì phải có một trình phục vụ ngắt (ISR) hay trình quản lý ngắt để đưa ra nhiệm vụ cho bộ vi điều khiển khi được gọi ngắt. Khi một ngắt được gọi thì bộ vi điều khiển sẽ chạy trình phục vụ ngắt. Đối với mỗi ngắt thì có một vị trí cố định trong bộ nhớ để giữ địa chỉ ISR của nó. Nhóm vị trí bộ nhớ được dành riêng để lưu giữ địa chỉ của các ISR được gọi là bảng vector ngắt. Xem Hình 1.


Thứ Sáu, 13 tháng 7, 2012

[Học lập trình 8051] Bài 6: Truyền thông nối tiếp với 8051

Truyền thông nối tiếp với 8051

Mục tiêu

Kết thúc bài học này, bạn có thể hiểu:

Ø  Truyền dữ liệu nối tiếp đồng bộ, không đồng bộ
Ø  Đóng khung dữ liệu trong truyền thông không đồng bộ
Ø  Chuẩn giao diện RS232
Ø  Nối ghép 8051 với chuẩn RS232
Ø  Các bước lập trình truyền thông nối tiếp cho 8051
·        Cài đặt khung truyền
·        Cài đặt tốc độ baud

Giới thiệu

Các máy tính truyền dữ liệu theo hai cách: Song song và nối tiếp. Trong truyền dữ liệu song song thường cần rất nhiều đường dây dẫn chỉ để truyền dữ liệu đến một thiết bị chỉ cách xa vài bước. Ví dụ của truyền dữ liệu song song là các máy in hoặc các ổ cứng, mỗi thiết bị sử dụng một đường cáp với nhiều dây dẫn. Mặc dù trong các trường hợp như vậy thì nhiều dữ liệu được truyền đi trong một khoảng thời gian ngắn bằng cách dùng nhiều dây dẫn song song, nhưng khoảng cách thì không thể lớn được. Vì các đường cáp dài làm suy giảm thậm chí làm méo tín hiệu. Ngoài ra, các đường cáp dài có giá thành cao. Vì những lý do này, để truyền d liệu đi xa thì  phải sử dụng phương pháp truyền nối tiếp.

1.      Các cơ sở của truyền thông nối tiếp

Trong truyền thông nối tiếp dữ liệu được gửi đi từng bit một, so với truyền song song thì là một hoặc nhiều byte được truyền đi cùng một lúc. Hình 1 so sánh giữa việc truyền dữ liệu nối tiếp và song song.

            Hình 1: Sơ đồ truyền dữ liệu nối tiếp so với sơ đồ truyền song song.

Thứ Hai, 9 tháng 7, 2012

[Học lập trình 8051] Bài 5: Bộ đếm-Bộ định thời trong 8051


Bộ đếm/ bộ định thời trong 8051

Mục tiêu

Kết thúc bài học này, bạn sẽ nắm được:

Ø  Bộ đếm, bộ định thời là gì?
Ø  Các thanh ghi liên quan
Ø  Cách thức hoạt động của bộ đếm/bộ định thời
Ø  Các bước lập trình bộ đếm/bộ định thời

Giới thiệu

Bộ đếm/Bộ định thời: Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm các xung nhịp. Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm đi 01 đơn vị (trong chế độ đếm lùi/đếm xuống).
Xung nhịp đưa vào đếm có thể là một trong hai loại:

Ø  Xung nhịp bên trong IC: Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao động bên trong IC và các linh kiện phụ bên ngoài nối với IC. Trong trường hợp sử dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers). Do xung nhịp bên loại này thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác.
Ø  Xung nhịp bên ngoài IC: Đó là các tín hiệu logic thay đổi liên tục giữa 02 mức 0-1 và không nhất thiết phải là đều đặn. Trong trường hợp này người ta gọi là các bộ đếm (counters). Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi…

Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn” (overflow). Nó được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu diễn và quay trở về giá trị 0. Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương với FF trong hệ Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit.

            8051 có 02 bộ đếm/bộ định thời. Chúng có thể được dùng như các bộ định thời để tạo một bộ trễ thời gian hoặc như các bộ đếm để đếm các sự kiện xảy ra bên ngoài bộ VĐK. Trong bài này chúng ta sẽ tìm hiểu về cách lập trình cho chúng và sử dụng chúng như thế nào. Phần 1 là Lập trình bộ định thời, và phần 2 là Lập trình cho bộ đếm.

1. Các bộ định thời của 8051

            8051 có hai bộ định thời là Timer 0Timer 1, ở phần này chúng ta bàn về các thanh ghi của chúng và sau đó trình bày cách lập trình chúng như thế nào để tạo ra các độ trễ thời gian.

1.1 Các thanh ghi cơ sở của bộ định thời

            Cả hai bộ định thời Timer 0Timer 1 đều có độ dài 16 bit được truy cập như hai thanh ghi tách biệt byte thấpbyte cao. Chúng ta sẽ bàn riêng về từng thanh ghi.

1.1.1 Các thanh ghi của bộ Timer 0

            Thanh ghi 16 bit của bộ Timer 0 được truy cập như byte thấp và byte cao:

Ø  Thanh ghi byte thấp được gọi là TL0 (Timer0 Low byte).
Ø  Thanh ghi byte cao được gọi là TH0 (Timer0 High byte).

Các thanh ghi này có thể được truy cập, hoặc được đọc như mọi thanh ghi khác chẳng hạn như A, B, R0, R1, R2 v.v...


Hình 1: Các thanh ghi của bộ Timer 0

Chủ Nhật, 8 tháng 7, 2012

[Học lập trình 8051] Bài 4: Các chân, cổng vào/ra

Các chân, cổng vào/ra

Mục tiêu:

Kết thúc bài học này, bạn có thể:

Ø  Nắm được cấu trúc các chân của 8051
Ø  Biết rõ tác dụng của chúng, cách sử dụng

1. Mô tả các chân của 8051
           
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau như vào/ra I/0, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt. Cần phải lưu ý rằng một số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào-ra ít hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên, vì hầu hết các nhà phát triển chính sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bản này.

Hình 1: Sơ đồ bố trí chân của 8051.

Thứ Năm, 7 tháng 6, 2012

[Học Lập trình 8051] Bài 1: Giới thiệu họ Vi điều khiển 8051

Giới thiệu họ Vi điều khiển 8051

Nội dung trong bài này:
Phần I: chúng ta sẽ xem xét một số thành viên khác nhau của họ bộ vi điều khiển 8051 và các đặc điểm bên trong của chúng. Đồng thời ta điểm qua một số nhà sản xuất khác nhau và các sản phẩm của họ có trên thị trường.
Phần II: Giới thiệu Kiến trúc Vi điều khiển 8051.


I - Tổng quan về họ 8051

1.1 Tóm tắt về lịch sử của 8051

Vào năm 1981. Hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp. Lúc ấy nó được coi là một “hệ thống trên chíp”. 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 bit (xem hình 1). Mặc dù 8051 có thể có một ROM trên chíp cực đại là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên chíp. Điều này sẽ được bàn chi tiết hơn sau này.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ dạng biến thế nào của 8051 mà họ thích với điều kiện họ phải để mã lại tương thích với 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng ROM trên chíp khác nhau được bán bởi hơn nửa các nhà sản xuất.  Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lương nhớ ROM trên chíp, nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào.

Đặc tính
Số lượng
ROM trên chíp
RAM
Bộ định thời
Các chân vào - ra
Cổng nối tiếp
Nguồn ngắt
4K byte
128 byte
2
32
1
6

Bảng 1: Các đặc tính cơ bản của 8051.

1.2 Bộ ví điều khiển 8051


        Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051. Hãng Intel ký hiệu nó như là MCS51. Bảng 1 trình bày các đặc tính của 8051.

1.3 Các thành viên khác của họ 8051

            Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.

a- Bộ vi điều khiển 8052

            Bộ vi điều khiển 8052 là một thành viên khác của họ 8051, 8052 có tất cả các đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời nữa. Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời. Nó cũng có 8K byte ROM. Trên chíp thay vì 4K byte như 8051.

Đặc tính
8051
8052
8031
ROM trên chíp
4K byte
8K byte
OK
RAM
128 byte
256 byte
128 byte
Bộ định thời
2
3
2
Chân vào ra
32
32
32
Cổng nối tiếp
1
1
1
Nguồn ngắt
6
8
6
Bảng 2: so sánh các đặc tính của các thành viên  họ 8051.

Như nhìn thấy từ bảng 2 thì 8051 là tập con của 8052. Do vậy tất cả mọi chương trình viết cho 8051 đều chạy trên 8052 nhưng điều ngược lại là không đúng.

b- Bộ vi điều khiển 8031

            Một thành viên khác nữa của 8051 là chíp 8031. Chíp này thường được coi như là 8051 không có ROM trên chíp vì nó có OK byte ROM trên chíp. Để sử dụng chíp này ta phải bổ xung ROM ngoài cho nó. ROM ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. So với 8051 mà chương trình được chứa trong ROM trên chíp bị giới hạn bởi  4K byte, còn ROM ngoài chứa chương trinh được gắn vào 8031 thì có thể lớn đến 64K byte. Khi bổ xung cổng, như vậy chỉ còn lại 2 cổng để thao tác. Để giải quyết vấn đề này ta có thể bổ xung cổng vào - ra cho 8031. Phối phép 8031 với bộ nhớ và cổng vào - ra chẳng hạn với chíp 8255 được trình bày ở chương 14. Ngoài ra còn có các phiên bản khác nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau.

1.4 Các bộ vi điều khiển 8051 từ các hãng khác nhau

            Mặc dù 8051 là thành viên phổi biến nhất của họ 8051 nhưng chúng ta sẽ  thấy nó trong kho linh kiện. Đó là do 8051 có dưới nhiều dạng kiểu bộ nhớ khác nhau như UV - PROM, Flash và NV - RAM mà chúng đều có số đăng ký linh kiện khác nhau. Việc bàn luận về các kiểu dạng bộ nhớ ROM khác nhau sẽ được trình bày ở chương 14. Phiên bản UV-PROM của 8051 là 8751. Phiên bản Flash ROM được bán bởi nhiều hãng khác nhau chẳng hạn của Atmel corp với tên gọi là AT89C51 còn phiên bản NV-RAM của 8051 do Dalas Semi Conductor cung cấp thì được gọi là DS5000. Ngoài ra còn có phiên bản OTP (khả trình một lần) của 8051 được sản xuất bởi rất nhiều hãng.

a- Bộ vi điều khiển  8751

            Chíp 8751 chỉ có 4K byte bộ nhớ UV-EPROM trên chíp. Để sử dụng chíp  này để phát triển yêu cầu truy cập đến một bộ đốt PROM cũng như bộ xoá UV-  EPROM để xoá nội dung của bộ nhớ UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó. Do một thực tế là ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xoá 8751 trước khi nó có thể được lập trình trở lại. Điều này đã dẫn đến nhiều nhà sản xuất giới thiệu các phiên bản Flash Rom và UV-RAM  của 8051. Ngoài ra còn có nhiều phiên bản với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau.

b- Bộ vi điều khiển AT8951 từ Atmel Corporation

            Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash. Điều này là lý tưởng đối với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài giây trong tương quan so với 20 phút hoặc hơn mà 8751 yêu cầu. Vì lý do này mà AT89C51 để phát triển một hệ thống dựa trên bộ vi điều khiển yêu cầu một bộ đốt ROM mà có hỗ trợ bộ nhớ Flash. Tuy nhiên lại không yêu cầu bộ xoá ROM. Lưu ý rằng trong bộ nhớ Flash ta phải xoá toàn bộ nội dung của ROM nhằm để lập trình lại cho nó. Việc xoá bộ nhớ Flash được thực hiện bởi chính bộ đốt PROM và đây chính là lý do tại sao lại không cần đến bộ xoá. Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiên cứu một phiên bản của AT 89C51 có thể được lập trình qua cổng truyền thông COM của máy tính IBM  PC .

Số linh kiện
ROM
RAM
Chân I/O
Timer
Ngắt
Vcc
Đóng vỏ
AT89C51
4K
128
32
2
6
5V
40
AT89LV51
4K
128
32
2
6
3V
40
AT89C1051
1K
64
15
1
3
3V
20
AT89C2051
2K
128
15
2
6
3V
20
AT89C52
8K
128
32
3
8
5V
40
AT89LV52
8K
128
32
3
8
3V
40
Bảng 3: Các phiên bản của 8051 từ Atmel (Flash ROM).

Chữ C trong ký hiệu AT89C51 là CMOS.
            Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản phẩm trên đây. Xem bảng 1.6. Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT 89C51 -12PC là ký hiệu cho CMOS “12” ký hiệu cho 12 MHZ và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là ký hiệu cho thương mại (ngược với chữ “M” là quân sự ). Thông thường AT89C51 - 12PC rất lý tưởng cho các dự án của học sinh, sinh viên.

Mã linh kiện
Tốc độ
Số chân
Đóng vỏ
Mục đích
AT89C51-12PC

42MHZ
40
DTP
Thương mại
Bảng 4: Các phiên bản 8051 với tốc độ khác nhau của Atmel.

c- Bộ vi điều khiển DS5000 từ hãng Dallas Semiconductor

            Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng Dallas Semiconductor. Bộ nhớ ROM trên chíp của DS5000 ở dưới dạng NV-RAM. Khả năng đọc/ ghi của nó cho phép chương trình được nạp vào ROM trên chíp trong khi nó vẫn ở trong hệ thống (không cần phải lấy ra). Điều này còn có thể được thực hiện thông qua cổng nối tiếp của máy tính IBM PC. Việc nạp chương trình trong hệ thống (in-system) của DS5000 thông qua cổng nối tiếp của PC làm cho nó trở thành một hệ thống phát triển tại chỗ lý tưởng. Một ưu việt của NV-RAM là khả năng thay đổi nội dung của ROM theo từng byte tại một thời điểm. Điều này tương phản với bộ nhớ Flash và EPROM mà bộ nhớ của chúng phải được xoá sạch trước khi lập trình lại cho chúng.

Mã linh kiện
ROM
RAM
Chân I/O
Timer
Ngắt
Vcc
Đóng vỏ
DS5000-8
DS5000-32
DS5000T-8
DS5000T-8
8K
32K
8K
32K
128
128
128
128
32
32
32
32
2
2
2
2
6
6
6
6
5V
5V
5V
5V
40
40
40
40
Bảng 5: Các phiên bản 8051 từ hãng Dallas Semiconductor.

Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực.
            Lưu ý rằng đồng hồ thời gian thực RTC là khác với bộ định thời Timer. RTC tạo và giữ thời gian l phút giờ, ngày, tháng - năm  kể cả khi tắt nguồn.
            Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau.( Xem bảng 1.8). Ví dụ DS5000-8-8 có 8K NV-RAM và tốc đọ 8MHZ. Thông thường DS5000-8-12 hoặc DS5000T-8-12 là lý tưởng đối với các dự án của sinh viên.

Mã linh kiện

NV- RAM
Tốc độ
DS5000-8-8
DS5000-8-12
DS5000-32-8
DS5000T-32-12
DS5000-32-12
DS5000-8-12
8K
8K
32K
32K
32K
8K
8MHz
12MHz
8MHz
8MHz (with RTC)
12MHz
12MHz (with RTC)
Bảng 6:Các phiên bản của DS5000 với các  tốc độ khác nhau

d- Phiên bản OTP của 8051


            Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần và được cung cấp từ nhiều hãng sản xuất khác nhau. Các phiên bản Flash và NV-RAM thường được dùng để phát triển sản phẩm mẫu. Khi một sản pohẩm được thiết kế và được hoàn thiện tuyệt đối thì phiên bản OTP của 8051 được dùng để sản hàng loạt vì nó rẻ hơn rất nhiều theo giá thành một đơn vị sản phẩm.

e- Họ 8051 từ Hãng Philips


            Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation. Thật vậy, hãng này có một dải lựa chọn rộng lớn cho các bộ vi điều khiển họ 8051. Nhiều sản phẩm của hãng đã có kèm theo các đặc tính như các bộ chuyển đổi ADC, DAC,  cổng I/0 mở rộng và cả các phiên bản OTP và Flash. 


II - Giới thiệu Kiến trúc Vi điều khiển 8051



2.1 Tổ chức bộ nhớ



            Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương trình và dữ liệu, hình 1hình 2 sẽ mô tả điều này. Kiến trúc vi xử lý 8 bit của 8051 này cho phép truy nhập và tính toán nhanh hơn đối với không gian dữ liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình và dữ liệu như trên. Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địa chỉ vẫn có thể thực hiện nhờ thanh ghi con trỏ. 

    Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng tối đa 64Kbyte. Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trong chip có kích thước nhỏ nhất là 4kByte. Với các vi điều khiển không tích hợp sẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bên ngoài. Ví dụ sử dụng EPROM: 2764 (64Kbyte), khi đó chân PSEN phải ở mức tích cực (5V).


Hình 1: Cấu trúc vi điều khiển 89C51