Tài liệu Thiết bị báo cháy và điều khiển tự động, chương 4 doc

11 472 1
Tài liệu Thiết bị báo cháy và điều khiển tự động, chương 4 doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 4: CÁC THANH GHI CÓ CHỨC NĂNG ĐẶC BIỆT Các thanh ghi của C8031/8051 được truy xuất ngầm đònh bởi bộ lệnh. Ví dụ “INC A” sẽ tăng nội dung thanh ghi A lên một đơn vò. Tác động này được ngầm đònh trong mã lệnh. Các thanh ghi trong C8031/8051 đượ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 bộ nhớ chương trình thanh ghi lệnh vì các thanh ghi này hiếm khi bò tác động trực tiếp). Cũng như R0  R7, 8031 có 21 thanh ghi có chức năng đặc biệt ở vùng trên của RAM nội có đòa chỉ từ 80H FFH.  Chú ý: tất cả 128 đòa chỉ từ 80H  FFH không được đònh nghóa chỉ có 21 thanh ghi có chức năng đặc biệt được đònh nghóa sẳn các đòa chỉ. Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đa số các thanh ghi có chức năng đặc biệt SFR có đòa chỉ hóa từng bit hoặc byte.  Chú ý: một vài thanh ghi SFR có thể đòa chỉ hóa từng bit hoặc byte nên người lập trình phải thận trọng khi truy xuất bit hoặc byte. 1. Từ trạng thái chương trình: (PSW: Program Status Word) Thanh ghi trạng thái chương trình PSW (Program Status Word) ở đòa chỉ D0H chứa các bit trạng thái được tóm tắt như sau: Bit Ký hiệu Đòa chỉ Ý nghóa PSW. 7 CY D7H Cờ nhớ PSW. 6 AC D6H Cờ nhớ phụ PSW. 5 F0 D5H Cờ 0 PSW. 4 RS1 D4H Bit 1 chọn bank thanh ghi PSW. 3 RS0 D3H Bit 0 chọn bank thanh ghi 00 = bank 0: đòa chỉ 00H 07H 01 = bank 1: đòa chỉ 08H 0FH 10 = bank 2: đòa chỉ 10H 17H 11 = bank 3: đòa chỉ 18H 1FH PSW. 2 0V D2H Cờ tràn PSW. 1 0V D1H Dự trữ PSW. 0 PORT D0H Cờ parity chẳn lẻ Bảng : Các bit của thanh ghi PSW  Cờ nhớ (C Y ): Cờ nhớ Carry có tác dụng kép. Thông thường nó được dùng cho các lệnh toán học: C = 1 nếu phép toán cộng có tràn hoặc phép trừ có mượn ngược lại C = 0 nếu phép toán cộng không tràn phép trừ không có mượn. Ví dụ: lệnh sau sẽ trả về thanh ghi tích lũy kết quả 00H set cờ nhớ trong PSW nếu thanh ghi tích lũy A chứa FFH. ADD C,25H  Cờ nhớ phụ AC: (AC: Auxillary Carry Flag) Khi cộng các số BCD, cờ nhớ phụ AC = 1 nếu kết quả 4 bit thấp trong khoảng 0A 0F ngược lại cờ nhớ phụ AC = 0.  Cờ 0 (F0): Cờ 0 là một bit cờ đa dụng dùng cho các ứng dụng cho người dùng.  Các bit chọn bank thanh ghi truy xuất (RS0 RS1): Các bit chọn bank thanh ghi nhằm để xác đònh bank thanhghi được truy xuất. Chúng được xoá sau khi Reset hệ thống được thay đổi bằng phần mềm nếu cần. Ví dụ: 3 lệnh sau đây cho phép bank thanh ghi 3 được chọn di chuyển nội dung thanh ghi R7 (có đòa chỉ byte 1FH) vào thanh ghi A. SETB RS1 SETB RS0 MOV A, R7 Khi chương trình được dòch sang mã máy cho 8031 thi hành, các đòa chỉ bit được thay thế bằng các ký tự RS1 RS0. Vậy lệnh SETB RS1 là SETB 0DH.  Cờ tràn 0V: (Overlow Flag) Cờ tràn có tác dụng như sau: 0V = 1 sau một lệnh cộng hoặc trừ nếu có phép toán bò tràn. Khi các số có dấu được cộng hay trừ với nhau, phần mềm có thể kiểm tra bit này để kiểm tra xem kết quả có trong tầm xác đònh hay không. Khi có số không dấu được cộng, bit 0V có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn –128 thì bit 0V=1. Ví dụ: phép cộng sau bò tràn bit 0V sẽ được set: 0FH + 7FH = 8EH. Kết quả là một số có dấu 8E được xem như –116, không phải là kết quả đúng 142 vì vậy bit 0V = 1. 2. Thanh ghi B: Thanh ghi B ở đòa chỉ F0H được dùng cùng với thanh ghi tích lũy A cho các phép toán nhân chia. Lệnh MUL AB sẽ nhân các giá trò không dấu 8 bit trong A B rồi trả về kết quả 16 bit A (byte thấp) B (byte cao). Lệnh DIV AB sẽ chia A cho B trả kết quả phần nguyên trong A phần dư trong B. Thanh ghi có thể được xem là một thanh ghi đệm đa dụng. Nó được đòa chỉ hóa từng bit với các đòa chỉ từ F0H  F7H. 3. Con trỏ ngăn xếp: Con trỏ ngăn xếp SP là một thanh ghi 8 bit ở đòa chỉ 81H. Nó chứa đòa chỉ của byte dữ liệu hiện hành trên đỉnh ngăn xếp. Các lệnh trên ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp 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 ghi dữ liệu lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ làm giảm SP. Ngăn xếp của 8031 được giữ trong RAM ngoại giới hạn các đòa chỉ có thể truy xuất bằng đòa chỉ gián tiếp, chúng là 128 byte đầu của 8031. Ví dụ: Để khởi động SP với ngăn xếp bắt đầu tai đòa chỉ 60H, thì dùng lệnh sau đây: MOV SP, #5F Với lệnh trên thì ngăn xếp của 8031 chỉ có 32 byte vì đòa chỉ cao nhất của RAM trên vi điều khiển là 7F. Sở dó giá trò 5F được nạp vào SP vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên. Khi Reset 8031, SP sẽ mang giá trò mặc đònh là 07H dữ liệu đầu tiên sẽ được nạp vào ô nhớ ngăn xếp có đòa chỉ 08H. Nếu phần mềm ứng dụng không khởi động SP một giá trò mới thì bank thanh ghi l có thể cả 2 3 sẽ không dùng được vì dù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 lệnh POP để lưu trữ tạm thời lấy dữ liệu, hoặc truy xuất ngầm bằng lệnh gọi chương trình con (ACALL LCALL) lệnh trở về (RET, RETL) để lưu giá trò của bộ đếm chương trình khi bắt đầu thực hiện chương trình con lấy lại khi kết thúc chương trình con. 4. Con trỏ dữ liệu: (DPTR: Data Poiter) Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở đòa chỉ 82H (DPL: byte thấp) 83H (DPH: byte cao) 3 lệnh sau đây sẽ ghi đòa chỉ 55H vào RAM ngoại ở đòa chỉ 1000H: MOV A,#55H MOV DPRT, ##1000H MOVX@ DPTR,A Lệnh đầu tiên dùng để nạp dữ liệu 55H vào thanh ghi tích lũy. Lệnh thứ 2 được dùng để nạp dữ liệu 1000H vào con trỏ dữ liệu DPTR. Lệnh thứ 3 sẽ di chuyển nội dung trong thanh ghi A (55H) vào ô nhớ RAM ngoài có đòa chỉ chứa trong DPTR (là 1000H). 5. Các thanh ghi port xuất nhập: Các Port của 8031 gồm port 0 ở đòa chỉ 80H, port 1 ở đòa chỉ 90H, port 2 ở đòa chỉ A0H port 3 ở đòa chỉ B0H. Tất cả các port này có thể truy xuất từng bit nên rất thuận tiện trong chức năng giao tiếp. Ví du ï: Nếu một motor được nối với cuộn dây có transitor lái đến bit 7 của port 1, 8031 có bật tắt bằng một lệnh đơn: SETB P1.7 CLR P1.7 có thể thực hiện tương tự bằng hai lệnh sau: SETB P1.7 CLR 97H 6. Các thanh ghi Timer: 8031 có chứa hai bộ đònh thời/ đếm 16 bit được dùng cho việc đònh thời hoặc đếm sự kiện. Timer 0 ở đòa chỉ 8AH (TLO: byte thấp) 8CH (THO: byte cao). Timer 1 ở đòachỉ 8BH (TL1: byte thấp)và 8DH (TH1: byte cao) việc khởi động Timer được set bởi Timer mode (TMOD) ở đòa chỉ 89 thanh ghi điều khiển Timer (TCON) ở đòa chỉ 88H. Chỉ có TCON được đòa chỉ hóa từng bit. 7. Các thanh ghi port nối tiếp: 8031 chứa 1 port nối tiếp dùng cho việc trao đổi thông tin với các thiết bò nối tiếp như máy tính moderm hoặc giao tiếp với các IC khác (các bộ chuyển đổi A\D, các thanh ghi dòch…). Một thanh ghi gọi là bộ đếm dữ liệu nối tiếp (SBUF) ở đòa chỉ 99H sẽ giữ cả hai dữ liệu phát dữ liệu nhận. Khi truyền dữ liệu thì ghi lên SUBF, khi nhận dữ liệu thì đọc SUBF. Các mode vận hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (SCON: được đòa chỉ hóa từng bit ở đòa chỉ 98H). 8. Các thanh ghi ngắt: 8031 có cấu trúc 5 nguồn ngắt 2 mức ưu tiên. Các ngắt bò cấm sau khi Reset hệ thống sẽ được cho phép bằng việc thanh ghi cho phép ngắt (LE) ở đòa chỉ A8H. Cả hai thanh ghi được đòa chỉ hóa từng bit. 9. Thanh ghi điều khiển công suất: Thanh ghi điều khiển công suất (PCON) ở đòa chỉ 97H chứa nhiều bit điều khiển chúng được tóm tắt ở bảng sau: Bit Kí hiệu Ý nghóa 7 6 5 4 3 2 1 0 SMO D - - - GF1 GF0 PD IDL Bit gấp đôi tốc độ band, nếu được set thì tốc độ baud sẽ tăng gấp đôi trong các mode 1,2 3 của port nối tiếp Không ý nghóa Không ý nghóa Không ý nghóa Bit cờ đa dụng 1 Bit cờ đa dụng 2 Giảm công suất, được set hoạt mode giảm công suất, chỉ thoát khi reset. Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt hoặc reset hệ thống. V. BỘ NHỚ NGOÀI: 8031 có khả năng mở rộng bộ nhớ lên đến 64 kB bộ nhớ chương trình 64 KB bộ nhớ dữ liệu bên ngoài. Do đó có thể dùng ROM RAM nếu cần. Khi dùng bộ nhớ ngoài port 0 cũng là một port I/O thuần tuý. Nó được kết hợp với Bus đòa chỉ A0 đến A7 Bus dữ liệu D0 đến D7 với tín hiệu ALE để chốt byte thấp của Bus đòa chỉ khi bắt đầu mỗi chu kỳ nhớ. Port 2 được cho phép byte cao của đòa chỉ. 1. Truy xuất bộ nhớ chương trình ngoài: Bộ nhớ chương trình bên ngoài là một bộ nhớ ROM được cho phép bởi tín hiệu PSEN\. Hình vẽ sau đây sẽ mô tả cách kết nối 1 bộ nhớ EPROM với C8031/8051. Giản đồ thời gian đọc bộ nhớ chương trình ngoài Một chu kỳ của C8031/8051 có 12 xung nhòp. Nếu một dao động trên chip được lái bằng thạch anh 12 Mhz thì một chu kỳ máy kéo dài 1 s. Trong một chu kỳ máy sẽ có 2 xung ALE 2 byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành Port 0 EA\ ALE Port 2 PSEN\ D7-D0 A7-A0 EPROM A15-A8 OE\ D Q 74373 E OSC ALE PSEN\ PORT2 PORT1 PCL Mã lệnh PCL Byte 2 PCPCH (byte của PC) P1 P1 P1P2P2 P1 P2 P1 P1P2 P2P2 P1 P2 P1 S1 S2 S3 S4 S5 S6 S1 Một chu kỳ máy là lệnh 2 byte thì byte được loại bỏ). Giản đồ thời gian của một lần lấy lệnh được vẽ ở hình trên: 2. Truy xuất bộ nhớ dữ liệu ngoài: Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi /đọc bằng các tín hiệu điều khiển WR\ RD\. C8031/8051 có một lệnh duy nhất truy xuất dữ liệu của bộ nhớ dữ liệu ngoài là MOVX dùng con trỏ 16 bit (PDRT) hoặc R0 R1 xem như thanh ghi đòa chỉ. 3. Giải mã đòa chỉ: Nếu nhiều EPROM hoặc nhiều RAM được giao tiếp với 8031 thì cần có mạch giải mã đòa chỉ. Mạch giải mã cũng được thực hiện như các vi xử lý khác, sử dụng IC 74138 để giải mã. 4. Xếp chồng các vùng bộ nhớ dữ liệu bên ngoài: Vì bộ nhớ chương trình là ROM nên nảy sinh một vấn đề bất tiện khi phát triển phần mềm cho 8031 là tổ chức bộ nhớ như thế nào để có thể sửa đổi chương trình có thể ghi trở lại nó được chứa trong bộ nhớ ROM. Cách giải quyết là xếp chồng các vùng nhớ chương trình dữ liệu. Một bộ nhớ RAM có thể chứa cả chương trình dữ liệu bằng cách nối đường OE\ của RAM với một cổng AND có hai ngõ vào PSEN\ RD\. Sơ đồ mạch như hình sau cho phép bộ nhớ RAM có hai chức năng vừa là bộ nhớ chương trình vừa là bộ nhớ dữ liệu: WR\ RAM OE\ WR\ RD\ PSEN\ Vậy một chương trình có thể được tải vào RAM bằng cách xem nó như một bộ nhớ dữ liệu thi hành bằng cách xem nó như một bộ nhớ chương trình. VI. NGÕ VÀO TÍN HIỆU RESET: C8031/8051 có ngõ vào Reset RST tác động ở mức cao trong khoảng thời gian hai chu kỳ xung máy, sau đó xuống mức thấp để 8031 bắt đầu làm việc RST có thể kích bằng tay bằng một phím thường hở, sơ đồ mạch Reset như sau: Trạng thái của tất cả thanh ghi trong C8031/8051 sau khi Reset hệ thống được tóm tắt như sau: Thanh ghi Nội dung Đếm chương trình PC Thanh ghi tích lũy A Thanh ghi B Thanh ghi trạng thái PSW SP DPRT Port 0 đến port 3 IP IE Các thanh ghi đònh thời 0000H 00H 00H 00H 07H 0000H FFH XXX0 0000B 0XX0 0000B 00H 00H 00H +5v 10 f 10k  100k [...]...SCON SBUF PCON(HMOS) PCON(CMOS) 0XXX XXXXB 0XXX 0000B Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương trình, nó được đặt tại 0000H Khi Reset trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở đòa chỉ đầu tiên trong bộ nhớ chương trình: đòa chỉ 0000H Nội dung của RAM trên chip không bò thay đổi bởi lệnh Reset . liệu hiện hành trên đỉnh ngăn xếp. Các lệnh trên ngăn xếp bao gồm các lệnh 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. khi bắt đầu thực hiện chương trình con và lấy lại khi kết thúc chương trình con. 4. Con trỏ dữ liệu: (DPTR: Data Poiter) Con trỏ dữ liệu (DPTR) được dùng

Ngày đăng: 15/12/2013, 07:15

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan