CHƯƠNG 2: TÓM TẮT PHẦN CỨNG (PHẦN 2)

0
1614

Hầu hết các bộ vi xử lý ( CPU ) đều có không gian nhớ chung cho dữ liệu và chương trình. Điều này cũng hợp lý vì các chương trình thường được lưu trên đĩa và được nạp vào RAM để thực thi; vậy thì cả hai, dữ liệu và chương trình, đều lưu trú trong RAM.

Các chip vi điều khiển hiếm khi được sử dụng giống như các CPU trong các hệ máy tính, thay vào đó chúng được dùng làm thành phần trung tâm trong các thiết kế hướng điều khiển, trong đó bộ nhớ có dung lượng giới hạn, không có ổ đĩa và hệ điều hành. Chương trình điều khiển phải thường trú trong ROM.

Do lý do trên, 8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu. Như ta đã thấy trong bảng 2.1 ở mục 2.1, cả 2 bộ nhớ chương trình và dữ liệu đều đặt bên trong chíp, 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 với dung lượng tối đa là 64 K cho bộ nhớ chương trình ( hay bộ nhớ mã ) và 64 K cho bộ nhớ dữ liệu.

Bộ nhớ nội trong chíp bao gồm ROM ( chỉ có ở 8051/8052 ) và RAM. 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 chi bit ), các dãy ( bank ) thanh ghi và các thanh ghi chức năng đặc biệt SFR ( special function register ). Hai đặc tính đáng lưu ý là :

(a) các thanh ghi và các port xuất /nhập được định địa chỉ theo kiểu ánh xạ bộ nhớ (memory mapped) và được truy xuất như một vị trí nhớ trong bộ nhớ

(b) vùng stack thường trú trong RAM trên chip (RAM nội) thay vì ở trong RAM ngoài như đối với các bộ vi xữ lý

Hình 2.5 tóm tắt các không gian nhớ cho chip 8031 không có ROM nội, không trình bày chi tiết về bộ nhớ dữ liệu trên chip ( các cải tiến của 8032/8052 sẽ được tóm tắt. sau ).

Hình 2.6 cho ta chi tiết của bộ nhớ dữ liệu trên chíp. Ta thấy rằng 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 chi 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 ).

 

Hình 2.5: Tóm tắt không gian bộ nhớ của chíp 8031

On chip memory : bộ nhớ trên chip

External memory: bộ nhớ ngoài

Code memory : bộ nhớ chương trình (mã)

Enabled via PSEN/: được cho phép bởi PSEN/

Data memory : bộ nhớ dữ liệu

Enabled via RD/ and WR/: được cho phép bởi RD/ và WR/

2.4.1     Vùng RAM đa mục đích

Mặc dù hình 2.6 trình bày 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ự ( mặc dù các vị trí nhớ này có các mục đích khác như sẽ thảo luận dưới đây ). 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. Thí dụ để đọc nội dung tại địa chỉ 5FH của RAM nội vào thanh chứa A, ta dùng lệnh sau :

MOV A, 5FH

Lệnh trên di chuyển 1 byte dữ liệu bằng cách dùng kiểu định địa chỉ trực tiếp để xác định vị trí nguồn ( nghĩa là địa chỉ 5FH ). Đích của dữ liệu được xác định rõ ràng trong opcode của lệnh là thanh chứa A ( các kiểu định địa chỉ sẽ được đề cập trong chương 3 ).

Byte address, bit address : địa chỉ byte, địa chỉ bit

General purpose RAM : vùng RAM đa mục đích

Bank : dãy

Default register bank for R0 – R7 : dãy thanh ghi mặc định R0 – R7

Special function registers : các thanh ghi chức năng đặc biệt

Not bit addressable : không định địa chỉ bit

 

Vùng RAM đa mục đích còn có thể được truy xuất bằng cách dùng kiểu định địa chỉ gián tiếp qua các thanh ghi R0, R1 Thí dụ hai lệnh sau thực hiện cùng công việc như lệnh ở thí dụ trên :

 

