Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
151,49 KB
Nội dung
Chương 1: VI ĐIỀU KHIỂN 8951 I . MÔ TẢ CẤU TRÚC PHẦN CỨNG CỦA VI ĐIỀU KHIỂN 8951. 1/ Giới thiệu họ MCS51: MCS51 là một họ IC vi điều khiển (Microcontroller ) do hãng Intel sản xuất. Các IC tiêu biểu cho họ MCS51 là 8051 và 8031. Đặc biệt, vi điều khiển 8951 được sản xuất gần đây mang các đặc điểm sau: 4 Kbytes EEPROM. 128 bytes RAM. 4 ports I/O (Input/Output). 2 bộ đònh thời (timer) 16 bits. Giaotiếp nối tiếp. 64 Kbytes không gian bộ nhớ chương trình mở rộng. 64 Kbytes không gian bộ nhớ dữ liệu mở rộng. Một bộ xử lí luận lí (thao tác trên các bit đơn). 210 bits được đòa chỉ hóa. Bộ nhân chia 4 s. 2/ Sơ lược về các chân của 8951: C 8951 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus đòa chỉ. 2.1/ Hệ thống giaotiếp port: a/ Port 0: Port 0 là một port hai chức năng trên các chân 32 – 39. Trong các thiết kế cỡ nhỏ (không dùng bộ nhớ mở rộng) nó có chức năng như các đường I/O. Đối với các thiết kế lớn với bộ nhớ mở rộng, nó được hợp kênh giữa bus dữ liệu và byte thấp của bus đòa chỉ. b/ Port 1: Port 1 là một port I/O trên các chân 1 – 8. Các chân được kí hiệu: P1.0 ; P1.1 ; P1.2 … có thể dùng cho giaotiếp với các thiết bò ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giaotiếp với các thiết bò ngoài. c/ Port 2: Port 2 là một port công dụng kép trên các chân 21 – 28 được dùng như các đường xuất nhập hoặc là byte cao của bus đòa chỉ đối với các thiết kế dùng bộ nhớ mở rộng. d/ Port 3: Port 3 là một port công dụng kép trên các chân 10 – 17. Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như ở bảng sau: Bit Tên Chức năng chuyển đổi P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD TXD INT0\ INT1\ T0 T1 WR\ RD\ Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt 0 bên ngoài Ngắt 1 bên ngoài Ngõ vào của Timer/counter 0 Ngõ vào của Timer/counter 1 Xung ghi bộ nhớ dữ liệu ngoài Xung đọc bộ nhớ dữ liệu ngoài 2.2/ Các tín hiệu điều khiển: C 8951 có 4 tín hiệu điều khiển: a/ PSEN\ (Program Store Enable): PSEN\ là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển cho phép bộ nhớ chương trình mở rộng, PSEN\ thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh. PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhò phân của chương trình được đọctừ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh. Nếu thi hành chương trình trong ROM nội ( 8951) thì PSEN\ sẽ ở mức thụ động (mức cao). b/ ALE (Address Latch Enable): Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bò làm việc với các vi xử lí 8085, 8088, 8086. C 8951 dùng ALE một cách tương tự cho việc giải kênh các bus đòa chỉ và dữ liệu. Khi port 0 được dùng trong chế độ chuyển đổi: vừa là bus dữ liệu vừa là byte thấp của bus đòa chỉ, ALE là tín hiệu để chốt byte thấp đòa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kì bộ nhớ. Sau đó, các đường port 0 dùng để xuất nhập dữ liệu trong nửa sau của chu kì bộ nhớ. Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm nguồn xung nhòp cho các phần khác của hệ thống. Nếu xung nhòp trên 8951 là 12 Mhz thì ALE có tần số 2 Mhz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bò mất. Trong trường hợp là 8051 thì chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong chip. c/ EA\ (External Access): Tín hiệu vào EA\ trên chân 31 thường được mắc lên mức cao (+5v) hoặc mức thấp (GND). Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng đòa chỉ thấp (4K). Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng. Khi dùng 8031, EA\ luôn được nối mức thấp vì 8031 không có bộ nhớ chương trình trên chip. Nếu EA\ được nối mức thấp thì bộ nhớ chương trình bên trong 8951 sẽ bò cấm và chương trình chỉ được thi hành từ EPROM mở rộng. Người ta còn dùng EA\ làm chân cấp điện áp 21V khi lập trình cho EEPROM trong 8051. d/ RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951. Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 8951 được tải những giá trò thích hợp để khởi động hệ thống. e/ Các ngõ vào bộ dao động trên chip: Như đã thấy trong các hình trên, 8951 có một bộ dao động trên chip. Nó thường được nối với một thạch anh giữa hai chân 18 và 19. Các tụ giữ cũng cần thiết như đã vẽ. Tần số thạch anh thông thường là 12 Mhz. f/ Các chân nguồn: 8951 hoạt động với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20. 3/ Tổ chức bộ nhớ: 3.1/ Khảo sát tổ chức bộ nhớ 8951: C 8951 có bộ nhớ được tổ chức theo cấu trúc Harvard : có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu. Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong ( 8951); dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu. Bộ nhớ bên trong bao gồm ROM ( 8951) và RAM trên chip bao gồm nhiều thành phần: Phần lưu trữ đa dụng, phần lưu trữ đòa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt. FFFF FFFF F F 00 0000 Bộ nhớ chương trình được chọn qua PSEN\ 0000 Bộ nhớ dữ liệu được chọn qua WR\ và RD\ Bộ nhớ trên chip Bộ nhớ mở rộng Tóm tắt các vùng bộ nhớ của 8951. Hai đặc tính cần lưu ý là: Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể được truy xuất trực tiếp giống như các đòa chỉ bộ nhớ khác. Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài so với bộ xử lí khác. 3.2/ Chi tiết về bộ nhớ RAM trên chip: Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H – 1FH), RAM đòa chỉ hóa bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt trong khoảng (80H – FFH). RAM đa dụng: Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các đòa chỉ từ 30H – 7FH, 32 bytes dưới cùng từ 00H – 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các đòa chỉ này đã có mục đích khác). Đòa chỉ Đòa chỉ byte Đòa chỉ bit byte Đòa chỉ bit 7 F F F F 0 F 7 F 6 F 5 F 4 F 3 F 2 F 1 F 0 B E 0 E 7 E 6 E 5 E 4 E 3 E 2 E 1 E 0 AC C D 0 D 7 D 6 D 5 D 4 D 3 D 2 _ D 0 PS W 3 0 RAM đa dụng B 8 _ _ _ B C B B B A B 9 B 8 IP 2 F 7 F 7 E 7 D 7 C 7 B 7 A 7 9 7 8 2 E 7 7 7 6 7 5 7 4 7 3 7 2 7 1 7 0 B 0 B 7 B 6 B 5 B 4 B 3 B 2 B 1 B 0 P3 2 D 6 F 6 E 6 D 6 C 6 B 6 A 6 9 6 8 2 C 6 7 6 6 6 5 6 4 6 3 6 2 6 1 6 0 A 8 A F _ _ A C A B A A A 9 A 8 IE 2 B 5 F 5 E 5 D 5 C 5 B 5 A 5 9 5 8 2 A 5 7 5 6 5 5 5 4 5 3 5 2 5 1 5 0 A 0 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 P2 2 9 4 F 4 E 4 D 4 C 4 B 4 A 4 9 4 8 2 8 4 7 4 6 4 5 4 4 4 3 4 2 4 1 4 0 9 9 khoâng ñöôïc ñòa chæ hoùa bit SB UF 2 7 3 F 3 E 3 D 3 C 3 B 3 A 3 9 3 8 9 8 9 F 9 E 9 D 9 C 9 B 9 A 9 9 9 8 SC ON 2 6 3 7 3 6 3 5 3 4 3 3 3 2 3 1 3 0 2 5 2 F 2 E 2 D 2 C 2 B 2 A 2 9 2 8 9 0 9 7 9 6 9 5 9 4 9 3 9 2 9 1 9 0 P1 2 4 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 2 3 1 F 1 E 1 D 1 C 1 B 1 A 1 9 1 8 8 D khoâng ñöôïc ñòa chæ hoùa bit TH1 2 2 1 7 1 6 1 5 1 4 1 3 1 2 111 0 8 C khoâng ñöôïc ñòa chæ hoùa bit TH0 2 1 0 F 0 E 0 D 0 C 0 B 0 A 0 9 0 8 8 B khoâng ñöôïc ñòa chæ hoùa bit TL1 2 0 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 8 A khoâng ñöôïc ñòa chæ hoùa bit TL0 1 F 8 9 khoâng ñöôïc ñòa chæ hoùa bit TM OD 1 8 BANK 3 8 8 8 F 8 E 8 D 8 C 8 B 8 A 8 9 8 8 TC ON 1 7 BANK 2 8 7 khoâng ñöôïc ñòa chæ hoùa bit PC ON 1 0 0 F 8 3 không được đòa chỉ hóa bit DP H 0 8 BANK 1 8 2 không được đòa chỉ hóa bit DPL 0 7 8 1 không được đòa chỉ hóa bit SP 0 0 BANK 0 ( Mặc đònh cho R0 – R7 ) 8 0 8 7 8 6 8 5 8 4 8 3 8 2 8 1 8 0 P0 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Tóm tắt bộ nhớ dữ liệu trên chip Mọi đòa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh đòa chỉ trực tiếp hoặc gián tiếp. Ví dụ, để đọc nội dung ở đòa chỉ 5FH của RAM nội vào thanh ghi tích lũy, lệnh sau sẽ được dùng: MOV A, 5FH Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh đòa chỉ trực tiếp để xác đònh “đòa chỉ nguồn” (5FH). Đích nhận dữ liệu được ngầm xác đònh trong mã lệnh là thanh ghi tích lũy A. RAM bên trong cũng có thể được truy xuất dùng cách đánh đòa chỉ gián tiếp qua R0 hay R1. Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên: MOV R0, #5FH [...]... nằm trong tầm xác đònh không Khi các số không dấu được cộng, bit OV có thể được bỏ qua Các kết quả lớn hơn +12 7 hoặc nhỏ hơn 12 8 sẽ set bit OV Ví dụ, phép cộng sau bò tràn và bit OV được set : Hex 0F + 7F Thập phân + 15 12 7 8E 14 2 Kết quả là một số có dấu 8EH được xem như 14 , không phải là một kết quả đúng (14 2), vì vậy bit OV được set b/ Thanh ghi B: Thanh ghi B ở đòa chỉ F0H được dùng với thanh... trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi cất dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc dữ liệu và giảm SP Ngăn xếp của 89 51 được giữ trong RAM nội và được giới hạn các đòa chỉ có thể truy xuất bằng đòa chỉ gián tiếp Chúng là 12 8 bytes đầu của 89 51 Để khởi động lại SP với ngăn xếp bắt... thanh ghi 16 bit ở đòa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao) Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở đòa chỉ 10 00H: MOV A, #55H MOV DPTR, #10 00H MOVX @DPTR, A Lệnh đầu tiên dùng đòa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tích lũy Lệnh thứ hai cũng dùng đòa chỉ tức thời, lần này để tải dữ liệu 16 bits 10 00H vào con trỏ dữ liệu Lệnh thứ ba dùng đòa chỉ gián tiếp để di chuyển dữ liệu trong... đòa chỉ 08H – 0FH ) 10 = bank 2 ( đòa chỉ 10 H – 17 H ) 11 = bank 3 ( đòa chỉ 18 H – 1FH ) Cờ tràn Dự trữ Cờ parity chẵn Cờ nhớ: Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán học: nó sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ Ví dụ, nếu thanh ghi tích lũy chứa FFH, thì lệnh sau: ADD A, #1 sẽ trả về thanh ghi tích lũy kết quả 00H và set... trạng thái chương trình: Từ trạng thái chương trình (PSW: Program Status Word) ở đòa chỉ D0H chứa các bit trạng thái như bảng tóm tắt sau: Bit PSW.7 PSW.6 PSW.5 Kí hiệu CY AC F0 Đòa chỉ D7H D6H D5H Ý nghóa Cờ nhớ Cờ nhớ phụ Cờ 0 PSW.4 PSW.3 RS1 RS0 D4H D3H PSW.2 PSW .1 PSW.0 OV _ P D2H D1H D0H Bit 1 chọn bank thanh ghi Bit 0 chọn bank thanh ghi 00 = bank 0 ( đòa chỉ 00H – 07H ) 01 = bank 1 ( đòa chỉ... lại SP, thì bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp Ngăn xếp được truy xuất trực tiếp bằng lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETI) để cất và lấy lại bộ đếm chương trình d/ Con trỏ dữ liệu: Con trỏ dữ liệu (DPTR) để truy xuất... tức thời để di chuyển giá trò 5FH vào thanh ghi R0, và lệnh thứ hai dùng đòa chỉ gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy RAM đòa chỉ hóa từng bit: C 89 51 chứa 210 bits được đòa chỉ hóa, trong đó 12 8 bits là ở các đòa chỉ byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện... lệnh Các thanh ghi trong 89 51 được đònh dạng như một phần của RAM trên chip Vì vậy mỗi thanh ghi sẽ có một đòa chỉ (ngoại trừ thanh ghi đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bò tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM trên chip) Đó là lí do để 89 51 có nhiều thanh ghi như vậy Cũng như R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special Function... xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành trên bit Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ: AND C, 25H Cờ nhớ phụ: Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấp trong khoảng 0AH đến 0FH Nếu các giá trò được cộng là số BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi tích lũy) để điều chỉnh kết quả cho phù hợp... được dùng: MOV SP, #5FH Trên 89 51 ngăn xếp bò giới hạn 32 bytes vì đòa chỉ cao nhất của RAM trên chip là 7FH Sở dó dùng giá trò 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nó lấy giá trò mặc đònh khi reset hệ thống Giá trò mặc đònh đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có đòa chỉ là 08H Nếu phần . 3 1 3 0 2 5 2 F 2 E 2 D 2 C 2 B 2 A 2 9 2 8 9 0 9 7 9 6 9 5 9 4 9 3 9 2 9 1 9 0 P1 2 4 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 2 3 1 F 1 E 1 D 1 C 1 B 1 A 1 9 1. TH1 2 2 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 8 C khoâng ñöôïc ñòa chæ hoùa bit TH0 2 1 0 F 0 E 0 D 0 C 0 B 0 A 0 9 0 8 8 B khoâng ñöôïc ñòa chæ hoùa bit TL1