1 .Tổng quan
5. Các thanh ghi chức năng đặc biệt
Các thanh ghi nội của 8051 được cấu hình thành một phần của RAM trên chip, do vậy mỗi thanh ghi cũng có một địa chỉ. Cũng như các thanh ghi từ R0 – 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 – FFH. Lưu ý không phải tất cả 128 địa chỉ từ 80H – FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa.
5.1. Từ trạng thái chương trình PSW (program status word)
Thanh ghi PSW có địa chỉ là D0H chứa các bit trạng thái có chức năng được tóm tắt trong bảng sau:
BIT KÝ HIỆU ĐỊA CHỈ MÔ TẢ PSW.7 C hoặc CY D7H Cary Flag: Cờ nhớ
PSW.6 AC D6H Auxiliary Cary Flag: Cờ nhớ phụ PSW.5 F0 D5H Flag 0 còn gọi là cờ Zero kí hiệu là Z
PSW4 RS1 D4H Register Bank Select 1: bit lựa chọn bank thanh ghi. PSW.3 RS0 D3H Register Bank Select 0: bit lựa chọn bank thanh ghi.
00 = Bank 0; ô nhớ có address 00H÷07H gán cho R0-R7 01 = Bank 1; ô nhớ có address 08H÷0FH gán cho R0-R7 10 = Bank 2; ô nhớ có address 10H÷17H gán cho R0-R7 11 = Bank 3; ô nhớ có address 18H÷1FH gán cho R0-R7 PSW.2 OV D2H Overflow Flag: cờ tràn số nhị phân có dấu.
PSW.1 - D1H Reserved: chưa thiết kế nên chưa sử dụng được. PSW.0 P D0H Even Parity Flag: cờ chẵn lẻ.
Bảng 2.3. Chức năng các bit trạng thái của thanh ghi PSW có địa chỉ là D0H
5.2. Thanh ghi 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 (MUL), chia (DIV).Các bit của thanh ghi B được định địa chỉ từ F0H-F7H.
5.3. Con trỏ Stack
Con trỏ Stack SP ( stack pointer ) là một 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 Stack bao gồm lệnh cất dữ liệu vào Stack ( PUSH ) và lệnh lấy dữ liệu ra khỏi Stack (POP). Việc cất dữ liệu vào Satck làm tăng thanh ghi SP trước khi ghi dữ liệu và việc lấy dữ liệu ra Stack sẽ làm giảm thanh ghi SP.Nếu ta không khởi động SP, nội dung mặc định của thanh ghi này là 07H.
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 được bởi kiểu định địa chỉ gián tiếp. Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi nội dung của bộ đếm chương trình PC (Program counter).
5.4. Con trỏ dữ liệu DPTR
Con trỏ dữ liệu DPTR ( data pointer ) được dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là thanh ghi 16 bit có địa chỉ là 82H ( DPL, byte thấp ) và 83H ( DPH, byte cao ).
Ví dụ: MOV A,#55H
MOV DPTR,#1000H MOV @DPTR,A
5.5. Các thanh ghi Port nối tiếp
Các port xuất nhập của 8051 bao gồm port 0 tại địa chỉ 80H, port 1 tại địa chỉ 90H, port 2 tại địa chỉ A0H và port 3 tại địa chỉ 0BH. Các port 0,2 và 3 không được dùng để xuất/nhập nếu ta sử dụng thêm bộ nhớ ngoài hoặc nếu có một số đặc tính của 8051 được sử dụng ( như là ngắt, port nối tiếp ).Tất cả các port đều được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
5.6. Các thanh ghi định thời
8051 có hai bộ đếm định thời (timer/counter) 16 bit để định các khoảng thời gian hoặc để đếm các sự kiện.Bộ định thời 0 có địa chỉ 8AH(TL0,byte thấp) và 8CH (TH0,byte cao), bộ định thời 1 có địa chỉ 8BH (TL1,byte thấp) và 8DH (TH1,byte cao). Họat động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời TMOD ( timer mode register ) ở địa chỉ 89H và thanh ghi điều khiển định thời TCON (timer control regsiter) ở địa chỉ 88H.
5.7. Các thanh ghi port nối tiếp (Serial Data Buffer)
Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị nối tiếp như các thiết bị đầu cuối hoặc moderm, hoặc để giao tiếp với các IC khác. Một thanh ghi đựơc gọi là bộ đệm dữ liệu nối tiếp SBUF (serial data buffer) ở địa chỉ 99H lưu trữ 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. Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu sẽ được chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc. Khi thực hiện việc chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu của truyền thông nối tiếp.
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 (serial port control register) ở địa chỉ 98H. Chỉ có TCON được định địa chỉ từng bit.
5.8. Các thanh ghi ngắt
8051 có một cấu trúc ngắt với hai mức ưu tiên và năm nguyên nhân ngắt. Các ngắt bị vơ hiệu hóa sau khi reset hệ thống và sau đó được cho phép ngắt bằng cách ghi vào thanh ghi cho phép ngắt IE (interrupt enable register) ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP (interrupt priority register) ở địa chỉ B8H.Cả hai thanh ghi này đều được định địa chỉ từng bit.