MOV RO, #5FH

MOV A, @RO

 

Lệnh đầu tiên sử dụng kiểu định địa chỉ tức thời di chuyển giá trị 5FH vào thanh ghi R0, lệnh tiếp theo sử dụng kiểu định địa chỉ gián tiếp đi chuyển dữ liệu trỏ bởi R0 vào thanh chứa A.

 

2.4.1      Vùng RAM định địa chỉ bit

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 chức năng đặc biệt.

Ý tưởng truy xuất các bit riêng rẽ thông qua phần mềm là một đặc trưng mạnh của hầu hết các bộ vi điều khiển. Các bit có thể được set, xóa, AND, OR, v.v… bằng một lệnh. Hầu hết các bộ vi xử lý yêu cầu một chuổi lệnh đọc-sửa-ghi để nhận được cùng một kết quả. 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.

Như vừa đề cập ở trên, 8051 có 128 vị trí bit được định địa chỉ và có nhiều mục đích ở các byte có địa chỉ từ 20H đến 2FH. Các địa chỉ này được truy xuất như là các byte hay các bit tùy vào lệnh cụ thể. Thí dụ để set bit 67H bằng 1 ta dùng lệnh sau :

SETB 67H

Tham chiếu hình 2.6 ta thấy bit ở địa chỉ 67H là bit có ý nghĩa lớn nhất của byte ở địa chi 2CH. Lệnh vừa nêu trên không ảnh hưởng đến các bit khác trong byte này. Hầu hết các bộ vi xử lý muốn thực hiện Lệnh như trên phải dùng các lệnh có dạng tương tự như sau:

MOV A, 2CH                 ; đọc cả byte

ORL A, #10000000B ; set bit cd ý nghĩa lớn nhất

MOV 2CH, A                 ; ghi trở lại cả byte

2.4.3      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. Các lệnh của 8051 hỗ trợ 8 thanh ghi từ R0 đên R7 thuộc dãy 0 ( bank 0 ). Đấy là dãy mặc định sau khi reset hệ thống. Các thanh ghi này ở các địa chi từ 00H đến 07H. Lệnh sau đây đọc nội dung tại địa chí 05H vào thanh chứa:

MOV A, R5

Lệnh này là lệnh 1-byte dùng kiếu định địa chỉ thanh ghi. Dĩ nhiên thao tác tương tự có thế được thực hiện với 1 lệnh 2-byte bằng cách dùng kiểu định địa chỉ trực tiếp :

MOV A,05H

Các lệnh sử dụng các thanh ghi từ R1 đến R7 là các lệnh ngắn và thực hiện nhanh hơn so với các lênh tương đương sử dụng kiểu định địa chỉ trực tiếp. Các giá trị dữ liệu thường được sứ dụng nên chứa ở một trong các thanh ghi này. Dãy thanh ghi đang được sử dụng được goi là dãy thanh ghi tích cực. Dãy thanh ghi tích cực có thế được thay đổi bằng cách thay đổi các bít chọn dãy trong từ trạng thái chương trình PSW( sẽ đề cập sau ). Giá sử rằng dãy thanh ghi 3 ( bank 3 ) tích cực, lệnh sau đây ghi nội dung của thanh chứa A vào vị trí 18H :

MOV R0, A

 

Ý tưởng “các dãy thanh ghi” cho phép “chuyển đối ngữ cảnh” nhanh và có hiệu quả ở những nơi mà các phần riêng rẽ của phần mềm sử dụng một tập thanh ghi riêng, độc lập với các phần khác của phần mềm.

 

