1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình vi xử lý

296 13 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 296
Dung lượng 14,26 MB

Nội dung

TRƯỜNG CĐN CƠNG NGHIỆP HÀ NỘI Chủ biên: TRẦN THANH BÌNH BỘ MƠN ĐIỆN TỬ ­­­­­­­***­­­­­­­­­ GIÁO TRÌNH  VI XỬ LÝ  ( Lưu hành nội bộ) HÀ NỘI 2012 44 Tun bố bản quyền Tài liệu này là loại giáo trình nội bộ dùng trong nhà trường với mục  đích làm tài liệu giảng dạy cho giáo viên và học sinh, sinh viên nên các nguồn  thơng tin có thể được tham khảo Tài liệu phải do trường Cao đẳng nghề Cơng nghiệp Hà Nội in ấn và  phát hành.  Việc sử dụng tài liệu này với mục đích thương mại hoặc khác với mục  đích trên đều bị nghiêm cấm và bị coi là vi phạm bản quyền Trường Cao đẳng nghề Cơng nghiệp Hà Nội xin chân thành cảm ơn các  thơng tin giúp cho nhà trường bảo vệ bản quyền của mình 45 LỜI NĨI ĐẦU  Trong chương trình đào tạo của các trường trung cấp nghề, cao   đẳng nghề  Điện tử  cơng nghiệp thực hành nghề  giữ  một vị  trí rất quan  trọng:  rèn luyện tay nghề  cho học sinh. Việc dạy thực hành  địi hỏi  nhiều yếu tố: vật tư thiết bị đầy đủ đồng thời cần một giáo trình nội bộ,   mang tính khoa học và đáp ứng với u cầu thực tế Nội dung của giáo trình “Vi xử lý” đã được xây dựng trên cơ sở kế  thừa những nội dung giảng dạy của các trường, kết hợp với những nội   dung mới nhằm đáp  ứng u cầu nâng cao chất lượng đào tạo phục vụ  sự nghiệp cơng nghiệp hóa, hiện đại hóa đất nước,.  Giáo trình được biên soạn ngắn gọn, dễ hiểu, bổ sung nhiều kiến   thức mới và biên soạn theo quan điểm mở, nghĩa là, đề  cập những nội  dung cơ  bản, cốt yếu để  tùy theo tính chất của các ngành nghề  đào tạo   mà nhà trường tự điều chỉnh cho thích hợp và khơng trái với quy định của  chương trình khung đào tạo cao đẳng nghề Tuy các tác giả  đã có nhiều cố  gắng khi biên soạn, nhưng giáo   trình chắc chắn khơng tránh khỏi những thiếu sót, rất mong nhận được  sự tham gia đóng góp ý kiến của các bạn đồng nghiệp và các chun gia   kỹ thuật đầu ngành Xin trân trọng cảm ơn! 46 BÀI 1. SƠ LƯỢC VỀ LỊCH SỬ VÀ HƯỚNG PHÁT TRIỂN CỦA VI XỬ LÝ Mục tiêu: + Kiến thức: ­ Trình bày  được lịch sử phát triển của vi xử lý; ­ Trình bày được cấu trúc chung của vi xử lý; ­ Phát biểu đúng các ứng dụng của vi xử lý và hướng phát triển của vi xử lý; + Kỹ năng: ­ Nâng cao kỹ năng hoạt động nhóm trong q trình học tập; + Thái độ: ­ Đảm bảo an tồn cho người và thiết bị, Các thuật ngữ chun mơn: Được giải thích chi tiết trong nội dung bài học Nội dung:  A. LÝ THUYẾT 1.1. Giới thiệu lịch sử phát triển của vi xử lý Trước khi tìm hiểu lịch sử  phát triển của vi xử  lý chúng ta cùng nhắc   lại lịch sử phát triển của vi xử lý. Lịch sử phát triển của vi xử lý gắn liền với    phát triển của các vi mạch điện tử  vì vi xử  lý là vi mạch điện tử  chế  tạo   theo công nghệ  LSI (Large Scale Integrated) cho đến VLSI (Very Large Scale   Integrated).  Với sự  khám phá ra transistor và phát triển của công nghệ  chế  tạo vi   mạch SSI, MSI, máy tính vẫn cịn là một nhóm gồm nhiều IC kết hợp lại với  nhau, cho đến thập niên 70, với sự phát triển của cơng nghệ LSI, cấu trúc máy   tính được rút gọn bởi các nhà thiết kế và được chế tạo thành một IC duy nhất  được gọi là vi xử lý (microprocessor).  Vi xử  lý kết hợp với các thiết bị khác tạo ra các máy tính có khả  năng   tính tốn rất lớn như máy vi tính và có thể tạo ra các sản phẩm khác các máy   điện thoại, các tổng đài điện thoại, các hệ thống điều khiển tự động   Vi xử lý đầu tiên có khả năng xử lý 4 bit dữ liệu, các vi xử lý này có tốc   độ xử lý rất chậm, các nhà thiết kế cải tiến thành vi xử lý 8 bit, sau đó là vi xử  lý 16 bit và 32 bit. Sự  phát triển về  dung lượng các bit của vi xử  lý làm tăng   thêm số lượng các lệnh điều khiển và các lệnh tính tốn phức tạp.  Vi xử lý có rất nhiều loại bắt đầu từ 4 bit cho đến 32 bit, vi xử lý 4 bit  hiện nay khơng cịn nhưng vi xử lý 8 bit vẫn cịn mặc dù đã có vi xử lý 32 bit Lý do sự tồn tại của vi xử lý 8 bit là phù hợp với một số u cầu điều   khiển       thiết   bị   điều   khiển   trong  công  nghiệp   Các   vi  xử   lý   32   bit   thường sử dụng cho các máy tính với khối lượng dữ liệu của máy tính rất lớn  nên cần các vi xử lý càng mạnh càng tốt 47 Các hệ  thống điều khiển trong cơng nghiệp sử  dụng các vi xử  lý 8 bit  để  điều khiển như  hệ  thống điện của xe hơi, hệ  thống điều hòa, hệ  thống   điều khiển các dây chuyền sản xuất,… Khi sử dụng vi xử lý cần phải thiết kế một hệ thống gồm có: ­ Vi xử lý ­ Bộ nhớ ­ Các IC ngoại vi Bộ  nhớ  dùng để  chứa chương trình cho vi xử  lý thực hiện và chứa dữ  liệu xử lý, các IC ngoại vi dùng để  xuất nhập dữ liệu từ bên ngồi vào xử  lý   và điều khiển trở  lại. Các khối này liên kết với nhau tạo thành một hệ  thống  vi xử lý. u cầu điều khiển càng cao thì hệ thống càng phức tạp và nếu u  cầu điều khiển đơn giản ví dụ  chỉ  cần đóng mở  một đèn Led theo một thời   gian u cầu nào đó thì hệ thống vi xử lý cũng phải có đầy đủ các khối trên Để kết nối các khối trên tạo thành một hệ thống vi xử lý đó hỏi người   thiết kế phải rất hiểu biết về tất cả các thành phần vi xử lý, bộ nhớ, các thiết   bị ngoại vi. Hệ thống tạo ra khó phức tạp, chiếm nhiều khơng gian, mạch in,   và vấn đề  chính là đó hỏi người thiết kế, người sử  dụng hiểu thật sự về hệ  thống. Một lý do chính nữa là vi xử  lý thường xử  lý dữ  liệu theo byte hoặc   word trong khi đó các đối tượng điều khiển trong cơng nghiệp thường điều  khiển theo bit Chính với sự phức tạp nên các nhà chế tạo đó tích hợp một ít bộ nhớ và   một số các thiết bị ngoại vi cùng với vi xử lý tạo thành một IC gọi là vi xử lý  – Microcontroller Khi vi xử  lý ra đời đó mang lại sự  tiện lợi là dễ  dàng sử  dụng trong  điều khiển cơng nghiệp, việc sử  dụng vi xử lý khơng địi hỏi người sử  dụng  phải hiểu biết một lượng kiến thức q nhiều như  người sử  dụng vi xử  lý –   dĩ nhiên người sử dụng hiểu biết càng nhiều thì càng tốt nhưng đối với người   bắt đầu thì việc sử dụng vi xử lý là điều rất phức tạp trong khi đó mong muốn   là sử dụng được ngay Các phần tiếp theo chúng ta sẽ khảo sát vi xử lý để thấy sự sự tiện lợi   trong vấn đề điều khiển trong cơng nghiệp Có rất nhiều hãng chế  tạo được vi xử  lý, hãng sản xuất nổi tiếng là  ATMEL. Hãng Intel là nhà thiết kế.  Có nhiều họ vi xử lý mang các mã số khác nhau, một trong họ nổi tiếng  là họ MCS­51 Trong họ  MCS­51 thì vi xử  lý đầu tiên là 80C31 khơng có bộ  nhớ  bên  trong là do chưa tích hợp được ­ Vi xử lý 80C51 tích hợp được 4 kbyte bộ nhớ PROM. Chỉ lập trình 1   lần khơng thể xóa để lập trình lại được ­ Vi xử lý 87C51 tích hợp được 4 kbyte bộ nhớ EPROM. Cho phép lập  trình nhiều lần và xóa bằng tia cực tím ­ Vi xử  lý 89C51 tích hợp được 4 kbyte bộ  nhớ flash ROM nạp và xóa  bằng điện một cách tiện lợi và nhanh chĩng. Có thể  cho phép nạp xóa hàng  ngàn lần Song song với họ MCS­51 là họ MCS­52 có 3 timer nhiều hơn họ MCS­ 51 một timer và dung lượng bộ nhớ nội lớn gấp đơi tức là 8Kbyte 48 Hiện nay có rất nhiều vi xử lý thế hệ mới với nhiều đặc tính hay hơn,  nhiều thanh ghi hơn, dung lượng bộ nhớ lớn hơn Ứng dụng của vi xử  lý rất nhiều trong các hệ  thống điều khiển cơng   nghiệp, các dây chuyền sản xuất, các bộ điều khiển lập trình, máy giặt, máy   điều hịa nhiệt độ, máy bơm xăng tự  động… có thể  nói vi xử  lý và vi xử  lý  được ứng dụng trong hầu hết mọi lĩnh vực tự động 1.2. Các bộ vi xử lý so với bộ vi xử lý dùng chung Sự khác nhau giữa một bộ vi xử lý và một bộ vi xử lý như thế nào? Bộ  vi xử  lý   đây là các bộ  vi xử  lý công dụng chung như  họ  Intell x86(8086,   80286,   80386,   80486     Pentium)     họ   Motorola   680x0   (68000,   68010,   68020, 68030, 68040 v.v…). Những bộ vi xử lý này khơng có RAM, ROM và  khơng có các cổng vào ra trên chíp. Với lý do đó mà chúng được gọi chung là  các bộ vi xử lý cơng dụng chung  Hình 1.1: Hệ thống vi xử lý được so sánh với hệ thống vi xử lý (a) Hệ thống vi xử lý cơng dụng chung (b) Hệ thống vi xử lý Một nhà thiết kế  hệ  thống sử dụng một bộ vi xử lý cơng dụng chung   chẳng hạn như Pentium hay 68040 phải bổ xung thêm RAM, ROM, các cổng  vào ra và các bộ định thời làm cho chúng cồng kềnh và đắt hơn, nhưng chúng  có  ưu điểm là linh hoạt chẳng hạn người thiết kế  có thể  quyết định về  số  lượng RAM, ROM và các cổng vào ra cần thiết phù hợp với bài tốn trong tầm   tay của mình. Điều này khơng thể có được đối với một bộ vi xử lý. Một bộ vi   49 xử  lý có một CPU (một bộ  vi xử  lý) cùng với một số  lượng cố  định RAM,  ROM, các cổng vào ra và một bộ định thời tất cả trên cùng một chíp. Hay nói   cách khác là bộ  xử  lý, RAM, ROM các cổng vào ra, bộ  định thời đều được   nhúng với nhau trên một chíp do vậy người thiết kế khơng thể  bổ  xung thêm   bộ nhớ ngồi, cổng vào ra hoặc bộ định thời cho nó, chính vì vậy chúng trở lên   lý tưởng với nhiều ứng dụng mà trong đó giá thành và khơng gian lại hạn chế.  Trong nhiều  ứng dụng, ví dụ  một điều khiển từ  xa ti vi thì khơng cần  cơng suất tính tốn của một bộ vi xử lý 80486 hoặc 8086. Trong rất nhiều ứng   dụng mà trong đó giá thành và khơng gian nó chiếm, cơng suất nó tiêu tốn và   giá thành trên một đơn vị  là những cịn nhắc nghiêm ngặt hơn nhiều so với   cơng suất tính tốn. Những  ứng dụng thường u cầu một số  thao tác vào ra  để  đọc các tín hiệu và tắt mở  những bit nhất định. Với lý do đó mà một số  người gọi các bộ  xử  lý này là IBP (Itty Bitty Processor). Điều thú vị  nhất là  một số nhà sản xuất các bộ vi xử lý đó đi xa hơn là tích hợp cả bộ chuyển đổi   ADC và các ngoại vi khác vào trong bộ vi xử lý Bảng1.1:  Một số sản phẩm được nhúng sử dụng các bộ vi xử lý Thiết bị nội thất gia  đình Đồ điện trong nhà Máy điện thoại Các hệ thống an tồn Các bộ mở cửa ga ra xe Máy fax Máy trả lời thự động Máy tính gia đình Ti vi  Truyền hình cáp Máy quay camera Điều khiển từ xa Trị chơi điện tử Các lại nhạc cụ điện tử Điều khiển ánh sáng Lị vi sóng Máy giặt  Tủ lạnh Các   máy   tập   thể   dục,  thể hình… Văn phịng Máy tính Máy fax Máy điện thoại  Các hệ thống an tồn Máy Scaner Máy photocopy Máy in … Ơ tơ Điều khiển động cơ  Điều khiển túi đệm khí Thiết bị ABS Thiết bị đo lường Hệ thống bảo mật Điều khiển truyền tin Giải trí Điều hịa nhiệt độ Mở  cửa khơng cần chìa  khóa… 50 1.3. Các bộ vi xử lý cho các hệ thống nhúng Trong các tài liệu về vi xử lý, vi xử lý ta thường thấy khái niệm về hệ  thống nhúng (Embeded system). Các bộ vi xử  lý, vi xử  lý được sử  dụng rộng   rãi trong các sản phẩm hệ thống nhúng. Một sản phẩm nhúng sử dụng một bộ  vi xử  lý hoặc một bộ  vi xử  lý để  thực hiện một nhiệm vụ  chỉ  một mà thơi.  Máy in là một ví dụ  về  một việc nhúng với bộ  vi xử  lý bên trong nó chỉ  làm   một việc là nhận dữ liệu và in ra. Điều này khác với một máy tính PC dựa trên   bộ vi xử lý Pentium (hoặc một PC tương ứng với IBM x86 bất kỳ). Một PC có  thể  được sử dụng cho một số bất kỳ các trạm dịch vụ  in, bộ đầu cuối kiểm   kê trong ngân hàng, máy chơi điện tử, trạm dịch vụ mạng hoặc trạm đầu cuối   mạng internet. Phần mềm cho các dịch vụ khác nhau có thể được nạp và chạy.  Tất nhiên là lý do hiển nhiên để một PC thực hiện hàng loạt các cơng việc là   nó có bộ  nhớ  RAM và một hệ  điều hành nạp phần mềm  ứng dụng thường   được đốt vào trong ROM. Một máy tính chứa hoặc được nối tới các sản phẩm  nhúng khác nhau chẳng hạn như bàn phím, máy in, moderm, bộ điều khiển CD   ROM, Card âm thanh, chuột máy tính…Một nội ngoại vi này có một bộ vi xử  lý bên trong nó để thực hiện chỉ một cơng việc, ví dụ trong mỗi con chuột máy  tính đều có một bộ vi xử lý để thực thi cơng việc tìm vị trí chuột và gửi nó đến  PC 1.4. Các tiêu chuẩn lựa chọn bộ vi xử lý Có 4 bộ vi xử lý 8 bít chính. Đó là 6811 của Motorola, 8051 của Intel, Z8   của Xilog và PIC 16xx 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, nên chúng đều khơng tương thích lẫn  nhau. Cũng có những bộ  vi xử  lý 16 bít và 32 bít đượ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 xử lý khác nhau như  thế  thì  lấy gì làm tiêu chuẩn lựa chọn và 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 xử lý là: 1.Tiêu chuẩn đầu tiên và trước hết trong lựa chọn một bộ vi xử lý là nó  phải đáp  ứng nhu cầu bài tốn về  một mặt cơng suất tính tố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 xử lý  chúng ta trước hết phải biết là bộ  vi xử  lý nào 8 bit, 16 bit hay 32 bit có thể  đáp  ứng tốt nhất nhu cầu tính tốn của bài tốn một cách hiệu quả  nhất?   những tiêu chuẩn được đề ra để cân nhắc là: a. Tốc độ: Tốc độ lớn nhất của mà bộ vi xử lý hỗ trợ là bao nhiêu b. Kiểu đóng vỏ: Đóng vỏ kiể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 – đóng vỏ vng dẹt)? Đây là   điều quan trọng đối với khơng gian, kiểu lắp ráp và tạo mẫu thử  cho sản   phẩm cuối cùng c. 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 d. Dung lượng bộ nhớ RAM và ROM trên chíp e. Số chân vào – ra và bộ định thời trên chíp f. 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ụ g. Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành   cuối cùng của sản phẩm mà một bộ vi xử lý được sử dụng 51 2. Tiêu chuẩn thứ  2 trong lựa chọn một bộ  vi xử  lý là khả  năng phát   triển các sản phẩm xung quanh nó dễ  dàng như  thế  nào? 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ữ 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ư  nguồn môi trường. Trong nhiều trường hợp sự  hỗ  trợ  nhà cung cấp thứ  3   (nghĩa là nhà cung cấp khác khơng phải là hãng sản xuất chíp) 3. Tiêu chuẩn thứ  ba trong lựa chọn một bộ  vi xử  lý là khả  năng sẵn  sàng đáp  ứng về  số  lượng trong hiện tại và trong tương lai. Đối với một số  thiết kế  điều này thậm chí cũng quan trọng hơn cả  hai tiêu chuẩn đầu tiên.  Hiện nay, các bộ vi xử  lý 8 bít dẫn đầu, họ  8051 là có số  lượng lớn nhất các   nguồn cung cấp đa dạng. Nhà cung cấp có nghĩa là nhà sản xuất bên cạnh nhà  sáng chế  của bộ  vi xử  lý. Trong trường hợp 8051 thì nhà sáng chế  của nó là  Intel, nhưng hiện nay có rất nhiều hãng sản xuất nó (cũng như  trước kia đó  sản xuất)  như Intel, Atmel, Philips/signe­tics, AMD, Siemens, Matra và Dallas,  Semicondictior… B. THẢO LUẬN NHĨM  1. Ứng dụng thực tế của vi xử lý trong điện tử dân dụng? 2. Ứng dụng thực tế của vi xử lý trong điện tử cơng nghiệp? 3. So sách một chíp vi xử lý với một chíp vi xử lý về mặt cấu trúc? C.  THỰC HÀNH (Khơng) D. ĐÁNH GIÁ KẾT QUẢ: (tính theo thang điểm 10) Mục tiêu Kiến thức Kỹ năng Thái độ Nội dung Điểm chuẩn ­ Nêu được lịch sử phát triển của vi xử lý ­ Phân biệt được vi xử  lý với vi xử  lý về  cấu   trúc ­   Nêu         vi   xử   lý   cho   hệ   thống   nhúng và các tiêu chuẩn lựa chọn một bộ  vi  xử lý ­ Tổng hợp và phân tích nội dung bài học ­ Khả năng hoạt động nhóm khi làm việc ­ Khả năng hoạt động độc lập khi làm việc ­ Đảm bảo an tồn vệ sinh cơng nghiệp ­ Chủ động, tích cực  trong hoạt động học 1 1 1 E. CÂU HỎI VÀ BÀI TẬP  Câu1. Trình bày lịch sử phát triển của vi xử lý? 52 Câu 2. So sánh sự giống và khác nhau giữa bộ vi xử lý so với bộ vi xử lý dùng   chung? Câu 3. Thế  nào là hệ  thống nhúng, giải thích các bộ  vi xử  lý cho hệ  thống   nhúng? Câu 4. Nêu các tiêu chuẩn lựa chọn bộ vi xử lý? BÀI 2. CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051 Mục tiêu: + Kiến thức: ­ Mơ tả được cấu trúc họ vi xử lý họ 8051; ­ Giải thích được tổ chức bộ nhớ của họ vi xử lý 8051; ­ Phân tích được cấu trúc, chức năng nhiệm vụ các thanh ghi của họ 8051; ­ Trình bày được ngun lý hoạt động của mạch dao động, mạch reset;  ­ Phân tích được chức năng, nhiệm vụ của các IC ngoại vi, + Kỹ năng: ­ Vẽ được sơ đồ cấu trúc, sơ đồ kết nối bên trong của vi xử lý 8051; + Thái độ: ­ Đảm bảo an tồn cho người và thiết bị, Các thuật ngữ chun mơn: được giải thích chi tiết trong nội dung bài học Nội dung: 53 out  DDRB,r17 ldi   r16,0xF0 out  OCR0,r16 ; match value ldi   r16,0x39 out  TCCR0,r16 ; CTC mode • Bit 2:0 – CS02:0: Clock Select: Đây là 3 bit dùng để lựa chọn xung clock cho  bộ định thời. Để dừng bộ định thời ta chọn { CS00, CS01, CS02 } = {0, 0, 0 } 2. Thanh Ghi Timer/Counter Register –TCNT0 Hình 7.45. Thanh ghi TCNT0 Đây là thanh ghi đếm 8 bit của bộ định thời 0 .Giá trị thanh ghi này tăng  hoặc giảm 1 đơn vị  sau mỗi chu kì clock. Khơng nên ghi vào thanh ghi này khi  nó đang đếm 3. Thanh Ghi Output Compare Register –OCR0 Hình 7.46. Thanh ghi OCR0 OCR0 là thanh ghi 8 bit, giá trị của nó được liên tục so sánh với giá trị  của  thanh  ghi TCNT0.  Khi  hai  giá  trị  của  hai  thanh  ghi  này  bằng  nhau  thì  xảy  ra  một  sự kiện  “so sánh khớp” (compare match). Sự kiện so sánh khớp  sẽ  tạo  ra  một  ngắt,  nếu  ngắt  được  cho  phép  Hay  tạo  ra  một  dạng  sóng  ở  chân đầu ra OC0, tùy theo chế độ thực thi của bộ định thời 4. Thanh Ghi Timer/Counter Interrupt Mask Register – TIMSK 325 Hình 7.47. Thanh ghi TIMSK •  Bit  1  –  OCIE0:  Timer/Counter0  Output  Compare  Match  Interrupt  Enable:  Khi  bit  OCIE0  ghi  là  1  và  bit  I  của  thanh  ghi  trạng  thái  SREG    được  set  thành  1  thì  ngắt   kiện  “so  sánh  khớp”  (compare  match  interrupt ) được cho phép. Khi đó một ngắt sẽ được thực thi khi xảy ra một  sự kiện “so sánh khớp” •  Bit  0  –  TOIE0:  Timer/Counter0  Overflow  Interrupt  Enable:  Khi  bit  này được ghi  là  1  và  ngắt  tồn  cục  được  cho  phép  thì  ngắt  tràn  bộ  định  thời  (Timer/Counter0 Overflow  interrupt)  được  cho  phép.  Khi  đó  một  ngắt  tương  ứng  sẽ  được  thực  thi  khi  bộ định thời tràn 5. Thanh Ghi Timer/Counter Interrupt Flag Register – TIFR Hình 7.48. Thanh ghi TIFR •  Bit  1  –  OCF0:  Output  Compare  Flag  0:  Bit  này  sẽ  được  set  lên  1  khi   xảy  ra  “so sánh  khớp    ”    (compare    match)     bộ    định   thời    (tức  thanh  ghi  TCCN0)  với  thanh  ghi OCR0. Cờ OCF0 sẽ tự động xóa khi ngắt  tương  ứng được thực thi. Ngồi ra ta cũngg có thể xóa  cờ  OCF0  bằng  cách  ghi  một  giá  trị  logic  vào  nó.  Khi  bit  I  trong  thanh  ghi  SREG,  bit OCIE0  (Timer/Counter0  Compare  Match  Interrupt  Enable)  và  bit  OCF0  được  set  lên  1 thì ngắt “so sánh khớp” (Compare Match Interrupt) sẽ được thực thi •  Bit  0  –  TOV0:  Timer/Counter0  Overflow  Flag:  Bit  TOV0  được  set  thành  1  bộ  định  thời  tràn  và  nó  được  xóa  khi  ngắt  tương  ứng  được  thực  thi.  Ngồi  ra cũngg có thể xóa bằng cách ghi một giá trị logic vào vị trí của nó . Khi bit  I  trong  thanh  ghi  SREG,  bit TOIE0  (Timer/Counter0  Overflow  interrupt)  và  bit  TOV0  được  set  lên  1  thì  ngắt     tràn   định  thời  0  (Timer/Counter0  Overflow  Interrupt  )  sẽ  được  thực  thi.  Trong  chế  độ  PWM  cờ  TOV0 được  Set khi bộ định thời 0 đổi hướng đếm tại giá trị 00h 326 6. Thanh Ghi Special Function IO Register –SFIOR Hình 7.49. Thanh ghi SFIOR •  Bit  7  –  TSM:  Timer/Counter  Synchronization  Mode:  Ghi  bit     thành        kích  hoạt  chế  độ  đồng  bộ  bộ  định  thời  (Timer/Counter  Synchronization). Trong chế độ này, một  giá  trị  được  ghi  vào    các  bit  PSR0  và  PSR321  sẽ  được  giữ  lại,  vì  thế  nó  giữ  cho  tín hiệu  reset  của  bộ  chia  trước  (prescaler)  tương  ứng  được  xác  nhận  (  do  đó  bộ  chia  trước (prescaler) vẫn ở trạng thái Reset ). Điều này là để chắc chắn là các bộ định  thời tương ứng   được  tạm  nghỉ   và  có  thể   được  cấu  hình  với  các  giá  trị   như   nhau  mà  khơng  làm   ảnh hưởng đến một trong những cấu hình nâng cao khác của  chúng. Khi bit này được ghi thành 0 thì các bộ định thời sẽ bắt đầu đếm đồng thời ­ Bit  1  –  PSR0:  Prescaler  Reset  Timer/Counter0:  Khi  bit  này  là  1  thì  bộ  chia trước  của  bộ  định  thời  0  (Timer/couter  0  prescaler)  sẽ  được  đặt  lại.  Bit  này  thường  được xóa  tức  thời  bởi  phần  cứng.  Nếu  bit  này  được  ghi  khi  bộ  định thời 0 đang thực thi chế độ khơng đồng bộ thì nó vẫn giữ ngun giá trị  của nó cho đến khi bộ chia trước được đặt lại Bit này sẽ khơng được xóa bởi phần cứng nếu như bit TSM được set thành 1 7. Thanh Ghi Asynchronous Status Register – ASSR Hình 7.50. Thanh ghi ASSR ­ Bit  3  –  AS0:  Asynchronous  Timer/Counter0:  Khi  bit  AS0  là  0  thì  bộ  định  thời được  đếm  từ  nguồn  xung  clock  I/O,  tức  ClkI/O.  Khi  AS0  được  ghi  thành  1  bộ   định  thời được  đếm  từ  xung  thạch  anh  ở  chân  TOSC1.  Khi  giá  trị  của  AS0  bị  thay  đổi  thì  nội  dụng của các thanh ghi TCNT0, OCR0 và  TCCR0 có thể bị hỏng ­ Bit 2  – TCN0UB:  Timer/Counter0 Update Busy: Khi  bộ định thời 0 thực thi  q trình khơng đồng bộ và thanh ghi TCNT0 đang được ghi thì bit TCN0UB  sẽ  set  lên  1.  Khi thanh  ghi  TCNT0  vừa  được  cập  nhật  từ  thanh  ghi  lưu  trữ  tạm thì bit này bị xóa bởi phần cứng. Mức logic 0 trong trường hợp này là để  chỉ ra rằng thanh ghi TCNT0 đã sẵn sàng để cập nhật một giá trị mới 327 ­ Bit 1 \–OCR0UB: Output Compare Register0 Update Busy: Khi bộ định thời 0  thực  thi  q  trình  khơng  đồng  bộ  và  thanh  ghi  OCR0  đang  được  ghi  thì  bit  OCR0UB sẽ set lên  1.  Khi  thanh  ghi  OCR0  vừa  được  cập  nhật  từ  thanh  ghi  lưu  trữ  tạm  thì  bit  này  bị  xóa bởi phần cứng .Mức logic 0 trong trường hợp  này là để chỉ ra rằng thanh ghi OCR0 đã sẵn sàng để cập nhật một giá trị mới ­ Bit 0 – TCR0UB: Timer/Counter Control Register0 Update Busy: Khi bộ định  thời   0  thực    thi  q   trình    khơng   đồng  bộ       thanh   ghi   TCCR0  đang  được  ghi  thì  bit TCR0UB sẽ set lên 1. Khi thanh ghi TCCR0 vừa được cập  nhật từ thanh  ghi lưu trữ  tạm thì bit  này  bị  xóa  bởi  phần  cứng.  Mức  logic  0  trong trường hợp này là để chỉ ra rằng thanh ghi TCCR0 đã sẵn sàng để  cập  nhật một giá trị mới Nếu  ghi  vào  một  trong  ba  thanh  ghi  của  bộ  định  thời  0  (TCNT0,  OCR0,  TCCR0) trong lúc cờ báo bận cập nhật (update busy flag) của chúng được set,  thì giá trị cập nhật có thể bị hỏng và sẽ tạo ra một ngắt khơng biết trước 4. Bộ định thời 2 a. Sơ đồ khối bộ định thời 2 Hình 7.51. Sơ đồ khối bộ định thời 2 328 Bộ  định  thời  2  là  bộ  định  thời  8  bit,  bộ  định  thời  2  liên  quan  tới  5  thanh  ghi  với nhiều chế độ thực thi khác nhau. Các thuộc tính chính của bộ  định  gồm:  Bộ  đếm  đơn  kênh, xóa  bộ  định  thời  khi  có  sự  kiện  “so  sánh  khớp” và tự động nạp lại, PWM hiệu chỉnh pha, đếm sự kiện bên ngồi… b. Các thanh ghi bộ định thời 2 1.   Thanh ghi Timer/Counter Control Register – TCCR2 Hình 7.52. Sơ đồ khối bộ định thời 2 • Bit 7 – FOC2: Force Output Compare • Bit 6, 3 – WGM21:0: Waveform Generation Mode • Bit 5:4 – COM21:0: Compare Match Output Mode • Bit 2:0 – CS22:0: Clock Select ­   Bit  7–FOC2:  Force  Output  Compare  :  Bit  FOC2  chỉ  hoạt  động  khi  bit  WGM20 chỉ định chế độ Non­PWM, trong chế PWM nên ghi bit này thành 0. Ở  chế  độ  non­PWM,    bit  FOC0  được  ghi  thành  1  lập  tức  một  “so  sánh  khớp”(compare  match  )  xảy  ra  ở  bộ  tạo sóng,    đầu  ra  OC2  thay  đổi  tùy  theo  thiết  lập  của  những  bit  COM21:0  tương  ứng  với  nó. Bit  này  khơng  thể  đọc,  khi  đọc  ta  ln  nhận  giá  trị   0.  Bit  này  hoạt  động  giống  như   bit FOC0  của bộ định thời 0 ­ Bit 6, 3 – WGM21:0: Waveform Generation Mode : Những bit này điều khiển  các chế độ thực thi của bộ đếm, theo đó dạng sóng tương  ứng được tạo ra từ  bộ tạo sóng. Các chế độ thực thi được hỗ trợ là : Normal, CTC, PWM.  Bảng 7.6. Lựa chọn các chế độ thực thi của bộ định thời 2 Chú  ý  :  Tên  các  bit  CTC2  và  PWM2  đã  không  được  sử  dụng  nữa  và  được  329 thay thế bằng các  tên khác là WGM21 và WGM20 ­ Bit  5:4  –  COM21:0:  Compare  Match  Output  Mode:  Hai  bit  này  điều  khiển  hoạt động của chân OC2. Nếu một trong hai bit này được set thành 1 thì đầu  ra OC2 được ưu tiên hơn chức năng I/O thơng thường . Chú ý là các bit  tương  ứng của OC2 trong thanh ghi DDR phải được set để cho phép đầu ra. Khi OC2  được kết nối với chân đầu ra OC2 thì vai trò  của  các  bit  COM21:0  còn  phụ  thuộc  vào  các  thiết  lập  của  các  bit  WGM21:0.  Các bit này hoạt động giống với các bit COM01:0 của bộ định thời  0. Xem lại bộ định thời 0 Bảng 7.7. Điều khiển hành vi của chân OC2 bằng các bit COM20: 1 trong chế độ non­PWM Bảng 7.8. Điều khiển hành vi của chân OC2 bằng các bit COM20: 1 trong chế độ PWM nhanh Bảng 7.9. Điều khiển hành vi của chân OC2 bằng các bit COM20 330 :1 trong chế độ PWM hiệu chỉnh pha Chú  ý:  Có  trường  hợp  đặt  biệt  là  khi  thanh  ghi  OCR20  có  giá  trị    TOP  và  bit COM21  được  set  ,  trong  trường  hợp  này    sự  kiện  so  sánh  khớp  (Compare  match)  bị  bỏ  qua, nhưng việc set hay xóa OC2   TOP  vẫn   được thực hiện ­   Bit  2:0  –  CS22:0:  Clock  Select:  Dùng  để  lựa  chọn  nguồn  xung  clock  cho  bộ  định thời 2.  2. Thanh ghi Timer/Counter Register – TCNT2 Hình 7.53. Thanh ghi TCNT2 Đây  là  thanh  ghi  đếm  8  bit  của  bộ  định  thời  2.  Giá  trị  thanh  ghi  này  tăng  hoặc  giảm 1  đơn  vị  sau  mỗi  chu  khì  clock.  Thanh  ghi  TCNT2  được  truy  xuất trực tiếp khi đọc hay ghi (  Điều  này  khác  với  bộ  định  thời  1  và  3  là  khi  truy  xuất  các  thanh  ghi  TCNT1  hay  TCNT3 cần phải thơng qua thanh ghi tạm  trung gian 8 bit ). Khơng nên chỉnh sửa thanh ghi TCNT2 khi bộ định thời đang  chạy 3. Thanh ghi Output Compare Register – OCR2 Hình 7.54. Thanh ghi OCR2 Thanh  ghi  OCR2  là  thanh  ghi  8  bit,  giá  trị  của  thanh  ghi  OCR2  sẽ  được liên tục so sánh với giá trị của bộ đếm, tức thanh ghi TCNT2. Khi giá  trị của hai thanh ghi này bằng nhau  sẽ   tạo  ra  sự   kiện  “so  sánh  khớp”  (  Compare  match).  Một  ngắt  so  sánh  khớp  ( compare match interrupt ) có  thể  được  tạo  ra  nếu  ngắt  được  cho  phép,  hay  một  dạng  sóng sẽ  được  tạo  ra  ở  chân  OC2.Thanh  ghi  này  hoạt  động  tương  tự  như  thanh  ghi  OCR0  ở  bộ định thời 0 4. Thanh ghi Timer/Counter Interrupt Mask Register – TIMSK 331 Hình 7.55. Thanh ghi TIMSK ­ Bit  7  –  OCIE2:  Timer/Counter2  Output  Compare  Match  Interrupt  Enable: Khi bit OCIE2 được set thành 1 và bit I trong thanh ghi trạng thái được set thành  1 thì ngắt “so  sánh  khớp”  (compare  match  interrupt  )  của  bộ  định  thời  2  được  cho  phép.  Khi  đó  mơt ngắt  tương  ứng    sẽ  được  thực  thi  khi  xảy  ra  một  sự  kiện “so sánh khớp” ở bộ định thời 2. Chẳn hạn, để xảy ra một “so sánh khớp”  (compare match )  ở bộ định thời 2 ta có thể  set bit OCF2  trong  thanh ghi  TIFR,  hoặc  là  chờ  cho  đến  khi  nào  giá  trị  của  hai  thanh  ghi  TCNT2 và OCR2 bằng  nhau thì một  “so sánh khớp”  (compare match ) sẽ xảy ra ­ Bit  6  –  TOIE2:  Timer/Counter2  Overflow  Interrupt  Enable:  Khi  bit  này  được  ghi  là  1  và  ngắt  toàn  cục  được  cho  phép  (bit  I  trong  thanh  ghi  trạng  thái  SREG được  set thành 1) thì ngắt tràn bộ định thời 2 (Timer/Counter2 Overflow  interrupt) được cho phép. Khi đó một ngắt tương  ứng sẽ được thực thi khi bộ  định  thời  2  tràn.  Chẳn  hạn,  ta  set  bit TOV2  trong  thanh  ghi  TIFR     thành  1  hoặc là chờ cho bộ định thời 2 bị tràn khi vượt quá giá trị TOP ( hay MAX ) 5. Thanh ghi Timer/Counter Interrupt Flag Register – TIFR Hình 7.56. Thanh ghi TIMSK ­ Bit 7 – OCF2: Output Compare Flag 2 : Bit này sẽ được set lên 1 khi  xảy ra   kiện “so sánh khớp”  (compare  match)  giữa bộ  định thời 2 (tức  thanh  ghi  TCCN2)  với thanh ghi  OCR2.  Cờ  OCF2  sẽ  tự  động  xóa  khi  ngắt  tương  ứng  được thực thi. Ngồi ra ta cũngg có thể  xóa  cờ  OCF2  bằng  cách  ghi  một  giá  trị  logic  vào  nó.  Khi  bit  I  trong  thanh  ghi  SREG, bit  OCIE2  (Timer/Counter2  Compare Match Interrupt Enable) và bit OCF2 được set lên 1 thì ngắt sự kiện  “so sánh khớp” (Compare Match Interrupt) của bộ định thời 2 sẽ được thực thi ­ Bit  6  –  TOV2:  Timer/Counter2  Overflow  Flag:  Bit  TOV2  được  set  thành  1  khi bộ  định  thời  tràn  và  nó  được  xóa  khi  ngắt  tương  ứng  được  thực  thi.  Ngồi  ra  cũngg  có  thể  xóa  bằng  cách  ghi  một  giá  trị  logic  vào  vị  trí  của  nó.  Khi  bit  I  trong  thanh  ghi  SREG,  bit   TOIE2  (Timer/Counter2  Overflow  interrupt)  và  bit  TOV2  được  set  lên  1  thì  ngắt      tràn    định  thời  2  (Timer/Counter2 Overflow Interrupt ) sẽ được thực thi. Trong chế độ PWM cờ  TOV2 được set khi bộ định thời 2 đổi hướng đếm tại giá trị 00h 7.2.4. Cấu trúc ngắt của ATmega128 1. Khái niệm về ngắt Ngắt  là  một  sự  kiện  bên  trong  hay  bên  ngồi  làm  ngắt  bộ  vi xử lý  để  báo cho nó biết rằng thiết bị cần dịch vụ của nó Một  bộ  vi xử  lý  có  thể  phục  vụ  một  vài  thiết  bị,  có  hai  cách  để  thực  332 hiện điều này  đó  là  sử  dụng  các  ngắt  (interrupt)  và  thăm  dò  (polling).  Trong  phương  pháp  sử  dụng các  ngắt  thì  mỗi  khi  có  một  thiết  bị  bất  kỳ  cần  đến  dịch vụ của nó thì nó báo cho bộ vi xử  lý  bằng  cách  gửi  một  tín  hiệu  ngắt.  Khi  nhận  đựợc  tín  hiệu  ngắt  thì  bộ  vi xử  lý ngắt  tất  cả  những  gì  nó  đang  thực  hiện  để  chuyển  sang  phục  vụ  thiết  bị.  Chương  trình  đi cùng với ngắt  được  gọi  là  trình  dịch  vụ  ngắt  ISR  (Interrupt  Service  Routine)  hay  cịn  gọi  là  trình  quản lý  ngắt (Interrupt  handler).  Cịn trong phương  pháp thăm  dị thì bộ  vi xử  lý hiển  thị  liên  tục  tình  trạng  của  một  thiết  bị  đã  cho  và  điều  kiện  thoả  mãn  thì  nó  phục  vụ  thiết bị. Sau đó nó chuyển sang hiển thị tình trạng  của thiết bị kế tiếp cho đến khi tất cả đều được phục vụ Mặc dù phương pháp thăm dị có thể thể hiển thị tình trạng của một vài  thiết bị và phục vụ  mỗi  thiết  bị  khi  các  điều  kiện  nhất  định  được  thoả  mãn  nhưng  nó  khơng  tận  dụng  hết  cộng dụng  của  bộ  vi xử  lý.  Điểm  mạnh  của  phương  pháp  ngắt  là  bộ  vi xử lý  có  thể phục vụ được rất nhiều thiết bị (tất  nhiên  là  khơng  tại  cùng  một  thời  điểm).  Mỗi  thiết  bị  có thể  nhận  được  sự  chú  ý  của  bộ  vi xử  lý  dựa  trên  mức  ưu  tiên  được  gán  cho  nó.  Đối với  phương  pháp  thăm  dị  thì  khơng  thể  gán  mức  ưu  tiên  cho  các  thiết  bị  vì  nó  kiểm  tra  tất cả  mọi  thiết  bị  theo  kiểu  quay  vịng    Quan  trọng  hơn  là  trong  phương pháp ngắt thì bộ vi xử lý cũngg cịn có thể che hoặc làm lơ một u  cầu dịch vụ của thiết bị. Điều này lại một lần nữa khơng thể thực hiện được  trong  phương  pháp  thăm  dò.  Lý  do  quan  trọng  nhất mà  phương  pháp  ngắt  được  ưu  chuộng  nhất  là  vì  phương  pháp  thăm  dị  làm  hao  phí  thời gian  của  bộ  vi xử lý  bằng  cách  hỏi  dò  từng  thiết  bị  kể  cả  khi  chúng  khơng  cần  đến  dịch vụ 2. Trình phục vụ ngắt và bảng véc tơ ngắt Đối  với  mỗi  ngắt  thì  phải  có  một  trình  phục  vụ  ngắt  ISR  (Interrupt  Service Routine) hay trình quản lý ngắt (Interrupt handler). Khi một ngắt đựợc  gọi thì bộ vi xử lý phục vụ ngắt. Khi một ngắt đựợc gọi thì bộ vi xử lý chạy  trình  phục  vụ  ngắt.  Đối  với  mỗi ngắt thì có một vị trí cố định trong bộ nhớ  để giữ địa chỉ ISR của nó. Nhóm các vị trí nhớ được dành riêng để gửi các địa  chỉ của các ISR được gọi là bảng véc tơ ngắt Khi kích hoạt một ngắt bộ vi xử lý đi qua các bước sau: ●  Vi xử  lý  kết  thúc  lệnh  đang  thực  hiện  và  lưu  địa  chỉ  của  lệnh  kế  tiếp (PC) vào ngăn xếp ● Nó nhảy đến một vị trí cố định trong bộ nhớ được gọi là bảng véc  tơ ngắt nơi lưu giữ địa chỉ của một trình phục vụ ngắt ● Bộ vi xử lý nhận địa chỉ ISR từ bảng véc tơ ngắt và nhảy tới đó. Nó  bắt đầu thực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI   (trở về từ ngắt) ● Khi thực hiện lệnh RETI bộ vi xử lý quay trở về nơi nó đã bị ngắt.  Trước hết nó  nhận  địa  chỉ  của  bộ  đếm  chương  trình  PC   từ  ngăn  xếp  bằng  cách kéo hai byte trên đỉnh của ngăn xếp vào PC. Sau đó bắt đầu thực hiện các  lệnh từ địa chỉ đó Dưới  đây  là  bảng  véc  tơ  ngắt  của  ATmega128  ,  cùng  với  địa  chỉ  của  333 nó  trong  bộ nhớ chương trình Bảng 7.10. Vector ngắt của ATmega128 334 3. Thứ tự ưu tiên ngắt Khơng  như  vi xử lý  họ  8051,  ở  đó  thứ  tự  ưu  tiên  của  các  ngắt  có  thể  thay  đổi được  (  bằng  cách  lập  trình  ).  Với  vi xử  lý  AVR  thứ  tự  ưu  tiên  các  ngắt  là  không  thể  thay  đổi    và  theo  qui  tắc:  “  Một  vec  tơ  ngắt  có  địa  chỉ  thấp  hơn  trong  bộ  nhớ  chương trình có mức độ  ưu tiên cao hơn ”. Chẳn hạn  ngắt ngồi 0 ( INT0 ) có mức độ ưu tiên cao hơn ngắt ngồi 1 ( INT1 ) Để cho phép một ngắt người dùng cần cho phép ngắt tồn cục ( set bit  I trong thanh ghi SREG ) và các bit điều khiển ngắt tương ứng Khi  một  ngắt  xảy  ra  và  đang  được  phục  vụ  thì  bit  I  trong  thanh  ghi  SREG bị xóa, như thế khi có một ngắt khác xảy ra nó sẽ khơng được phục vụ,  do đó để cho phép các ngắt trong khi một ISR ( interrupt service routine ) khác  đang thực thi, thì trong chương trình ISR phải có lệnh SEI để set lại bit I trong SREG 4. Ngắt trong ngắt Khi AVR   đang thực hiện một trình phục vụ ngắt thuộc một ngắt nào  đó  thì  lại  có một  ngắt  khác  được  kích  hoạt.  Trong  những  trường  hợp  như  vậy  thì  một  ngắt  có  mức  ưu tiên  cao  hơn  có  thể  ngắt  một  ngắt  có  mức  ưu  tiên  thấp  hơn.  Lúc  này  ISR  của  ngắt  có  mức  ưu  tiên  cao  hơn  sẽ  được  thực  (*) thi    Khi  thực  hiện  xong  ISR  của  ngắt  có  mức  ưu  tiên  cao hơn thì nó mới  quay lại phục vụ tiếp ISR của ngắt có mức  ưu tiên thấp hơn trước khi trở về  chương trình chính. Đây gọi là ngắt trong ngắt.  Chú ý: ­ Giả định là khi một ISR nào đó đang thực thi thì xảy ra một u cầu  ngắt  từ  một ISR khác có mức  ưu tiên thấp hơn thì ISR có mức  ưu tiên thấp  hơn khơng được phục vụ, nhưng  nó sẽ khơng  bị  bỏ  qua  ln mà  ở  trạng  thái  chờ.  Nghĩa  là  ngay  sau  khi  ISR  có mức  ưu  tiên  cao  hơn  thực  thi  xong  thì  đến lượt ISR có mức  ưu tiên thấp hơn sẽ được phục vụ ­   (*) :   Điều này  chỉ xảy  ra  khi trong  code  của ISR của  ngắt có  mức  ưu tiên thấp hơn có lệnh set bit I trong thanh ghi SREG (đó là lệnh SEI ) 5. Các ngắt ngồi ATmega128  có  8  ngắt  ngoài  từ     INT0  đến  INT7  (  ở  đây  chưa  kể  tới  ngắt  reset  ). Tám  ngắt  này  tương  ứng  với  8  chân  của  MCU  là  INT0  ,INT1,  …,  INT7.  Để  ý  là  ngay   khi các chân INT0, INT1, …, INT7  của  MCU được cấu hình như là chân lối ra, thì các ngắt ngồi vẫn có tác dụng nếu  được cho phép Các  ngắt  ngồi  có  thể  bắt  mẫu  theo  kiểu  cạnh  lên  (  Rising  ),  cạnh  xuống ( Falling ) hay mức thấp ( Low level ). Điều này được qui định trong hai  thanh ghi EICRA và EICRB. Dưới đây là mơ tả chi tiết 2 thanh ghi EICRA và  EICRB và các thanh ghi liên quan tới các ngắt ngồi 335 1.  Thanh ghi External Interrupt Control Register A – EICRA Hình 7.57. Thanh ghi EICRA Tám  bit  của  thanh  ghi  EICRA  sẽ  điều  khiển  kiểu  bắt  mẫu  cho  4  ngắt  INT3, INT2, INT1, INT0. Qui định cụ thể được thể hiện trong Bảng 48  ISCn1 ISCn0 0 1 n = 3, 2, 1, 0 1 Kiểu bắt mẫu Mức thấp sẽ tạo yêu cầu ngắt Dự trữ Cạnh xuống ( Falling ) sẽ tạo yêu cầu ngắt Cạnh lên ( Rising ) sẽ tạo yêu cầu ngắt Bảng 7.11.  Bảng điều khiển kiểu bắt mẫu ngắt 2. Thanh Ghi External Interrupt Control Register B – EICRB Hình 7.58. Thanh ghi EICRB Tám  bit  của  thanh  ghi  EICRA  sẽ  điều  khiển  kiểu  bắt  mẫu  cho  4  ngắt  INT7,  INT6, INT5, INT4. . Qui  định cụ  thể  được thể  hiện trong Bảng  50  ISCn1 ISCn0 Kiểu bắt mẫu Mức thấp sẽ tạo yêu cầu ngắt 336 1 1 n = 7,6, 5, 4 Bất cứ sự thay đổi mức logic nào ở chân INTn sẽ tao ra một yêu cầu ngắt Cạnh xuống ( Falling ) giữa hai mẫu sẽ tạo   yêu cầu ngắt Cạnh lên ( Rising ) giữa hai mẫu  sẽ tạo yêu  cầu ngắt Bảng 7.12. Bảng điều khiển kiểu bắt mẫu ngắt 3.   Thanh Ghi External Interrupt Mask Register – EIMSK Hình 7.59. Thanh ghi EIMSK Khi  cho phép ngắt tồn cục ( set bit I trong thanh ghi SREG thành 1 ) thì  các ngắt vẫn chưa thể thực thi, để ngắt có thể thực thi ta cần phải cho phép  nó,  8  bit  trong  thanh  ghi  EIMSK  sẽ  quyết định  8  ngắt  ngoài  tương  ứng  (  từ  INT7  INT0  )  có  được  cho  phép  hay  khơng.  Khi  một trong  số  8  bit  (  từ  INT7  INT0 ) được set thành 1 và ngắt tồn cục được cho phép thì ngắt ngồi  tương  ứng  được  cho  phép.  Cịn  tín  hiệu  ngắt  là  mức  hay  cạnh  sẽ  do  các  thanh ghi EICRA  và  EICRB  (  nêu  ở  trên  )  qui  định.  Kích  hoạt  bất  cứ  chân  (  Pin  )  nào  trong  8  chân của ngắt ngoài cũngg tạo ra yêu cầu ngắt ngay cả khi chân được   thiết lập thành đầu ra Thanh Ghi External Interrupt Flag Register – EIFR Hình 7.60. Thanh ghi EIFR Đây là tám cờ ngắt tương  ứng với tám ngắt ngồi INT7 INT0. Khi có  tín hiệu u cầu ngắt ngồi thì cờ ngắt tương  ứng sẽ được set thành 1, nếu  ngắt tương  ứng được cho phép   thì MCU sẽ nhảy  tới bảng véc tơ ngắt, cờ  ngắt  sẽ  được  xóa  khi  chương  trình  phục  vụ  ngắt  (  ISR  )  được  thực  thi.  Ngồi ra ta cũngg có set hay xóa cờ  ngắt bằng cách ghi trực tiếp  một giá trị  logic vào nó 5.   Thanh Ghi MCU Control Register – MCUCR 337 Hình 7.61. Thanh ghi MCUCR Trong  phần  này  ta  chỉ  quan  tâm  tới  hai  bit  là:  IVCE  (Interrupt  Vector  Select  )  và  bit   IVSEL  (Interrupt  Vector  Change  Enable  )  của  thanh  ghi  MCUCR. Bit này liên quan đến việc thiết lập vị trí bảng véc tơ ngắt ­ Bit  1  –  IVSEL:  Interrupt  Vector  Select:  Khi  bit  này  là  0  vị  trí  của  bảng  véc  tơ ngắt được đặt ở phần đầu bộ nhớ chương trình. Khi bit này là 1 bảng véc  tơ ngắt được di chuyển tới phần đầu của vùng nhớ Boot Loader ­  Bit 0 – IVCE: Interrupt Vector Change Enable : Bit này phải được ghi thành  để cho phép thay đổi bit IVSEL. Bit IVCE được xóa sau 4 chu kì máy sau khi  nó được set hay  bit  IVSEL   được  ghi.  Trong  lúc  bit  ICVE  đang  set  các  ngắt  sẽ  bị  cấm  cho  tới  khi  bit IVSEL  được  ghi,  nếu  bit  IVSEL   không  được  ghi  thì  các  ngắt  vẫn  bị  cấm  trong  4  cho  kì máy liên tiếp ( sau 4 chu kì máy thì bit  IVCE sẽ tự động bị xóa nên các ngắt được cho phép trở  338 TÀI LIỆU THAM KHẢO Kỹ thuật vi xử lý và lập trình Assembly cho hệ vi xử lý,  Đỗ Xuân Tiến,  2003 Tài   liệu   hướng   dẫn   sử   dụng     thí   nghiệm   MTS­51,   8051   Microcomputer Trainer – K&H MFG. CO.,LTD Tài liệu hường dẫn sử dụng bộ thí nghiệm AVR, Training kit SAT128­ 350 (Dr.kim Training kit Atmega128­ SAT128­350) Vi xử lý – Nguyễn Đình Phú, Đại học sư phạm Kỹ thuật HCM Programming   Embedded   Systems   I   –   Michael   J.Pont,   University   of  Leicester Họ vi xử lý 8051, I. Sott Mackenzie,  dịch: Tống Văn On và Hoàng Đức   Hải, 2001 Microprocessor and IC families ­ Walter H. Buchbaum. Sc.D Mikrocompute Lehrbuch ­ HPI Fachbuchreihen Pflaum Verlag Munchen8051 Development Boad, Rev 5 ­ Paul Stoffregen 10  www.atmel.com  – datasheet Atmega128 11  www.atmel.com  ­ datasheet Atmel 89C51 12 www.robotkim.com/drkimrobot.com 339 ... điện thoại, các tổng đài điện thoại, các hệ thống điều khiển tự động   Vi? ?xử? ?lý? ?đầu tiên có khả năng? ?xử? ?lý? ?4 bit dữ liệu, các? ?vi? ?xử? ?lý? ?này có tốc   độ? ?xử? ?lý? ?rất chậm, các nhà thiết kế cải tiến thành? ?vi? ?xử? ?lý? ?8 bit, sau đó là? ?vi? ?xử? ? lý? ?16 bit và 32 bit. Sự... ­ So sánh sự khác nhau của? ?vi? ?xử? ?lý? ?và? ?vi? ?xử? ?lý? ?8 bit ­? ?Trình? ?tự nạp bộ nhớ Flash của? ?vi? ?xử? ?lý? ?89C51 ­ Các thành phần bên trong sơ đồ khối? ?vi? ?xử? ?lý? ?89C51 ­ So sánh giữa? ?vi? ?xử? ?lý? ?89C51 với 89C52 ­ Các hoạt động Reset của 8051... ­ Nêu được lịch sử phát triển của? ?vi? ?xử? ?lý ­ Phân biệt được? ?vi? ?xử ? ?lý? ?với? ?vi? ?xử ? ?lý? ?về  cấu   trúc ­   Nêu         vi   xử   lý   cho   hệ   thống   nhúng và các tiêu chuẩn lựa chọn một bộ ? ?vi? ? xử? ?lý ­ Tổng hợp và phân tích nội dung bài học

Ngày đăng: 23/03/2022, 22:13