điều khiển hệ thống vừa và nhỏ với giá thành tơng đối rẻ, ta nên chọn phiên
bản này. Sau đây là những khái quát chung về vi điều khiển AT89C52.
2.3. Vi điều khiển AT89C52
Do họ MCS- 51
TM
đã trở thành chuẩn công nghiệp nên có rất nhiềt 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-51
TM
nhng 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 tiêu thụ thấp với 8Kbyte bộ
nhớ Flash có khả năng xoá và lập trình lại . Chíp đợc sản xuất theo kỹ thuật
nhớ không mất nội dung mật độ cao của ATMEL và tơng thích với chuẩn
công nghiệp MCS-51
TM
về tập lệnh và các chân vào ra. Flash on-chip cho phép
bộ nhớ lập trình đợc trong hệ thống bởi một trình viên bình thờng. Bằng
cách nối 1 CPU 8 bit với 1 Flash trên chip đơn, AT89C52 là một vi điều khiển
mạnh, có tính mềm dẻo cao, giá rẻ, phù hợp ứng dụng vi điều khiển.
Các đặc điểm chủ yếu của AT89C52:
* Tơng thích hoàn toàn với họ MCS-51
TM
của Intel.
* Bộ nhớ chơng trình 8Kbytes bên trong có khả năng lập trình lại.
* Độ bền 1000lần ghi/xoá.
* Tần số hoạt động : 0Hz đến 24MHz.
* 3 chế độ khoá bộ nhớ.
Hình 2.4 - Cấu tạo chân của AT89C52.
* VCC: cung cấp điện áp nguồn 5V cho chip.
* GND: là chân đất.
* XTAL1 và XTAL2: 8051 có một bộ dao động trên chíp nhng vẫn cần một
có bộ đồng hồ bên ngoài để kích hoạt.
Bộ dao động thạch anh ngoài thờng đợc nối tới các chân vào XTAL1
và XTAL2. Khi mắc vào dao động thạch anh cần có 2 tụ điện 33pF, một đầu
mỗi tụ này nối tới các chân vào XTAL1 và XTAL2, còn đầu kia nối đất nh
hình 2.5: C4 33
XTAL2
XTAL1
Y1
11.0592M
C5 33
GND
Hình 2.5 - Sơ đồ bộ dao động ngoài sử dụng bộ dao động
thạch anh.
* RST: chân khởi động lại (RESET) .
Bình thờng chân này ở mức thấp, khi có xung cao đặt tới chân này thì bộ
vi điều khiển sẽ kết thúc mọi hoạt động hiện tại và tiến hành khởi động lại.
Quá trình xảy ra hoàn toàn tơng tự khi bật nguồn. Khi RESET mọi giá trị
trên thanh ghi sẽ bị xoá.
Khi RESET giá trị bộ đếm chơng trình PC bằng 0 và nh vậy CPU nhận
tích cực (logíc 1)
* ALE /
PROG
: cho phép chốt địa chỉ (Address Latch Enable) , là chân ra có
mức tích cực cao. Khi port 0 đợc sử dụng làm bus địa chỉ/ dữ liệu đa hợp,
chân ALE xuất tín hiệu để chốt địa chỉ vào một thanh ghi ngoài trong suốt nửa
đầu chu kỳ của bộ nhớ. Sau khi điều này đã đợc thực hiện, các chân của port
0 sẽ xuất/ nhập dữ liệu hợp lệ trong suốt nửa sau chu kỳ của bộ nhớ.
* Nhóm chân cổng vào/ra.
Bốn cổng P0, P1, P2, P3 đều có 8 chân và tạo thành cổng 8 bit. Tất cả các
cổng khi reset đều đợc cấu hình làm cổng ra. Để làm đầu vào thì cần đợc
lập trình.
Cổng P0:
Cổng P0 có 8 chân. Bình thờng đây là cổng ra. Để có thể vừa làm cổng
ra vừa làm cổng vào thì cần nối tới điện trở kéo 10K bên ngoài vì cổng P0 có
dạng cực máng hở. Đây là điểm khác với các cổng P1, P2, P3. Khi có điện trở
kéo ngoài thì khi khởi động lại, cổng P0 đợc cấu hình làm cổng ra để P0 tạo
thành cổng vào thì cần phải lập trình bằng cách ghi 1 tới tất cả các bit của
cổng. P0 ngoài chức năng chuyển địa chỉ còn đợc dùng để chuyển 8 bit địa
chỉ AD0 -AD7. Khi nối 8051 tới bộ nhớ ngoài, thì cổng P0 cung cấp cả địa chỉ
và dữ liệu bằng cách dồn kênh để tiết kiệm số chân. Chân ALE sẽ báo P0 có
địa chỉ hay dữ liệu. Nếu ALE = 0 thì P0 cấp dữ liệu D0 - D7, còn nếu ALE = 1
thì là địa chỉ
Cổng P1
Cổng P1 cũng có 8 chân và có thể sử dụng làm đầu vào hoặc ra, cổng P0
không có điện trở kéo vì nó đã có các điện trở kéo bên trong. Khi Reset, cổng
P1 đợc cấu hình làm cổng ra. Để chuyển cổng P1 thành đầu vào thì cần lập
trình bằng cách ghi 1 lên tất cả các bit của cổng
Hơn nữa, P1.0 và P1.1 có thể đợc dùng nh là đầu vào bộ đếm
B4H Ngõ ngoài từ bên ngoài cho timer / couter 0
P3.5
1T
B5H Ngõ ngoài từ bên ngoài cho timer / couter 1
P3.6
WR
B6H Xung ghi bộ nhớ dữ liệu ngoài
P3.7
RD
B7H Xung đọc bộ nhớ dữ liệu ngoài
Bit 3.4 và P3.5 đợc dùng cho bộ định thời 0 và 1.
Bit P3.6 và P3.7 đợc dùng để ghi và đọc các bộ nhớ ngoài.
2.3.3. Tổ chức bộ nhớ.
Họ 8051 có bộ nhớ riêng cho chơng trình và dữ liệu. Cả 2 bộ nhớ chơng
trình và bộ nhớ dữ liệu đều đặt bên trong chip, tuy nhiên ta có thể mở rộng bộ
nhớ chơng trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên ngoài
bằng với dung lợng tối đa là 64K cho bộ nhớ chơng trình (hay bộ nhớ mã)
và 64K cho bộ nhớ dữ liệu.
Bộ nhớ nội trong chip bao gồm ROM và RAM trên chip. RAM trên chip
bao gồm vùng RAM đa chức năng (nhiều công dụng), vùng RAM với từng bit
đợc định địa chỉ (gọi tắt là vùng RAM định địa chỉ bit), các dãy (bank) thanh
ghi và các thanh ghi chức năng đặc biệt SFR (special function register ).
Không gian nhớ nội này đợc chia thành các dãy thanh ghi (00h-1Fh),
vùng RAM định địa chỉ bit (20h-2Fh),vùng RAM đa mục đích (30h-7Fh) và
các thanh ghi chức năng đặc biệt (80h-FFh). Sau đây ta sẽ nghiên cứu cụ thể
từng vùng.
* Các dãy thanh ghi
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi và đợc chia
thành 4 bank.
PSW.3 RS0 D3h Chọn dãy thanh ghi (bit 0 )
PSW.2 OV D2h Cờ tràn
PSW.1 D1h Dự trữ
PSW.0 P D0h Cờ kiểm tra chẵn lẻ
Để chọn dãy thanh ghi thì căn cứ vào 2 bit PSW.4 và PSW.3
00 = bank 0 Địa chỉ từ 00h-07h
01 = bank 1 Địa chỉ từ 08h-0Fh
10 = bank 2 Địa chỉ từ 10h-17h
11 = bank 3 Địa chỉ từ 18h-1Fh
Thanh ghi A
Thanh ghi tích luỹ A
cc
trong lập trình ta gọi tắt là thanh ghi A. Đây là thanh
ghi quan trọng nhất trong bộ vi điều khiển, nó dùng lu trữ các toán hạng,
thực hiện các phép toán đồng thời lu kết quả các phép toán. Thanh ghi này có
địa chỉ 0E0h.
Thanh ghi B.
Thanh ghi B ở địa chỉ 0F0h đợc dùng chung với thanh chứa A trong các
phép toán nhân, chia. Thanh ghi B còn đợc xử lý nh 1 thanh ghi nháp. Các
bit đợc định địa chỉ của thanh ghi B có địa chỉ từ F0h - F7h
Thanh ghi con trỏ stack.
Con trỏ Stack SP (Stack pointer ) là một thanh ghi 8 bit ở địa chỉ 81h
chứa địa chỉ của dữ liệu hiện đang ở đỉnh của Stack. Các lệnh liên quan đến
Stack 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 dữ liệu ra khỏi
Stack sẽ giảm SP. Vùng Stack của 8051 đợc giữ trong Ram nội và đợc giới
hạn đến các địa chỉ truy xuất bởi kiểu định địa chỉ gián tiếp. Nếu ta bắt đầu
vùng Stack ở địa chỉ 60h bằng lệnh MOV SP #5Fh vùng Stack đợc giới hạn
32byte vì địa chỉ cao nhất của RAM trên chip là 7Fh.
có mạch giao tiếp nối tiếp. Một thanh ghi đợc gọi là bộ đệm dữ liệu nối tiếp
SBUF ở địa chỉ 99h lu dữ liệu truyền đi và dữ liệu nhận về. Việc ghi lên
SBUF sẽ nạp dữ liệu để truyền và việc đọc SBUF sẽ lấy dữ liệu đã nhận đợc.
Các chế độ hoạt động khác nhau đợc lập trình thông qua thanh ghi điều
khiển port nối tiếp SCON .
Các thanh ghi ngắt.
Ngắt là sự đáp ứng các sự kiện bên trong hoặc bên ngoài nhằm thông báo
cho bộ vi điều khiển biết thiết bị đang cần đợc phục vụ.
AT89C52 có một cấu trúc ngắt với 2 mức u tiên và 8 nguyên nhân ngắt.
Ngắt bị và vô hiệu hoá khi reset hệ thống và sau đó đợc cho phép ghi vào
thanh ghi cho phép ngắt IE. Mức u tiên ngắt đợc thiết lập qua thanh ghi u
tiên ngắt IP. Cả 2 thanh ghi này đều đ
ợc định địa chỉ từng bit. Hoạt động của
các ngắt sẽ đợc giới thiệu cụ thể trong phần sau.