2.5     CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT ( SFR )

 

Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõ ràng bởi một tập lệnh. Thí dụ lệnh INCA của chip 6809 tăng nội dung của thanh chứa A bởi 1. Thao tác được xác định rõ ràng trong opcode của lệnh. Việc truy xuất các thanh ghi cũng được sử dụng trên 8051. Lệnh INC A thực hiện cùng công việc trên.

 

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 chíp, do vậy mỗi một thanh ghi cũng có một địa chỉ. Điều này hợp lý với 8051 vì chip này có rất nhiều thanh ghi. 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 ( xem hình 2.6 ).

 

 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 đại chỉ được định nghĩa [26 trên 8032/8052]

Thanh chứa A có thể được truy xuất rõ ràng như được minh họa trong các thí dụ ở các phần trên. Hầu hết các thanh ghi chức năng đặt biệt được truy xuất bằng kiểu định địa chỉ trực tiếp. Trong hình 2.6 ta cần lưu ý là một số thanh ghi chức năng đặc biệt được định địa chỉ từng bit và định địa chỉ từng byte. Thí dụ ta có lệnh sau :

SETB 0E0H

sẽ set bit 0 của thanh chứa A lên 1, các bit khác của thanh chứa không thay đổi. Ta nhận thấy rằng tại địa chỉ E0H có thể là : địa chỉ byte cho cả thanh chứa và địa chỉ bit của bit có ý nghĩa thấp nhất trong thanh chứa. Vì lệnh SETB thao tác trên các bit và không thao tác trên các byte, chỉ có bit được định địa chỉ bị ảnh hưởng. Lưu ý là các bit được định địa chi trong môt thanh ghi chức năng đặc biệt có 5 bit cao của địa chỉ giống nhau cho tất cả các bit của thanh ghi này. Lấy thí dụ port 1 có địa chỉ byte là  ( hay 10010000B) và các bit trong port này có các địa chỉ từ 90H tới 97H hay 10010xxxB.

Từ trạng thái chương trình PSW ( program status Word ) sẽ được thảo luận chi tiết trong mục sau. Các thanh ghi chức năng đặc biệt khác cũng được giới thiệu vắn tắt, các chi tiết về chúng sẽ được đề cập trong các chương tiếp theo

 
Bit Ký hiệu Địa chỉ Mô tả bit
PSW.7 CY D7H Cờ nhớ
PSW.6 AC D6H cờ nhớ phụ
PSW.5 F0 D5H cờ 0
PSW.4 RS1 D4H Chọn dãy thanh ghi (bit 1)
PWS.3 RS0 D3H chọn dãy thanh ghi (bit 0)
00= bank 0: đại chỉ từ 00H đến 07H
01= bank 1: địa chỉ từ 08H đến 0FH
10= bank 2 : địa chỉ từ 10H đến 17H
11= bank3: địa chỉ từ 18H đến 1FH
PSW.2 OV D2H cờ tràn
PSW.1 D1H Dự trữ
PSW.0 P D0H Cờ kiểm tra chẵn lẻ

Bảng 2.3: thanh ghi PSW

 

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 2.3. Từng bit của PSW được khảo sát. dưới đây :

 

Cờ nhớ

Cờ nhớ CY ( carry flag ) có 2 công dụng. Công dụng truyền thông trong các phép toán số học là được set bằng 1 nếu có số nhớ từ phép cộng bit 7 hoặc có số mượn mang đến bit 7. Thí dụ nếu thanh chứa A có nội dung là FFH, lệnh :

 

ADD A, #1

 

Sẻ làm cho thanh chứa A có nội dung là 00H và cờ CY trong PSW được set bằng 1. Cờ nhớ CY còn là thanh chứa logic được dùng như một thanh ghi 1-bit đối với các lệnh logic thao tác trên các bit. Lấy thí dụ lệnh sau đây sẽ AND bit 25H với cờ nhớ CY và đặt kết quả trở về cờ nhớ :

ANL C, 25H : AND bit ở địa chỉ 25H với cờ nhớ

 

Cờ nhớ phụ

 

Khi cộng các giá trị BCD, cờ nhớ phụ AC ( auxiliary carry flag ) được set bằng 1 nếu có một số nhớ được tạo ra từ bit 3 chuyến sang bit 4 hoặc nếu kết quả trong đề-cát thấp nằm trong tầm từ 0AH đến 0FH. Nếu các giá trị được cộng là giá trị BCD, lệnh cộng phải được tiếp theo bởi lệnh DA  A ( hiệu chỉnh thập phân thanh chứa A ) để đưa các kết quả lớn hơn 9 về giá trị đúng.

 

Cờ 0

 

Đây là cờ có nhiều mục đích dành cho các ứng dụng của người lập trình.

 

Các bit chọn dãy thanh ghi

 

Các bit chọn dãy thanh ghi RS0, RS1 dùng để xác định dãy thanh ghi tích cực. Các bit này được xóa sau khi có thao tác reset hệ thống và đổi mức logic bởi phần mềm khi cần. Thí dụ ba lệnh sau cho phép dãy thanh ghi 3 ( bank 3 ) tích cực, sau đó di chuyến nội dung của R7 ( địa chỉ byte 1FH ) vào thanh chứa A :

 

SETB RS1

 

SETB RSO

 

MOV A, R7

 

Khi đoạn chương trình trên được dịch, các địa chỉ bit sẽ thay thế cho các ký hiệu RS0 và RS1, vậy thì lệnh SETB RS1 tương đương với  lệnh SETB 0D4H.

Cờ tràn

Cờ tràn OV ( overflow flag ) được set bằng 1 sau phép toán cộng hoặc trừ nếu có xuất hiện một tràn số học. Khi các số có dấu được cộng hoặc được trừ, phần mềm có thể kiểm tra bit tràn OV để xác định xem kết quả có nằm trong tầm hay không.

Với phép cộng các số không dấu, cờ tràn OV được bỏ qua. Kết quả lớn hơn +128 hoặc nhỏ hơn -127 sẻ set cờ ov bằng 1. Thí dụ phép cộng sau đây gây ra 1 tràn và set cờ OV trong PSW :

Số hex 0F Số thập phân 15
+7F +127
8E 142

8EH biếu diễn số âm -116. như vậy không đúng với kết, quả mong muốn là 142 nên cờ ov được set bằng 1.

Cờ chẵn lẻ

Bit chẳn lẻ P tự động được set bằng 1 hay xóa bằng 0 ở mỗi chu kỳ máy để thiết lập kiểm tra chẵn cho thanh chứa A. Số các bit. 1 trong thanh chứa cộng với bit P luôn luôn là số chẳn. Thí dụ nếu thanh chứa có nội dung 10101101B, bit P sẻ là 1 đế có số bit 1 là 6. Bit chẳn lẻ được sử dụng nhiều để kết hợp với các chương trình xuất/nhập nối tiếp trước khi truyền dữ liệu hoặc để kiểm tra chẳn lẻ sau khi nhận dữ liệu.

Thanh ghi B

Thanh ghi B ở địa chi 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ư 1 thanh ghi nháp. Các bit được định địa chỉ của thanh ghi B có địa chi từ F0H đến F7H.

2.5.3     Con trỏ stack

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 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 chi truy xuất được bởi kiểu định địa chỉ gián tiếp. Vùng RAM nội có 128 byte trên 8031/8051 hoặc 256 byte trên 8032/8052; nếu ta khởi động SP để bắt đầu vùng stack ở địa chỉ 60H bằng lệnh:

MOV SP, #5FH

vùng stack được giới hạn là 32 byte trên 8031/8051 vì địa chỉ cao nhất của RAM trên chip là 7FH. Giá trị 5FH được dùng ở đây vì SP tăng lên 60H trước khi thao tác cất vào stack đầu tiên được thực thi.

Nếu ta không khởi động SP, nội dung mặc định của thanh ghi này là 07H nhằm duy trì sự tương thích với 8048, bộ vi điều khiển tiền nhiệm của 8051. Kết quả là thao tác cất vào stack đầu tiên sẽ lưu dữ liệu vào vị trí nhớ có địa chỉ 08H. Như vậy nếu phần mềm ứng dụng không khởi động SP, dãy thanh ghi 1 ( và có lẽ 2 và 3 ) không còn hợp lệ vì vùng này được sử dụng làm stack. 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 ).

2.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à 1 thanh ghi 16- bit có địa chỉ là 82H ( DPL, byte thấp ) và 83H ( DPH, byte cao ). Ba lệnh sau đây ghi 55H vào RAM ngoài ở địa chỉ 1000H :

MOV A, #55H

MOV DPTR, #1000H

MOV @DPTR, A

Lệnh đầu tiên sử dụng kiểu định địa chỉ tức thời để nap hằng dữ liệu 55H vào thanh chứa A. Lệnh thứ hai cũng sử dụng kiểu định địa chỉ tức thời, lần này nạp hằng địa chỉ 16-bit 1000H cho con trỏ dữ liệu DPTR. Lệnh thứ ba sử dụng kiểu định địa chỉ gián tiếp di chuyển giá trị 55H chứa trong thanh chứa A đến RAM ngoài tại địa chỉ chứa trong DPTR ( 1000H).

2.5.5     Các thanh ghi port

 

Các port xuất nhâp của 8051 bao gồm port 0 tai địa chỉ 80H, port 1 tại địa chỉ 90H, port 2 tại địa chỉ A0H và port 3 tại địa chỉ B0H. 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 biệt của 8051 được sử dụng ( như là ngắt, port nối tiếp, … ). P1.2 đến P1.7, ngược lại, luôn luôn là các đường xuất/nhập đa mục đích hợp lệ.

 

Tất cá port đều được định địa chỉ từng hit, nhằm cung cấp các khả năng giao tiếp mạnh. Thí dụ ta có một động cơ nối qua một cuộn dây và một mạch kích dùng transistor nối tới bit 7 của port 1, động cơ có thế ngưng hay chạy chỉ nhờ vào một lệnh đơn của 8051 :

 

SETB P1.7

 

làm động cơ chạy và

 

CLR Pl.7

 

làm động cơ ngưng.

 

Các lệnh trên sử dụng toán tử . ( dot ) đế định địa chỉ 1 bit trong 1 byte, cho phép định địa chỉ từng bit.

 

Trình dịch hợp ngữ thực hiện biến đổi dạng ký hiệu thành địa chỉ thực tế, nghĩa là hai lệnh sau tương đương :

 

CLR P1.7

 

CLR 97H

 

Việc sử dụng các ký hiệu được định nghĩa trước ( tiền định nghĩa ) của trình dịch hợp ngữ sẽ được thảo luận chi tiết trong các tài liệu về lập trình hợp ngữ trên họ MCS-51 hoặc ở chương 7.

 

Thí dụ sau đây khảo sát việc giao tiếp với 1 thiết bị có bit trạng thái gọi là BUSY, bit này được set bằng 1 khi thiết bị đang bận và được xóa khi thiết bị đã sẵn sàng. Nếu BUSY được nối với bit 5 của Port 1, vòng lặp sau đây được dùng để chờ cho đến khi thiết bị sẵn sàng :

 

WAIT: JB P1.5, WAIT

Lệnh trên có nghĩa là nếu bit P1.5 đươc set, nhảy đến nhãn WAIT ( cũng có nghĩa là nhảy về và kiểm tra lần nữa ).

 

2.5.6     Các thanh ghi định thời

8051 có 2 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 ).

Hoạt độ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 register ) ở địa chỉ 88H. Chỉ có TCON được định địa chỉ từng bit.

Các bộ định thời sẽ được thảo luận chi tiết sau.

2.5.7    Các thanh ghi của port nối tiếp

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 modem, hoặc đế giao tiếp với các IC khác có mạch giao tiếp nôi tiếp ( như các thanh ghi dịch chẳng hạn ). 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 giữ 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 ( serial port control register ) ớ địa chi 98H, thanh ghi này được định địa chỉ từng bit..

Hoạt động chi tiết của port nối tiếp sẽ mô tả sau.

 

2.5.8     Các thanh ghi ngắt

 

8051 có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt..

 

( 5 source, 2 priority level interrupt structure ). Các ngắt bị vô hiệu hóa sau khi reset hệ thống và sau đó được cho phép 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ả 2 thanh ghi này đều được định địa chỉ từng bit.

Các ngắt sẽ được đề cập chi tiết sau.

2.5.9     Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON ( power control register ) có địa chỉ 87H chứa các bit điều khiển được tóm tắt trong bảng 2.4.

Bit SMOD tăng gấp đôi tốc độ baud của port nối tiẽp khi port này hoạt động ớ các chế độ 1, 2 hoặc 3. Các bit 4, 5 và 6 của PCON không được định nghĩa. Các bit 2 và 3 là các bit cờ đa mục đích dành cho các ứng dụng của người sử dụng.

Các bit. điều khiển nguồn, nguồn giảm PD và nghỉ IDL, hợp lệ trong tất cả các chíp thuộc họ MCS-51, nhưng chỉ được hiện thực trong các phiên bản CMOS của MCS-51. PCON không được định địa chỉ bit.

 

Chế độ nguồn giảm

 

Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng được thực thi trước khi đi vào chế độ nguồn giảm. Ớ chế độ nguồn giảm :

 

(1)    Mạch dao động trên chip ngừng hoạt động

 

(2)    Mọi chức năng ngừng hoạt động

 

(3)    Nội dung của RAM trên chip được duy trì

 

(4)    Các chân port duy trì mức logic của chúng

ALE và PSHN được giữ ở mức thấp. Chỉ ra khỏi chế độ này bằng cách reset hệ thống.

Trong suốt thời gian ở chế độ nguồn giảm, Vcc có điện áp là 2V. Cần phải giữ cho Vcc không thấp hơn sau khi đạt được chế độ nguồn giảm và cần phục hồi Vcc = 5V tối thiếu 10 chu kỳ dao động trước khi chân RST đạt mức thấp lần nữa.

 

Bit           Ký hiệu            Mô tả

7             SMOD             tăng gấp đôi tốc độ baud, bit này khi set làm cho tốc độ baud tăng 2 ở các chế độ 1, 2 và 3 của port nối tiếp

6             –                     Không định nghĩa

5             –                     Không định nghĩa

4             –                     Không định nghĩa

3             GF1                Bit cờ đa mục đích 1

2             GF0                Bit cờ đa mục đích 2

1             PD                 Nguồn giảm; thiết lập đế tích cực chế độ nguồn giảm, chỉ ra khỏi chế độ bằng reset.

0            IDL                 Chế độ nghĩ;thiết lập đế tích cực chế độ nguồn giảm, chỉ ra khỏi chế độ bằng reset.

 

Bảng 2.4 : Thanh ghi PCON

 

 

Chế độ nghỉ

 

Lệnh thiết lập bit IDL bằng 1 sẽ là lệnh sau cùng được thực thi trước khi đi vào chế độ nghỉ, ở chế độ nghỉ,tín hiệu clock nội được khóa không cho đến CPU nhưng không khóa đôi với các chức năng ngắt, định thời và port nối tiếp. Trạng thái cua CPU được duy trì và nội dung của tất cả các thanh ghi cũng được giữ không đổi.

Các chân port cũng được duy trì các mức logic cùa chúng. ALE và PSEN/ được giữ ở mức cao.

Chế độ nghỉ kết thúc bằng cách cho phép ngắt, hoặc bằng cách reset hệ thống. Cả hai cách vừa nêu đều xóa bit IDL.

Leave a Reply