Trong giai đoạn này các phần cứng khác kể cả bộ nhớ thường không được tích hợp trên chíp mà phải ghép nối thêm bên ngoài, các phần cứng này được gọi là phần ngoại vi Peri pherals.Vi điều
Trang 1CHƯƠNG I
Giáo viên : ĐẶNG VĂN HIẾU
Trang 2Vi xử lý (VXL): là thuật ngữ chung để đề cập đến kỹ thuật ứng dụng các công nghệ vi điện tử, công nghệ tích hợp và xử lý theo chương trình với các chíp (vi xử lý) được chế tạo chỉ tích hợp những phần cứng thiết yếu như CPU cùng với các giao tiếp với CPU và các phần cứng khác Trong giai đoạn này các phần cứng khác (kể cả bộ nhớ) thường không được tích hợp trên chíp mà phải ghép nối thêm bên ngoài, các phần cứng này được gọi là phần ngoại vi (Peri pherals).
Vi điều khiển (VĐK): Là thuật ngữ dùng để chỉ các chíp xử lý được tích hợp các ngoại vi lên trên cùng một IC, việc tích hợp thêm các ngoại vi vào trong cùng một IC với CPU tạo ra nhiều lợi ích như làm giảm thiểu các ghép nối bên ngoài làm giảm thiểu các linh kiện điện tử phụ, giảm chi phí cho thiết
kế hệ thống, đơn giản hóa việc thiết kế hệ thống, nâng cao hiệu xuất và tính
Trang 3Phương pháp lựa chọn một bộ VĐK: Có 4 bộ vi điều khiển 8 bit chính Đó
là 6811 của Motorola, 8051 của Intel z8 của Xilog và Pic 16 × của Microchip Technology Mỗi một kiểu loại trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nếu chúng đều không tương thích lẫn nhau Cũng có những bộ vi điều khiển 16 bit và 32 bit được sản xuất bởi các hãng sản xuất chíp khác
nhau Với tất cả những bộ vi điều khiển khác nhau như thế này thì lấy gì làm tiêu chuẩn lựa chọn mà các nhà thiết kế phải cân nhắc? Có ba tiêu chuẩn để lựa chọn các bộ vi điều khiển là:
1) Đáp ứng nhu cầu tính toán của bài toán một cách hiệu quả về mặt giá thành và đầy đủ chức năng có thể nhìn thấy được (khả dĩ)
2) Có sẵn các công cụ phát triển phần mềm chẳng hạn như các trình biên dịch, trình hợp ngữ và gỡ rối.
3) Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy.
Trang 4nó phải đáp ứng nhu cầu bài toán về một mặt công suất tính toán và giá thành hiệu quả Trong khi phân tích các nhu cầu của một dự án dựa trên bộ vi điều khiển chúng ta trước hết phải biết là bộ vi điều khiển nào 8 bit, 16 bit hay 32 bit có thể đáp ứng tốt nhất nhu cầu tính toán của bài toán mộ tcách hiệu quả nhất? Những tiêu chuẩn được đưa ra để cân nhắc là:
- Tốc độ: Tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu.
- Kiểu đóng vỏ: Đó là kíểu 40 chân DIP hay QFP hay là kiểu đóng vỏ khác (DIP -đóng vỏ theo 2 hàng chân QFP là đóng vỏ vuông dẹt)?
- Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với những sản phẩm dùng pin, ắc quy.
- Dung lượng bộ nhớ RAM và ROM trên chíp.
- Số chân vào - ra và bộ định thời trên chíp
-Khả năng dễ dàng nâng cấp cho hiệu suất cao hoặc giảm công suất tiêu thụ.
- Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành cuối
Trang 52) Tiêu chuẩn thứ hai trong lựa chọn một bộ vi điều khiển là khả năng phát
triển các sản phẩm xung quanh nó dễ dàng như thế nào? Các cân nhắc chủ yếu bao gồm khả năng có sẵn trình lượng ngữ, gỡ rối, trình biên dịch ngôn ngữ C hiệu quả về mã nguồn, trình mô phỏng hỗ trợ kỹ thuật và khả năng sử dụng trong nhà và ngoài môi trường Trong nhiều trường hợp sự hỗ trợ nhà cung cấp thứ ba (nghĩa là nhà cung cấp khác không phải là hãng sản xuất chíp) cho chíp cũng tốt như, nếu không được tốt hơn, sự hỗ trợ từ nhà sản xuất chíp.
Trang 63) Tiêu chuẩn thứ ba trong lựa chọn một bộ vi điều khiển là khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương lai Đối với một số nhà
Trang 7bộ vi điều khiển được gọi là 8051 Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý 8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ dạng biến thế nào của 8051 với các tốc độ khác nhau và dung lượng ROM trên chíp khác nhau nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh Điều này có nghĩa là nếu ta viết chương trình của mình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào.
Trang 8Các phiên bản của 8051: Bộ vi điều khiển 8051 các rất nhiều phiên bản với
tên gọi, kí hiệu khác nhau tùy thuộc vào kiểu bộ nhớ chương trình, công nghệ chế tạo và tần số làm việc.
VD: Phiên bản 8051 có bộ nhớ UV-PROM được ký hiệu là 8751 Phiên bản Flash-ROM cũng được bán với nhiều hãng khác nhau như của Atmel với tên gọi AT89C51, còn phiên bản NV-RAM của 8051 của Dalas
Semiconductor cung cấp thì được gọi là DS5000 Ngoài ra còn có phiên bản OTP (lập trình được 1 lần) cũng được sản xuất bởi rất nhiều hãng.
Trang 9Bộ vi điểu khiển 8751: Chíp 8751 chỉ có 4K byte bộ nhớ UV-EPROM trên chíp Để sử dụng chíp này để phát triển yêu cầu truy cập đến một bộ đốt
PROM cũng như bộ xoá EPROM để xoá nội dung của bộ nhớ
UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó Do một thực tế là ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xoá
8751 trước khi nó có thể được lập trình trở lại Điều này đã dẫn đến nhiều nhà
sản xuất giới thiệu các phiên bản Flash Rom và UV-RAM của 8051 Ngoài ra còn có nhiều phiên bản với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau.
Trang 10Bộ vi điều khiển AT8951 của Atmel: Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash Điều này là lý tưởng đối với những phát triển
Flash ta phải xoá toàn bộ nội dung của ROM nhằm để lập trình lại cho nó Việc xoá bộ nhớ Flash được thực hiện bởi chính bộ đốt PROM và đây chính là
lý do tại sao lại không cần đến bộ xoá Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiên cứu một phiên bản của AT 89C51 có thể
được lập trình qua cổng truyền thông COM của máy tính IBM PC
Trang 11Các phiên bản của 8051 từ Atmel (Flash ROM):
Chữ C trong ký hiệu AT89C51 là CMOS.
Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản
phẩm trên đây Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT 89C51 – 12PC là ký hiệu cho CMOS “12” ký hiệu cho 12 MHZ và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là ký hiệu cho thương mại (ngược với chữ “M” là quân sự )
Trang 131 Đơn vị xử lý trung tâm CPU:
CPU có cấu tạo gồm có đơn vị xử lý số học và lôgic (ALU), các thanh ghi, các khối lôgic và các mạch giao tiếp.
Chức năng của CPU là tiến hành các thao tác tính toán xử lý, đưa ra các tín hiệu địa chỉ, dữ liệu và điều khiển nhằm thực hiện một nhiệm vụ nào
đó do người lập trình đưa ra thông qua các lệnh (Instructions).
Trang 142 Bộ nhớ:
Nhìn chung có hai loại bộ nhớ là bộ nhớ chương trình và bộ nhớ dữ liệu
Bộ nhớ chương trình dùng để chứa mã chương trình hướng dẫn CPU thực
hiện
một nhiệm vụ nào đó Thông thường thì bộ nhớ chương trình là các loại bộ nhớ “không bay hơi” (non-volatile), nghĩa là không bị mất nội dung chứa bên trong khi ngừng cung cấp nguồn nuôi Có thể kể ra một số bộ nhớ thuộc loại này như: ROM, PROM, EPROM, EEPROM, Flash Bộ nhớ dữ liệu là bộ nhớ dùng để chứa dữ liệu (bao gồm các tham số, các biến tạm thời…) Tùy thuộc loại dữ liệu mà bộ nhớ loại này có thể là loại “không bay hơi” hoặc “bay hơi” (mất dữ liệu khi cắt nguồn nuôi) Loại “bay hơi” thường thấylà các bộ nhớ
Trang 153 Cổng vào/ra song song:
Đây là các đường tín hiệu được nối với một số chân của IC dùng để giao tiếp với thế giới bên ngoài IC Giao tiếp ở đây là đưa điện áp ra hoặc đọc vào giá trị điện áp tại chân cổng Các giá trị điện áp đưa ra hay đọc vào chỉ có thể được biểu diễn bởi một trong hai giá trị lôgic (0 hoặc 1) Trong kỹ thuật vi xử
lý, người ta thường dùng quy ước lôgic dương: giá trị lôgic 0 ứng với mức
điện áp thấp xấp xỉ 0VDC, giá trị lôgic 1 ứng với mức điện áp cao xấp xỉ
+5VDC Tùy loại vi xử lý mà “khoảng xấp xỉ” đó là khác nhau nhưng nhìn chung là tương thích với mức lôgic TTL Mỗi cổng vào/ra song song
thường gồm 08 đường vào/ra khác nhau và gọi là các cổng 08 bit Các đường tín hiệu vào/ra của các cổng và thuộc cùng một cổng là độc lập với nhau Điều
đó có nghĩa là ta có thể đưa ra hay đọc vào các giá trị lôgic khác nhau đối với từng chân cổng (từng đường tín hiệu vào/ra) Một điều cần chú ý nữa đối với các cổng vào/ra đó là chúng có thể được tích hợp thêm (nói đúng hơn là kiêm thêm) các chức năng đặc biệt liên quan đến các ngoại vi khác.
Trang 164 Cổng vào/ra nối tiếp:
Khác với cổng song song, với cổng nối tiếp các bit dữ liệu được truyền lần lượt trên cùng một đường tín hiệu thay vì truyền cùng một lúc trên các đường tín hiệu khác nhau Thông thường thì việc truyền dữ liệu bằng cổng nối tiếp phải tuân theo một cơ chế, một giao thức hay một nguyên tắc nhất định Có thể
kể ra một số giao thức như SPI, I2C, SCI…
Trang 17Cổng nối tiếp có 02 kiểu truyền dữ liệu chính:
Truyền đồng bộ (synchronous): thiết bị truyền và thiết bị nhận đều dùng
chung
một xung nhịp (clock).
Truyền dị bộ (asynchronous): thiết bị truyền và thiết bị nhận sử dụng hai
nguồn xung nhịp riêng Tuy nhiên hai nguồn xung nhịp này không được khác nhau quá nhiều.
Xung nhịp là yếu tố không thể thiếu trong truyền dữ liệu nối tiếp và nó có vai trò xác định giá trị của bit dữ liệu (hay nói đúng hơn là xác định thời
điểm
đọc mức lôgic trên đường truyền dữ liệu).
Cổng nối tiếp có thể có một trong các tính năng sau:
Đơn công: thiết bị chỉ có thể hoặc truyền hoặc nhận dữ liệu.
Bán song công: thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời điểm
chỉ có thể làm một trong hai việc đó.
Song công: thiết bị có thể truyền và nhận dữ liệu đồng thời.
Trang 18Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản: đếm các xung nhịp Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trị của
bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) hay giảm
đi 01 đơn vị (trong chế độ đếm lùi/đếm xuống).
Xung nhịp đưa vào đếm có thể là một trong hai loại:
Xung nhịp bên trong IC Đó là xung nhịp được tạo ra nhờ kết hợp mạch dao
động bên trong IC và các linh kiện phụ bên ngoài nối với IC Ta có thể ví đó là
“nhịp tim” để toàn bộ các phần cứng bên trong vi xử lý (bao gồm cả CPU và các ngoại vi) có thể hoạt động được Trong trường hợp sử dụng xung nhịp loại này, người ta gọi là các bộ định thời (timers) Do xung nhịp bên loại này
thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chính xác.
Trang 19Xung nhịp bên ngoài IC Đó là các tín hiệu lôgic thay đổi liên tục giữa 02 mức 0-1và không nhất thiết phải là đều đặn Trong trường hợp này người ta gọi là các bộ đếm (counters) Ứng dụng phổ biến của các bộ đếm là đếm các sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi… Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn”
(overflow) Nó được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó
có thể biểu diễn và quaytrở về giá trị 0 Với bộ đếm 8 bit, giá trị tối đa là 255
và là 65535 với bộ đếm 16bit.
Trang 20Ngoài các phần cứng nêu trên còn phải kể đến một khối lôgic khác là khối
giao tiếp bus Khối này có chức năng ghép nối giữa các bus bên trong chip và
các chân đưa ra ngoài chip Mục đích của việc đưa các tín hiệu địa chỉ, dữ liệu
và điều khiển ra ngoài là nhằm mở rộng khả năng phối ghép thêm của vi
xử lý với các ngoại vi khác (chủ yếu là các bộ nhớ ngoài) ngoài các ngoại vi được tích hợp trên IC Thông thường thì số lượng các đường tín hiệu là giữ nguyên khi đưa ra ngoài chip, tuy nhiên trong một số trường hợp số lượng
các đường tín hiệu có thể nhỏ hơn số lượng thực bên trong (ví dụ như trường hợp của vi xử lý 8088, bus dữ liệu bên trong là 16 bit nhưng đưa ra ngoài chỉ
có 8 bit).
Khi đưa ra ngoài, các tín hiệu địa chỉ và dữ liệu có thể được ghép với nhau (cùng sử dụng chung một số chân nào đó) hoặc được tách riêng (tín hiệu địa
Trang 21Người ta thường “dồn kênh” (multiplex), tức là ghép chức năng, giữa
bus địa chỉ và bus dữ liệu để giảm thiểu số chân cần thiết Trong trường hợp này, tín hiệu địa chỉ sẽ xuất hiện trước, sau đó là tín hiệu dữ liệu trên cùng một
tập hợp các đường tín hiệu Để tách được 2 loại tín hiệu đó thì nhà sản xuất cung cấp cho người sử dụng một đường tín hiệu điều khiển có tên là tín hiệu chốt địa chỉ (thường ký hiệu là ALE) Tín hiệu này sẽ tích cực khi tín hiệu địa chỉ xuất hiện và không tích cực khi tín hiệu dữ liệu xuất hiện trên bus Các IC thích hợp với việc tách tín hiệu địa chỉ và dữ liệu là các IC thuộc họ
74xx373/374 hoặc 74xx573/574.
Trang 28Chức năng các chân: Nhìn vào sơ đồ bố trí chân của 8051 Ta thấy có 32 chân dành cho các cổng P0, P1, P2 và P3 với mỗi cổng có 8 chân Các chân còn lại được dành cho nguồn VCC, đất GND, các chân giao động XTAL1 và XTAL2 tái lập RST cho phép chốt địa chỉ ALE truy cập được địa chỉ ngoài , cho phép cất chương trình Trong 8 chân này thì 6 chân VCC , GND,
XTAL1,
XTAL2, RST và được các họ 8031 và 8051 sử dụng Hay nói cách khác là chúng phải được nối để cho hệ thống làm việc mà không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031 Còn hai chân khác là EA và ALE được sử dụng chủ yếu trong các hệ thống dựa trên 8031
Trang 29Chân VCC: Chân số 40 là VCC cấp điện áp nguồn cho chíp Nguồn điện
áp là +5V.
Chân GND: Chân GND: Chân số 20 là GND.
Chân XTAL1 và XTAL2: 8051 có một bộ giao động trên chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy nó Bộ giao động thạch anh
thường xuyên nhất được nối tới các chân đầu vào XTAL1 (chân 19) và
XTAL2 (chân 18) Bộ giao động thạch anh được nối tới XTAL1 và XTAL2 cũng cần hai tụ điện giá trị 30pF Một phía của tụ điện được nối xuống đất Cần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051 Tốc độ được coi như là tần số cực đại của bộ giao động được nối tới chân XTAL
Trang 30Chân RST: Chân số 9 là chân tái lập RESET Nó là một đầu vào và có mức tích cực cao (bình thường ở mức thấp) Khi cấp xung cao tới chân này thì bộ
vi
điều khiển sẽ tái lập và kết thúc mọi hoạt động Điều này thường được coi như
là sự tái bật nguồn Khi kích hoạt tái bật nguồn sẽ làm mất mọi giá trị trên các
thanh ghi Bảng 4.1 cung cấp một cách liệt kê các thanh ghi của 8051 và các giá trị của chúng sau khi tái bật nguồn.
Trang 31Chân : Các thành viên họ 8051 như 8751, 98C51 hoặc DS5000 đều có ROM trên chíp lưu cất chương trình Trong các trường hợp như vậy thì chân được nối tới VCC Đối với các thành viên củ họ như 8031 và 8032 mà không
có ROM trên chíp thì mã chương trình được lưu cất ở trên bộ nhớ ROM ngoài
và chúng được nạp cho 8031/32 Do vậy, đối với 8031 thì chân phải được nối đất để báo rằng mã chương trình được cất ở ngoài có nghĩa là truy cập ngoài (External Access) là chân số 31 trên vỏ kiểu DIP Nó là một chân đầu vào và phải được nối hoặc với VCC hoặc GND Hay nói cách khác là nó không được
Trang 32Chân : Đây là chân đầu ra cho phép cất chương trình (Program Store Enable) trong hệ thống dựa trên 8031 thì chương trình được cất ở bộ nhớ
ROM ngoài thì chân này được nối tới chân OE của ROM
Chân ALE: Chân cho phép chốt địa chỉ ALE là chân đầu ra và được tích cực cao Khi nối 8031 tới bộ nhớ ngoài thì cổng 0 cũng được cấp địa chỉ và dữ liệu Hay nói cách khác 8031 dồn địa chỉ và dữ liệu qua cổng 0 để tiết kiệm số chân Chân ALE được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối tới chân G của chíp 74LS373
Các cổng vào ra: bốn cổng P0, P1, P2 và P3 đều sử dụng 8 chân và tạo
thành cổng 8 bít Tất cả các cổng khi RESET đều được cấu hình như các đầu
ra, sẵn sàng để được sử dụng như các cổng đầu ra Muốn sử dụng cổng nào trong số các cổng này làm đầu vào thì nó phải được lập trình
PSEN