Do họ MCS-51TM đã trở thành chuẩn cơng nghiệp nên cĩ rất nhiều hãng sản xuất ra nĩ, điển hình là ATMEL Corporation. Hãng này đã kết hợp rất nhiều tính năng dựa trên nền tảng kỹ thuật của mình để tạo ra các vi điều khiển tương thích với MCS-51TM nhưng mạnh mẽ hơn.
AT89C52 là một vi điều khiển 8 bit do ATMEL sản xuất, chế tạo theo cơng nghệ CMOS, cĩ chất lượng cao, cơng suất thấp với 8 KB Flash (flash programmable and erasable read only memory). Thiết bị này được chế tạo bằng cách sử dụng kỹ thuật bộ nhớ khơng bốc hơi mật độ cao của ATMEL và tương thích với chuẩn cơng nghiệp MCS-51TM về tập lệnh và các chân ra. Flash on-chip cho phép bộ nhớ lập trình được lập trình trong hệ thống bởi một lập trình viên bình thường. Bằng cách nối 1 CPU 8 bit với một Flash trên một chip đơn, AT89C51 là một vi điều khiển mạnh (cĩ cơng suất lớn), cung cấp một sự linh động cao và giải pháp về giá cả đối với nhiều ứng dụng vi điều khiển.
Các đặc điểm chủ yếu của AT89C51 :
• Tương thích hồn tồn với họ MCS-51TM của Intel. • Bộ nhớ chương trình 8K Byte thuộc loại Flash Memory. • Độ bền : 1000 lần ghi/xĩa.
• Tần số hoạt động : 0 Hz đến 24 MHz. • 3 chế độ khĩa bộ nhớ.
• 256 x 8-Bit RAM nội.
• 32 đường I/O lập trình được (4 port). • 3 timer/counter 16-bit.
• 8 nguồn ngắt.
1.1. Cấu tạo chân
Tùy theo khả năng (về kinh tế, kỹ thuật, …) mà các nhà sản xuất các sản phẩm ứng dụng cĩ thể chọn một trong 3 kiểu chân do ATMEL đưa ra.
1.3. Mơ tả chức năng của các chânVcc : áp nguồn. Vcc : áp nguồn.
GND : đất.
Port 0 : là một port I/O 8-bit hai chiều, cực máng hở. Khi xuất ra, mỗi chân port cĩ thể lái 8 đầu vào TTL. Nếu ghi các mức 1 ra các chân port thì các chân này cĩ thể dùng như các đầu vào trở kháng cao.
Port 0 cũng cĩ thể được cấu hình thành một bus multiplex giữa địa chỉ thấp và dữ liệu khi truy cập chương trình hay dữ liệu từ bên ngồi. Trong chế độ này, port 0 cĩ điện trở pullup nội.
Port 0 cũng nhận các byte mã chương trình khi lập trình Flash và xuất ra mã chương trình khi kiểm tra, khi đĩ cần cĩ điện trở pullup bên ngồi.
Port 1 : là một port I/O 8-bit hai chiều cĩ pullup nội. Đầu ra port 1 cĩ thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên do cĩ điện trở nội và cĩ thể dùng làm đầu vào. Khi vai trị là cổng nhập, những chân của port 1 bị kéo xuống thấp sẽ đổ dịng vì cĩ nội trở kéo lên.
Hơn nữa, P1.0 và P1.1 cĩ thể được dùng như là đầu vào bộ đếm timer/counter 2 bên ngồi (P1.0/T2) và xung kích (P1.1/T2EX).
Port 1 cũng nhận những byte địa chỉ thấp trong khi lập trình Flash và trong khi kiểm tra Flash .
Port 2 : là một port I/O 8-bit hai chiều cĩ pullup nội. Đầu ra port 2 cĩ thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên do cĩ điện trở nội và cĩ thể dùng làm đầu vào. Khi vai trị là cổng nhập, những chân của port 2 bị kéo xuống thấp sẽ đổ dịng vì cĩ nội trở kéo lên.
Port 2 phát byte địa chỉ cao trong khi nhận lệnh từ bộ nhớ chương trình ngồi và trong lúc truy xuất đến bộ nhớ dữ liệu ngồi mà cĩ sử dụng địa chỉ 16 bit (MOVX A, @DPTR). Trong ứng dụng này nĩ dùng điện trở nội kéo lên mạnh khi xuất 1. Khi truy xuất bộ nhớ dữ liệu ngồi dùng địa chỉ 8 bit, port 2 sẽ phát nội dung của thanh ghi P2
Port 2 cũng nhận byte địa chỉ cao trong lúc lập trình Flash và trong lúc kiểm tra Flash.
Port 3 : là một port I/O 8-bit hai chiều cĩ pullup nội. Đầu ra port 3 cĩ thể lái 4 đầu vào TTL. Khi viết các mức 1 ra các chân port thì chúng được kéo lên do cĩ điện trở nội và cĩ thể dùng làm đầu vào. Khi vai trị là cổng nhập, những chân của port 3 bị kéo xuống thấp sẽ đổ dịng vì cĩ nội trở kéo lên.
Port 3 cũng cĩ những chức năng của họ MSC-51 được liệt kê ở bảng sau:
BIT TÊN ĐỊA CHỈ BIT CHỨC NĂNG THAY THẾ
P3.0 RXD B0H Nhận dừ liệu cho port nối tiếp
P3.1 TXD B1H Truyền dừ liệu cho port nối tiếp
P3.2 INT0 B2H Ngắt ngồi 0
P3.3 INT1 B3H Ngắt ngồi 1
P3.4 T0 B4H Ngõ vào từ bên ngồi cho timer/counter 0
P3.5 T1 B5H Ngõ vào từ bên ngồi cho timer/counter 1
P3.6 WR B6H Xung ghi bộ nhớ dữ liệu ngồi
P3.7 RD B7H Xung đọc bộ nhớ dữ liệu ngồi
Port 3 cũng nhận vài tín hiệu điều khiển trong lúc lập trình Flash và trong lúc kiểm tra Flash.
RST : là ngõ vào Reset. Khi ngõ này được đưa lên cao (trong ít nhất hai chu kì máy), các thanh ghi bên trong AT89C51 được tải những giá trị thích hợp để khởi động hệ thống.
ALE/PROG (Address Latch Enable) :ALE là xung xuất cho phép chốt byte địa chỉ thấp khi truy cập bộ nhớ ngồi. Chân này cịn là ngõ vào của xung lập trình (PROG) khi lập trình Flash.
Trong hoạt động bình thường, ALE được phát xung với tần số 1/6 tần số dao động on-chip và cĩ thể được dùng như xung thời gian chuẩn bên ngồi. Tuy nhiên, cần chú ý là một xung ALE sẽ bị mất khi truy cập bộ nhớ ngồi.
Cĩ thể hủy bỏ chức năng của ALE bằng cách set bit 0 của thanh ghi ở vị trí 8EH. Một khi bit này được set, ALE chỉ tích cực khi cĩ lệnh MOVX hoặc MOVC. Nếu khơng cĩ các lệnh này thì ALE ở mức cao. Việc set bit 0 của thanh ghi ở vị trí 8EH khơng làm ảnh hưởng đến vi điều khiển khi truy cập bộ nhớ ngồi.
PSEN (Program Store Enable) : PSEN là xung strobe báo hiệu việc đọc bộ nhớ chương trình ngồi, PSEN tích cực hai lần (mức thấp) mỗi chu kì máy, ngoại trừ hai xung PSEN bị mất khi truy xuất dữ liệu ngồi. Khi thi hành chương trình trong RAM nội, PSEN sẽ ở mức thụ động (mức cao).
EA/VPP (External Access) : EA là ngõ vào để cho phép truy xuất bộ nhớ chương trình từ bên ngồi khi được nối với GND. Khi EA được treo lên nguồn VCC, chương trình sẽ được thực thi trong ROM nội. Chân này cũng nhận điện áp 12v (VPP) trong khi lập trình Flash.
XTAL1 : Đầu vào của bộ khuếch đại dao động đảo và cũng là đầu vào đến mạch tạo xung clock nội.