đồ án tốt nghiệp lập trình vi điều khiển bằng ngôn ngữ c
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN TỐT NGHIỆP
LẬP TRÌNH VĐK 8051 BẰNG NGÔN NGỮ C
Giáo viên hướng dẫn : Lê Thanh Xuyến
Sinh viên thực hiện : Đỗ Quốc Phương Lớp : CĐ 21.5 – K56
Hà Nội 17/05/2014
Trang 2ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG
8051
BẰNG NGÔN NGỮ C.
Giảng viên hướng dẫn : TH.S LÊ THANH XUYẾN
Sinh viên thực hiện: ĐỖ QUỐC PHƯƠNG
Lớp : CĐ 21.5 Khoá : K56 (2011-2014)
Hệ : CAO ĐẲNG
Hà Nội, tháng 06 /2014
Trang 3ĐẠI HỌC BÁCH KHOA HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do – Hạnh phúc
KHOA ĐIỆN TỬ VIỄN THÔNG
ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG
Họ và tên sinh viên: ĐỖ QUỐC PHƯƠNG
Ngành đào tạo: Điện Tử - Viễn Thông Hệ đào tạo: Cao Đẳng
1/ Tên đồ án tốt nghiệp:
LẬP TRÌNH VI ĐIỀU KHIỂN 8051 BẰNG NGÔN NGỮ C
2/ Nội dung chính của đồ án:
1/……… ……… ……….………
2/……… … ……….………
3/……… ……….………
4/……… ……….………
……… … ……….………
……… … ……….………
3/ Cơ sở dữ liệu ban đầu ……… ……… ……….………
……… ……….………
……… ……….………
……… ……….………
4/ Ngày giao đồ án: /11/2008 5/ Ngày nộp đồ án : /02/2009 TRƯỞNG BỘ MÔN (Duyệt) GIÁO VIÊN HƯỚNG DẪN (Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)
TRƯỞNG KHOA
Trang 4MỞ ĐẦU
(Bold, size 14, xếp sau trang nhiệm vụ- đề tài)
Trong những năm gần đây trên thế giới cùng với sự phát triển mạnh mẽ của ngành công nghiệp chế tạo linh kiện bán dẫn và vi mạch tổng hợp, một hướng phát triển mới của các vi xử lý đã hình thành đó là các vi điều khiển Với nhiều ưu điểm, vi điều khiển đã được sử dụng rộng rãi trên nhiều lĩnh vực khác nhau Bằng cách áp dụng vi đều khiển trong quá trình sản xuất và xử lý, vi điều khiển đã thực sự thể hiện được ưu thế của mình so với các thiết bị điều khiển thông thường.Vì những lý do trên, trong nhiều trường Đại Học, Cao Đẳng, vi xử lý thực sự trở thành một môn học hết sức quan trọng, vi xử lý 8051 gần như là một môn học sử dụng để trang bị cho chúng ta những kiến thức cơ bản về vi xử lý, từ đó mở rộng ra các loại vi xử lý khác
có cấu trúc phức tạp hơn như AVR, PIC, Qua Bài tập này, đã giúp chúng em có được hình dung thực tế vi xử lý được áp dụng như thế nào trong cuộc sống hiện đại, cụ thể chính là hệ thống đèn giao thông dùng vi điều khiển AT89C51
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.
Trang 5LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những
sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người
khác Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học
đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô,
gia đình và bạn bè
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa
Điện Tử Viễn Thông – Trường Đại Học Bách Khoa Hà Nội với
tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho
chúng em trong suốt thời gian học tập tại trường Và đặc biệt, trong học kỳ
này, Khoa đã tổ chức cho chúng em được tiếp cận với môn học mà theo em
là rất hữu ích đối với sinh viên ngành Điện Tử - Viễn Thông cũng như tất cả
các sinh viên thuộc các chuyên ngành Khoa Học Kĩ Thuật khác Đó là môn
học “Lập Trình Vi Điều Khiển”
Em xin chân thành cảm ơn TH.S LÊ THANH XUYẾN đã tận tâm
hướng dẫn chúng em qua từng buổi học trên lớp cũng như những buổi nói
chuyện, thảo luận về lĩnh vực lập trình vi điều khiển Nếu không có những lời
hướng dẫn, dạy bảo của cô thì em nghĩ bài thu hoạch
này của em rất khó có thể hoàn thiện được Một lần nữa, em xin chân thành
cảm ơn cô
Bài thu hoạch được thực hiện trong khoảng thời gian gần 3 tuần Bước
đầu đi vào thực tế, tìm hiểu về lĩnh vực lập trình cho vi điều khiển ,do kiến thức của em còn hạn chế và còn nhiều bỡ ngỡ Do vậy, không
tránh khỏi những thiếu sót là điều chắc chắn, em rất mong nhận được
những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn học cùng lớp
để kiến thức của em trong lĩnh vực này được hoàn thiện hơn
Lời Cảm Tạ
GVHD : TH.S LÊ THANH XUYẾN
|
SVTH : ĐỖ QUỐC PHƯƠNG
Sau cùng, em xin kính chúc quý Thầy Cô trong Khoa ĐIỆN TỬ VIỄN THÔNG
và Thầy Hiệu Trưởng - GS TSKH Hoàng Văn Kiếm cùng tất cả thầy cô trong Trường Đại Học Bách Khoa Hà Nội thật dồi dào sức
khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt
kiến thức cho thế hệ mai sau
Trân trọng
HÀ NỘI, ngày 01 tháng 06 năm 2014
Sinh viên thực hiện
(ký và ghi họ tên)
Đỗ Quốc Phương
Trang 6NHẬN XÉT (Của giảng viên hướng dẫn)
… ……… ………
………
………
………
………
………
………
………
……… ………
………
………
………
………
………
………
………
………
………
………
………
Trang 7NHẬN XÉT (Của giảng viên phản biện)
……… ………
………
………
………
………
………
………
………
……… ………
………
………
………
………
………
………
………
………
………
………
………
Trang 9DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
BÁNG 1.1
BẢNG 1.2
……
……
……
SƠ ĐỒ 1.1 ……
……
……
HÌNH 1.1 ……
……
Ghi chú:
- Xếp sau trang Mục lục
- Chữ số thứ nhất chỉ tên chương
- Chữ số thứ hai chỉ thứ tự bảng biểu, sơ đồ, hình,…trong mỗi chương
- Ở cuối mỗi bảng biểu, sơ đồ, hình,…trong mỗi chương phải có ghi chú, giải thích, nêu
rõ nguồn trích hoặc sao chụp,…
Trang 11CHƯƠNG 1:
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 12I CHƯƠNG 1.
Giới thiệu về vi điều khiển 8051
Giới thiệu họ 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
Intel 8051 — là vi điều khiển đơn tinh thể (không nhầm với CPU) kiến trúc Harvard, lần đầu tiên được sản xuất bởi Intel năm 1980, để dùng trong các hệ thống nhúng Trong những năm 1980 và đầu những năm 1990 đã rất nổi tiếng Tuy nhiên hiện tại đã cũ và được thay thế bằng các thiết bị hiện đại hơn, với các lõi phối hợp 8051, được sản xuất bởi hơn 20 nhà sản xuất độc lập, như Atmel, Maxim IC (công ty con của Dallas Semiconductor), NXP Semiconductors (Philips
Semiconductor trước đây), Winbond, Silicon Laboratories, Texas Instruments và Cypress
Semiconductor Tên gọi chính thức của họ vi điều khiển Intel 8051 — MCS 51.
Những vi điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET, những những bản sau, chứa kí hiệu «C» trong tên, như 80C51, dùng công nghệ CMOS và yêu cầu công suất thấp, hơn những cái MOSFET trước (điều này cho phép trang bị cho các thiết bị với nguồn là pin)
Những đặc tính và ứng dụng quan trọng
Kiến trúc cơ bản bên trong 8051 bao gồm các đặt tính sau:
• Một ALU bit, một thanh tích lũy và một thanh ghi bit, do đó nó là một vi điều khiển bit
8-• bus dữ liệu 8-bit - có thể truy cập 8 bits dữ liệu trong một hoạt động
• bus địa chỉ 16-bit - có thể truy cập 216 vị trí nhớ 64kB (65536 vị trí)cho mỗi bộ nhớ RAM
và ROM
• RAM trên chip - 128 bytes (bộ nhớ dữ liệu)
• ROM trên chip - 4 kbytes (bộ nhớ chương trình)
• 32 chân I/O riêng biệt (4 nhóm mỗi nhóm 8 chân I/O) có thể được truy cập riêng rẽ
• Hai bộ định thời/đếm 16-bit
• Đơn vị thu/phát bất đồng bộ phổ biến UART hoàn toàn song công
• Sáu nguyên nhân ngắt với 2 mức ưu tiên
• Chế độ tiết kiệm năng lượng (trên 1 số phiên bản)
Lập trình
Đối với 8051 cho phép vài trình biên dịch từ ngôn ngữ lập trình C, phần lớn chúng hỗ trợ mở rộng
ngôn ngữ để dùng hiệu quả hơn các đặc tính của 8051 Ví dụ như, lập trình viên có thể cho biết,
trong kiểu nào từ 6 kiểu bộ nhớ 8051 cần giữ biến; có thể cho trình biên dịch biết, bằng cách nào dùng các khối đăng ký chuyển và các chỉ dẫn để манипулирования các bậc registr riêng biệt Để
lập trình 8051 có thể dùng các ngôn ngữ bậc cao khác: Forth, BASIC, Pascal, PL/M и Modula 2,
Trang 13nhưng chúng không phổ biến như C và Assembler.
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
3216
Trang 14Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
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à
Trang 15DS5000 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.
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ỏ
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
Trang 16của học sinh, sinh viên.
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
128128128128
32323232
2222
6666
5V5V5V5V
40404040Bả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
8MHz12MHz8MHz8MHz (with RTC)12MHz
Trang 17e- 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
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)
Trang 18Hình 1: Cấu trúc vi điều khiển 89C51
Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình Họ vi điều khiển 8051
có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể mở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte Với những vi điều khiển không tích hợp ROM trên chip thì vẫn có RAM trên chip là 128byte Khi sử dụng RAM ngoài, CPU đọc và ghi dữ liệu nhờ tín hiệu trên các chân
RD và WR Khi sử dụng cả bộ nhớ chương trình và bộ nhớ dữ liệu bên ngoài thì buộc phải kết hợp chân RD và PSEN bởi cổng logic AND để phân biệt tín hiệu truy xuất dữ liệu trên ROM hay RAM ngoài
Bộ nhớ chương trình:
Hình 2: Cấu trúc bộ nhớ chương trình
Trang 19Hình 3: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 2 mô tả cấu trúc bộ nhớ chương trình Sau khi khởi động, CPU bắt đầu thực hiện chương trình ở vị trí 0000H Hình 3 mô tả địa chỉ ngắt mặc định trên bộ nhớ chương trình Mối khi xảy ra ngắt, con trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại
đó Ví dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó Nếu trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương trình)
Bộ nhớ dữ liệu:
Hình 4: Cấu trúc bộ nhớ dữ liệu
Hình 4 mô tả cấu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài của họ vi điều khiển
8051 CPU sẽ dùng đến các chân RD và WR khi truy cập đến bộ nhớ dữ liệu ngoài
Hình 5 mô tả cấu trúc bộ nhớ dữ liệu trong chip, được chia thành 3 khối là 128 byte thấp,
128 byte cao và 128 byte đặc biệt
Trang 20Hình 5: Cấu trúc bộ nhớ trong
Hình 6 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển 8051 32 byte đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0-R7 Hai bit của thanh ghi đặc biệt PSW
sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽ dùng trong khi thực thi chương trình
Hình 6: Cấu trúc 128 byte thấp của bộ nhớ dữ liệu trong
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặc biệt Ngoài
ra 8051 còn có các port xuất/nhập có thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương tự Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực
Trang 21tiếp hoặc gián tiếp
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa
Hình 7: 128 byte cao của bộ nhớ dữ liệu2.2 Các thanh ghi đặc biệt
8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ
có 21 địa chỉ được định nghĩa Hình 8 mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến FFH và giá trị của chúng sau khi Reset
Trang 22Hình 8: Các thanh ghi đặc biệtThanh ghi chính:
Thanh ghi tính toán chính của vi điều khiển 8051 ACC (Accumulator) Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU, thường kí hiệu là A
Thanh ghi phụ:
Thanh ghi tính toán phụ của vi điều khiển 8051 là B Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân, chia Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A và B và chứa kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và thanh ghi B cất byte cao)
Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất trong thanh ghi B Thanh ghi B còn được xử lý như một thanh ghi nháp Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H
Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mô tả toàn bộ trạng thái
Trang 23chương trình đang hoạt động của hệ thống Bảng 7 và Bảng 8 sẽ mô tả thanh ghi này.
Bảng 7: Thanh ghi trạng thái chương trình PSW
PSW.7 CY D7H Cờ nhớ (Carry Flag): được Set nếu có Bit nhớ từ Bit 7 trong
phép cộng hoặc có Bit mượn cho Bit 7 trong phép trừ
Cờ nhớ phụ: được Set trong phép cộng nếu có Bit nhớ từ Bit
3 sang Bit 4 hoặc kết quả trong 4 Bit thấp nằm trong khoảng 0AH->0FH
PSW.0 P D0H Cờ kiểm tra chẵn lẻ: được Set hoặc Clear bởi phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra rằng có 1 số chẵn hoặc số lẻ Bit
1 trong thanh chứa
Bảng 8: Chi tiết các bit trong thanh ghi PSWThanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack Các lệnh liên quan đến satck bao gồm lệnh cất dữ liệu vào stack
và lệnh lấy dữ liệu ra khỏi stack Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy