Tìm hiểu Thiết bị PSoC

PSoC là một từ viết tắt của cụm từ tiếng anh Programmable System on Chip, nghĩa là hệ thống khả trình trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi đ-ợc cấu hình đơn giản bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. Hơn nữa nó còn có thể kết nối t-ơng đối mềm dẻo các khối chức năng với nhau hoặc giữa các khối chức năng với các cổng vào ra. Chính vì vậy mà PSoC có thể thay thế cho rất nhiều chức năng nền của một số hệ thống cơ bản chỉ bằng một đơn chíp. Thành phần của chíp PSoC bao gồm các khối ngoại vi số và t-ơng tự có thể cấu hình đ-ợc, một bộ vi xử lý 8 bit, bộ nhớ ch-ơng trình (EEROM) có thể lập trình đ-ợc và bộ nhớ RAM khá lớn. Để lập trình hệ thống, ng-ời sử dụng đ-ợc cung cấp một phần mềm lập trình, ví dụ nh- cho các chíp PSoC của Cypress ng-ời lập trình phải có phần mềm PSoC Designer. Ngoài ra để cài đ-ợc ch-ơng trình điều khiển vào chíp thì ng-ời lập trình phải có một kit phát triển do hãng chế tạo chip cung cấp (hoặc một bộ nạp). Phần mềm thiết kế đ-ợc xây dựng trên cơ sở h-ớng đối t-ợng với cấu trúc module hóa. Mỗi khối chức năng là một module mềm. Việc lập cấu hình cho chíp nh- thế nào là tùy thuộc vào ng-ời lập trình thông qua một số th- viện chuẩn. Ng-ời lập trình thiết lập cấu hình trên chíp chỉ đơn giản bằng cách muốn chíp có những chức năng gì thi kéo chức năng đó và thả vào khối tài nguyên số hoặc t-ơng tự, hoặc cả hai tùy theo từng chức năng (Ph-ơng pháp lập trình kéo thả). Việc thiết lập ngắt trên chân nào, loại ngắt là gì, các chân vào ra đ-ợc hoạt động ở chế độ nh- thế nào đều tùy thuộc vào việc thiết lập của ng-ời lập trình khi thiết kế và lập trình cho PSoC. Với khả năng đặt cấu hình mạnh mẽ này, một thiết bị điều khiển, đo l-ờng có thể đ-ợc gói gọn trên một chip duy nhất. Chính vì lý do đó, hãng Cypress MicroSystems đã không gọi sản phẩm của mình là vi điều khiển (àC) nh- truyền thống, mà gọi là “thiết bị PSoC” (PSoC device), và họ hy vọng rằng, với khả năng đặt cấu hình mạnh mẽ, ng-ời sử dụng sẽ có đ-ợc những thiết bị điều khiển, những thiết bị đo có giá rẻ, kích th-ớc nhỏ gọn, và sản phẩm PSoC của họ sẽ thay thế đ-ợc các thiết bị dựa trên vi xử lý hoặc vi điều khiển đã có từ trước đến nay.

pdf62 trang | Chia sẻ: hoang10 | Lượt xem: 726 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Tìm hiểu Thiết bị PSoC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tài liệu về PSoC – Bản quyền thuộc Nguyễn Xuân Sơn – ĐKTĐ1 – K44 – ĐHBKHN Giới thiệu về PSoC PSoC là một từ viết tắt của cụm từ tiếng anh Programmable System on Chip, nghĩa là hệ thống khả trình trên một chíp. Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi đ−ợc cấu hình đơn giản bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chíp. Hơn nữa nó còn có thể kết nối t−ơng đối mềm dẻo các khối chức năng với nhau hoặc giữa các khối chức năng với các cổng vào ra. Chính vì vậy mà PSoC có thể thay thế cho rất nhiều chức năng nền của một số hệ thống cơ bản chỉ bằng một đơn chíp. Thành phần của chíp PSoC bao gồm các khối ngoại vi số và t−ơng tự có thể cấu hình đ−ợc, một bộ vi xử lý 8 bit, bộ nhớ ch−ơng trình (EEROM) có thể lập trình đ−ợc và bộ nhớ RAM khá lớn. Để lập trình hệ thống, ng−ời sử dụng đ−ợc cung cấp một phần mềm lập trình, ví dụ nh− cho các chíp PSoC của Cypress ng−ời lập trình phải có phần mềm PSoC Designer. Ngoài ra để cài đ−ợc ch−ơng trình điều khiển vào chíp thì ng−ời lập trình phải có một kit phát triển do hãng chế tạo chip cung cấp (hoặc một bộ nạp). Phần mềm thiết kế đ−ợc xây dựng trên cơ sở h−ớng đối t−ợng với cấu trúc module hóa. Mỗi khối chức năng là một module mềm. Việc lập cấu hình cho chíp nh− thế nào là tùy thuộc vào ng−ời lập trình thông qua một số th− viện chuẩn. Ng−ời lập trình thiết lập cấu hình trên chíp chỉ đơn giản bằng cách muốn chíp có những chức năng gì thi kéo chức năng đó và thả vào khối tài nguyên số hoặc t−ơng tự, hoặc cả hai tùy theo từng chức năng (Ph−ơng pháp lập trình kéo thả). Việc thiết lập ngắt trên chân nào, loại ngắt là gì, các chân vào ra đ−ợc hoạt động ở chế độ nh− thế nào đều tùy thuộc vào việc thiết lập của ng−ời lập trình khi thiết kế và lập trình cho PSoC. Với khả năng đặt cấu hình mạnh mẽ này, một thiết bị điều khiển, đo l−ờng có thể đ−ợc gói gọn trên một chip duy nhất. Chính vì lý do đó, hãng Cypress MicroSystems đã không gọi sản phẩm của mình là vi điều khiển (àC) nh− truyền thống, mà gọi là “thiết bị PSoC” (PSoC device), và họ hy vọng rằng, với khả năng đặt cấu hình mạnh mẽ, ng−ời sử dụng sẽ có đ−ợc những thiết bị điều khiển, những thiết bị đo có giá rẻ, kích th−ớc nhỏ gọn, và sản phẩm PSoC của họ sẽ thay thế đ−ợc các thiết bị dựa trên vi xử lý hoặc vi điều khiển đã có từ tr−ớc đến nay. Chíp PSoC (CY8C27xxx) cung cấp: • Bộ vi xử lý với cấu trúc Harvard. - Tốc độ của bộ vi xử lý lên đến 24 MHz - Lệnh nhân 8 bit x 8 bit, thanh ghi tích lũy là 32 bit - Hoạt động ở tốc độ cao mà năng l−ợng tiêu hao ít - Dải điện áp hoạt động từ 3.0 tới 5.25V - Điện áp hoạt động có thể giảm xuống 1.0 V sử dụng chế độ kích điện áp - Hoạt động trong dải nhiệt độ -400C đến 850C. • Các khối ngoại vi có thể đ−ợc sử dụng độc lập hoặc kết hợp ? 12 khối ngoại vi t−ơng tự có thể đ−ợc thiết lập để làm các nhiệm vụ: - Các bộ ADC lên tới 14 bit - Các bộ DAC lên tới 9 bit. - Các bộ khuếch đại có thể lập trình đ−ợc hệ số khuếch đại. - Các bộ lọc và các bộ so sánh có thể lập trình đ−ợc 49 Tài liệu PSoC – biên dịch từ Datasheet bởi Nguyễn Xuân Sơn ĐKTĐ1 – K44 - ĐHBKHN Hình 3-1 : Sơ đồ khối cấu trúc của PSoC (CY8C27000) 50 Tài liệu về PSoC – Bản quyền thuộc Nguyễn Xuân Sơn – ĐKTĐ1 – K44 – ĐHBKHN ? 8 khối ngoại vi số có thể đ−ợc thiết lập để làm các nhiệm vụ: - Các bộ định thời đa chức năng, đếm sự kiện, đồng hồ thời gian thực, bộ điều chế độ rộng xung có và không có dải an toàn (deadband) - Các modun kiểm tra lỗi (CRC modunles) - Hai bộ truyền thông nối tiếp không đồng bộ hai chiều - Các bộ truyền thông SPI Master hoặc Slave có thể cấu hình đ−ợc - Có thể kết nối với tất cả các chân vào ra. • Bộ nhớ linh hoạt trên chíp - Không gian bộ nhớ ch−ơng trình Flash từ 4K đến 16K, phụ thuộc vào từng loại chíp với chu kỳ ghi xóa cho bộ nhớ Flash là 50.000 lần - Không gian bộ nhớ RAM là 256 byte - Chíp có thể lập trình thông qua chuẩn nối tiếp (ISSP) - Bộ nhớ Flash có thể đ−ợc nâng cấp từng phần - Chế độ bảo mật đa năng, tin cậy - Có thể tạo đ−ợc không gian bộ nhớ Flash trên chíp lên tới 2,304 byte • Có thể lập trình đ−ợc cấu hình cho từng chân của chíp - Các chân vào ra ba trạng thái sử dụng Trigger Schmitt - Đầu ra logic có thể cung cấp dòng 25mA với điện trở treo cao hoặc thấp bên trong - Thay đổi đ−ợc ngắt trên từng chân - Đ−ờng ra t−ơng tự có thể cung cấp dòng tới 40mA - Đ−ờng ra đa chức năng có từ 6 đến 44 tùy thuộc vào từng loại chíp • Xung nhịp của chíp có thể lập trình đ−ợc - Bộ tạo dao động 24/48MHz ở bên trong (độ chính xác là 2,5%, không cần thiết bị ngoài) - Có thể lựa chọn bộ dao động ngoài lên tới 24MHz - Bộ dao động thạch anh 32,768 kHz bên trong - Bộ tạo dao động tốc độ thấp bên trong sử dụng cho Watchdog và Sleep • Ngoại vi đ−ợc thiết lập sẵn - Bộ định thời Watchdog và Sleep phục vụ chế độ an toàn và chế độ nghỉ - Module truyền thông I2C Master và I2C Slave tốc độ lên tới 400kHz - Module phát hiện điện áp thấp đ−ợc cấu hình bởi ng−ời sử dụng • Công cụ phát triển - Phần mềm phát triển miễn phí (PSoCTM Designer) - Bộ lập trình và bộ mô phỏng với đầy đủ tính năng - Mô phỏng ở tốc độ cao 51 Tài liệu PSoC – biên dịch từ Datasheet bởi Nguyễn Xuân Sơn ĐKTĐ1 – K44 - ĐHBKHN Ch−ơng 4: Cấu trúc Vi xử lý 1. Bộ vi xử lý – CPU 1.1. Giới thiệu chung Các họ chíp của PSoC dựa trên bộ vi xử lý mạnh mẽ 8 bit với cấu trúc Harvard (Cấu trúc Harvard là cấu trúc mà bus dữ liệu, bus địa chỉ và tín hiệu điều khiển của bộ nhớ ch−ơng trình và bộ nhớ dữ liệu độc lập với nhau). Nó có 5 thanh ghi điều khiển hoạt động chính của CPU. Những thanh ghi này bị tác động bởi những lệnh khác nhau. Ng−ời sử dụng không thể truy cập trực tiếp vào các thanh ghi này thông qua không gian bộ nhớ các thanh ghi. Các thanh ghi của CPU đ−ợc cho trong bảng sau: Bảng 4-1: Các thanh ghi của CPU Thanh ghi Mã gợi nhớ Flags (thanh ghi cờ) CPU_F Program Counter (thanh ghi đếm ch−ơng trình) CPU_PC Accumulator (thanh ghi chứa) CPU_A Stack Pointer (thanh ghi con trỏ Stack) CPU_SP Index (thanh ghi chỉ số) CPU_X Bộ đếm ch−ơng trình là một thanh ghi16 bit (CPU_PC), nó cho phép ng−ời lập trình truy cập trực tiếp vào toàn bộ không gian bộ nhớ ch−ơng trình trên chíp (16 Kbytes đối với thành viên lớn nhất). Đây là một không gian nhớ liên tục và không cần phải tạo thành trang (no paging). Thanh ghi chứa (Accumulator) là một thanh ghi đa mục đích, nó th−ờng đ−ợc sử dụng để l−u giữ kết quả của bất cứ một lệnh nào sử dụng chế độ địa chỉ nguồn. Thanh ghi chỉ số đ−ợc dùng để l−u giữ giá trị Offset (độ lệch) trong chế độ địa chỉ chỉ số. Tiêu biểu là nó đ−ợc dùng để địa chỉ một khối dữ liệu bên trong không gian nhớ dữ liệu. Thanh ghi Con trỏ Stack (Stack Pointer) l−u giữ địa chỉ của đỉnh Stack trong không gian nhớ dữ liệu. Nó bị tác động bởi những lệnh nh− PUSH, POP, LCALL, RETI và RET. Nói chung là tất cả những lệnh có liên quan đến stack của phần mềm. Nó cũng có thể bị ảnh h−ởng bởi lệnh SWAP và lệnh ADD. Thanh ghi cờ (Flags) có ba bit trạng thái: bit cờ không - Zero Flag bit[1]; bit cờ nhớ -Carry Flag bit[2]; bit Supervisory State[3]. Bit cho phép ngắt toàn cục – Global Interrupt enable bit[0] đ−ợc dùng để cho phép hoặc cấm toàn bộ các ngắt. Các cờ trên bị ảnh h−ởng bởi những lệnh toán học, những lệnh logic. v.v 1.2. Thanh ghi của CPU 1.2.1. Thanh ghi cờ (Flags Register) Bảng 4-2: Thanh ghi cờ (CPU_F) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 1 0 Read/Write -- -- -- RW R RW RW RW Bit Name Reseved Reseved Reseved XIO Super Carry Zero Global IE Bit 7: Reserved (ch−a đ−ợc định nghĩa) Bit 6: Reserved Bit 5: Reserved Bit 4: XIO - đ−ợc đặt bởi ng−ời sử dụng cho phép lựa chọn giữa các dãy thanh ghi 52 Tài liệu về PSoC – Bản quyền thuộc Nguyễn Xuân Sơn – ĐKTĐ1 – K44 – ĐHBKHN 0 = Bank 0 1 = Bank 1 Bit 3: Reserved Bit 2: Carry - đ−ợc đặt bởi CPU để chỉ rõ toán tử trong phép toán logic hoặc toán học tr−ớc đó có nhớ hay không 0 = No Carry (không có nhớ) 1 = Carry (có nhớ) Bit 1: Zero - đ−ợc đặt bởi CPU để chỉ rõ toán tử trong phép toán logic hoặc toán học tr−ớc đó có bằng không hay không. 0 = Not Equal to Zero (không bằng không) 1 = Equal to Zero (bằng không) Bit 0: Global IE – Quyết định toàn bộ các ngắt là cho phép hay bị cấm 0 = Disabled (cấm) 1 = Enabled (cho phép) 1.2.2. Thanh ghi chứa Bảng 4-3: Thanh ghi chứa (CPU_A) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 Read/Write System1 System1 System1 System1 System1 System1 System1 System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit dữ liệu l−u giữ kết quả của bất cứ một lệnh toán học/logic sử dụng chế độ địa chỉ nguồn Chú ý: POR (Power on reset): Trạng thái của bít sau khi reset nguồn. System1: do hệ thống điều chỉnh, ng−ời dùng không thể thay đổi trực tiếp đ−ợc giá trị của những bit này 1.2.3. Thanh ghi chỉ số Bảng 4-4: Thanh ghi chỉ số (CPU_X) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 Read/Write System1 System1 System1 System1 System1 System1 System1 System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit dữ liệu l−u giữ chỉ số cho bất cứ một lệnh nào sử dụng chế độ địa chỉ chỉ số 1.2.4. Thanh ghi con trỏ Stack Bảng 4-5: Thanh ghi con trỏ Stack (CPU_SP) Bit # 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 Read/Write System1 System1 System1 System1 System1 System1 System1 System1 Bit Name Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] Bit [7:0]: 8 bit dữ liệu l−u giữ giá trị con trỏ stack hiện thời (trỏ vào đỉnh của stack) 1.2.5. Thanh ghi bộ đếm ch−ơng trình Bảng 4-6: Thanh ghi bộ đếm ch−ơng trình (CPU_PC) Bit# 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 POR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Read/ write 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Bit Name Data [15] Data [14] Data [13] Data [12] Data [11] Data [10] Data [9] Data [8] Data [7] Data [6] Data [5] Data [4] Data [3] Data [2] Data [1] Data [0] Bit[15:0]: 16 bit Dữ liệu là byte thấp và byte cao của bộ đếm ch−ơng trình 53 Tài liệu PSoC – biên dịch từ Datasheet bởi Nguyễn Xuân Sơn ĐKTĐ1 – K44 - ĐHBKHN Hình 4-1 : Cấu trúc liên kết của CPU với bộ nhớ (cấu trúc Harvard) 1.3. Định dạng của lệnh 1.3.1. Lệnh 1 byte Lệnh 1 byte là lệnh không dùng địa chỉ hay dữ liệu nh− toán hạng. lệnh 1 byte sử dụng một mã lệnh 8 bit ví dụ nh− RET,ASR,INC,DEC Bảng 4-7 : Dạng lệnh 1 byte Byte 0 8- bit opcode 1.3.2. Lệnh 2 byte Lệnh 2 byte là lệnh dùng duy nhất một toán hạng là dữ liệu hay địa chỉ. Lệnh 2 byte sử dụng byte đầu tiên để chứa mã lệnh, byte thứ hai để chứa dữ liệu hoặc địa chỉ. Hoặc nó sử dụng 4 bit đầu cho mã lệnh và 12 bit sau cho địa chỉ. Bảng 4-8 : Dạng lệnh 2 byte Byte 0 Byte 1 4-Bit opcode 12-bit relative address 8-Bit opcode 8-bit data 8-Bit opcode 8-bit address 1.3.3. Lệnh 3 byte 54 Tài liệu về PSoC – Bản quyền thuộc Nguyễn Xuân Sơn – ĐKTĐ1 – K44 – ĐHBKHN Lệnh loại này sử dụng 3 byte bởi vì nó đ−ợc sử dụng để di chuyển dữ liệu giữa hai địa chỉ trong không gian địa chỉ mà ng−ời sử dụng có thể truy nhập. Hoặc nó dùng để l−u giữ một giá trị địa chỉ tuyệt đối 16 bit trong các lệnh LCALL và LJMP. Bảng 4-9 : Dạng lệnh 3 byte Byte 0 Byte 1 Byte 2 8-Bit opcode 16-bit address (MSB,LSB) 8-Bit opcode 8-bit data 8-bit data 8-Bit opcode 8-bit address 8-bit address 1.4. Các chế độ địa chỉ trong PSoC 1.4.1. Chế độ địa chỉ nguồn tức thời (Source Immediate) Những lệnh sử dụng chế độ địa chỉ này có giá trị nguồn đ−ợc l−u giữ trong toán hạng 1 của lệnh, kết quả đ−ợc l−u giữ trong thanh ghi A, thanh ghi F, thanh ghi SP hay thanh ghi X đ−ợc chỉ rõ trong lệnh. Lệnh sử dụng chế độ địa chỉ này có độ dài là 2 byte. Bảng 4-10 : Chế độ địa chỉ nguồn tức thời Opcode Operand 1 Instruction Inmediate Value Vídụ: Mã nguồn Mã máy Chú thích ADD A,7 01 07 Giá trị tức thời là 7 đ−ợc cộng vào thanh chứa, kết quả đ−ợc l−u vào thanh chứa MOV X,8 57 08 Giá trị tức thời là 8 đ−ợc chuyển vào thanh ghi X AND F,9 70 09 Giá trị tức thời là 9 đ−ợc AND với giá trị trong thanh ghi F, kết quả của phép AND đ−ợc đặt trong thanh ghi F 1.4.2. Chế độ địa chỉ nguồn trực tiếp (Source Direct) Trong chế độ này thì địa chỉ nguồn đ−ợc l−u giữ trong toán hạng 1 của lệnh. Trong suốt quá trình thi hành lệnh thì địa chỉ đ−ợc dùng để lấy giá trị nguồn từ RAM hoặc từ không gian địa chỉ thanh ghi. Kết quả đ−ợc chỉ rõ trong lệnh là đặt vào thanh ghi X hay thanh ghi A. Tất cả những lệnh sử dụng chế độ địa chỉ trực tiếp đều là lệnh có độ dài 2 byte. Bảng 4-11 : Chế độ địa chỉ nguồn trực tiếp Opcode Operand 1 Instruction Source Address Ví dụ: Mã nguồn Mã máy Chú thích ADD A,[7] 02 07 Giá trị trong bộ nhớ tại địa chỉ 7 đ−ợc cộng vào thanh chứa kết quả lại đ−ợc l−u giữ trong thanh chứa MOV X, REG[8] 5D 08 Giá trị trong không gian thanh ghi tại địa chỉ 8 đ−ợc chuyển vào thanh chứa 1.4.3. Chế độ địa chỉ nguồn chỉ số (Source Indexed) Trong chế độ này thì dữ liệu của nguồn đ−ợc truy xuất trong RAM hoặc không gian địa chỉ thanh ghi thông qua địa chỉ là giá trị hiện thời của thanh ghi X cộng với một chỉ số. Kết quả đ−ợc chỉ rõ trong lệnh là l−u giữ trong thanh ghi X hay thanh ghi A. Lệnh có độ dài là 2 byte Bảng 4-12 : Chế độ địa chỉ nguồn chỉ số Opcode Operand 1 55 Tài liệu PSoC – biên dịch từ Datasheet bởi Nguyễn Xuân Sơn ĐKTĐ1 – K44 - ĐHBKHN Instruction Source Index Ví dụ: Mã nguồn Mã máy Chú thích ADD A,[X+7] 03 07 Giá trị trong bộ nhớ tại địa chỉ X+7 đ−ợc cộng vào thanh chứa, kết quả lại đ−ợc l−u vào thanh chứa MOV X,[X+8] 59 08 Giá trị trong bộ nhớ tại địa chỉ X+8 đ−ợc di chuyển vào thanh ghi X 1.4.4. Chế độ địa chỉ đích trực tiếp (Destination Direct) Nh−ng lệnh thuộc chế độ địa chỉ này có địa chỉ đích đ−ợc l−u trữ trong mã máy của lệnh, địa chỉ nguồn đ−ợc chỉ rõ trong lệnh là thanh ghi A hay X. Tất cả những lệnh sử dụng chế độ địa chỉ này đều là lệnh 2 byte. Bảng 4-13 : Chế độ địa chỉ đích trực tiếp Opcode Operand 1 Instruction Destination Address Ví dụ: Mã nguồn Mã máy Chú thích ADD [7], A 04 07 Giá trị trong thanh chứa đ−ợc cộng với giá trị trong bộ nhớ tại địa chỉ 7, kết quả lại đ−ợc l−u vào bộ nhớ tại địa chỉ 7. Giá trị thanh chứa không đổi MOV REG[8], A 60 08 Giá trị trong thanh chứa đ−ợc di chuyển vào không gian thanh ghi tại địa chỉ 8. Giá trị thanh chứa không đổi. 1.4.5. Chế độ địa chỉ đích chỉ số (Destination Indexed) Những lệnh thuộc chế độ địa chỉ này có đích đ−ợc xác định bằng cách lấy giá trị của thanh ghi X cộng với một chỉ số làm địa chỉ để truy xuất vào bộ nhớ, nguồn đ−ợc xác định trong lệnh là thanh ghi A hoặc một giá trị tức thời. Những lệnh sử dụng chế độ địa chỉ này đều là lệnh có độ dài 2 byte. Bảng 4-14 : Chế độ địa chỉ đích chỉ số Opcode Operand 1 Instruction Destination Index Ví dụ: Mã nguồn Mã máy Chú thích ADD [X+7], A 05 07 Giá trị trong bộ nhớ tại địa chỉ X+7 đ−ợc cộng vào thanh chứa, kết quả đ−ợc l−u vào bộ nhớ tại địa chỉ X+7, thanh chứa không thay đổi 1.4.6. Chế độ địa chỉ đích trực tiếp, nguồn tức thời tức thời (Destination Direct, Source Immediate) Những lệnh thuộc chế độ địa chỉ này có địa chỉ của đích đ−ợc l−u giữ trong toán hạng 1 của lệnh. Giá trị của nguồn đ−ợc l−u trữ trong toán hạng 2 của lệnh. Tất cả những lệnh thuộc chế độ địa chỉ này đều là lệnh có độ dài 3 byte. Bảng 4-15 : Chế độ địa chỉ đích trực tiếp, nguồn tức thời Opcode Operand 1 Operand 2 Instruction Destination Address Immediate Value 56 Tài liệu về PSoC – Bản quyền thuộc Nguyễn Xuân Sơn – ĐKTĐ1 – K44 – ĐHBKHN Ví dụ: Mã nguồn Mã máy Chú thích ADD [7],5 06 07 05 Giá trị trong bộ nhớ tại địa chỉ 7 đ−ợc cộng với giá trị tức thời 5, kết quả lại đ−ợc l−u vào bộ nhớ tại địa chỉ 7. MOV REG[8],6 62 08 06 Giá trị tức thời 6 đ−ợc di chuyển vào không gian thanh ghi tại địa chỉ 8 1.4.7. Chế độ địa chỉ đích chỉ số, nguồn tức thời (Destination Indexed, Source Immediate) Trong chế độ này thì giá trị của thanh ghi X cộng với một chỉ số đ−ợc lấy làm địa chỉ để lấy dữ liệu trong bộ nhớ. Còn dữ liệu nguồn là một số trực tiếp. Tất cả những lệnh thuộc chế độ địa chỉ này đều là lệnh 3 byte. Bảng 4-16 : Chế độ địa chỉ đích chỉ số, nguồn tức thời Opcode Operand 1 Operand 2 Instruction Destination Index Immediate Value Ví dụ: Mã nguồn Mã máy Chú thích ADD [X+7],5 07 07 05 Giá trị trong bộ nhớ tại địa chỉ X+7 đ−ợc cộng với giá trị tức thời 5, kết quả lại đ−ợc l−u vào bộ nhớ tại địa chỉ X+7. MOV REG[X+8],6 63 08 06 Giá trị tức thời 6 đ−ợc di chuyển vào không gian thanh ghi tại địa chỉ X+8 1.4.8. Chế độ địa chỉ đích trực tiếp, nguồn trực tiếp (Destination Direct, Source Direct) Chỉ có duy nhất một lệnh sử dụng chế độ địa chỉ này, địa chỉ của đích đ−ợc l−u giữ trong toán hạng 1 của lệnh còn địa chỉ của nguồn đ−ợc l−u giữ trong toán hạng 2 của lệnh. Tất cả những lệnh sử dụng chế độ địa chỉ này đều là lệnh có độ dài 3 byte. Bảng 4-17: Chế độ địa chỉ đích trực tiếp, nguồn trực tiếp Opcode Operand 1 Operand 2 Instruction Destination Address Source Address Ví dụ: Mã nguồn Mã máy Chú thích MOV [7],[8] 5F 07 08 Giá trị trong bộ nhớ tại địa chỉ 8 đ−ợc di chuyển vào bộ nhớ tại địa chỉ 7. 1.4.9. Chế độ địa chỉ sử dụng con trỏ tự động tăng địa chỉ • Con trỏ là toán hạng nguồn (Source Indirect Post Increment) Chỉ có duy nhất một lệnh sử dụng chế độ địa chỉ này, địa chỉ nguồn l−u giữ trong toán hạng 1 hoạt động nh− địa chỉ của một con trỏ. Trong suốt quá trình lệnh thi hành thì giá trị của con trỏ sẽ quyết định xem dữ liệu nào trong RAM sẽ đ−ợc đọc. Sau khi đọc xong dữ liệu thì giá trị của con trỏ đ−ợc tăng lên 1. Bảng 4-18 : Chế độ địa chỉ Source Indiect Post Increment Opcode Operand 1 Instruction Source Address Pointer Ví dụ: Mã nguồn Mã máy Chú thích MVI A,[8] 3E 08 Giá trị trong bộ nhớ tại địa chỉ 8 trỏ tới một ô nhớ trong RAM. Giá trị tại ô nhớ con trỏ trỏ tới sẽ đ−ợc di chuyển vào thanh chứa. Sau đó, giá trị trong bộ nhớ tại địa chỉ 8 đ−ợc tăng lên. • Con trỏ là toán hạng đích (Destination Indirect Post Increment) 57 Tài liệu PSoC – biên dịch từ Datasheet bởi Nguyễn Xuân Sơn ĐKTĐ1 – K44 - ĐHBKHN Chỉ có duy nhất một lệnh sử dụng chế độ địa chỉ này, địa chỉ đích l−u giữ trong toán hạng 1 hoạt động nh− địa chỉ của một con trỏ. Trong suốt quá trình lệnh thi hành thì giá trị của con trỏ sẽ quyết định xem dữ liệu nào trong RAM sẽ đ−ợc đọc. Sau khi đọc xong dữ liệu thì giá trị của con trỏ đ−ợc tăng lên 1. Bảng 4-19: Chế độ Destination Indirect Post Increment Opcode Operand 1 Instruction Destination Address Pointer Ví dụ: Mã nguồn Mã máy Chú thích MVI [8],A 3F 08 Giá trị trong bộ nhớ tại địa chỉ 8 trỏ tới một ô nhớ trong RAM. Giá trị trong thanh chứa sẽ đ−ợc di chuyển tới vị trí ô nhớ mà con trỏ trỏ tới. Sau đó, giá trị trong bộ nhớ tại địa chỉ 8 đ−ợc tăng lên. Nhận xét: Nh− vậy ta thấy các chế độ địa chỉ trong PSoC cũng t−ơng đối dễ hiểu, tóm lại nó chỉ bao gồm: - Các dữ liệu tức thời là các con số: Ví dụ: 5 , 6 , 7 , 8 - Các dữ liệu trực tiếp đ−ợc xác định thông qua các địa chỉ. Ví dụ: [7] , [8] - Các dữ liệu đ−ợc xác định thông qua chỉ số, nó là dữ liệu ở địa chỉ [X+chỉ số)]: ví dụ: [X+5], [X+6], . - Các dữ liệu đ−ợc xác định gián tiếp thông qua con trỏ nh− trong hai chế độ địa chỉ cuối. Đây cũng là hai chế độ địa chỉ mà ít loại Vi xử lý có đ−ợc. - Ta có thể nhận thấy rằng những lệnh lấy thanh ghi A hoặc X nh− là một phần của toán hạng đều là lệnh 2 byte (xem lại các ví dụ trên). Sở dĩ nh− vậy là vì trong mã lệnh đã đ−ợc định nghĩa sẵn là làm việc với thanh ghi nào. Chẳng hạn nh− trong ví dụ của mục 2.4.1 thì ta có thể thấy là mã máy gồm 2 byte, byte đầu tiên là mã lệnh của lệnh cộng vào thanh chứa, byte thứ hai là giá trị đ−ợc cộng vào thanh chứa. Nh− vậy, với cách định nghĩa trên thì những lệnh nh− vậy sẽ tiết kiệm đ−ợc c
Tài liệu liên quan