intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Vi xử lý - Chương 4: Các chức năng họ 8051

Chia sẻ: Cố Tiêu Tiêu | Ngày: | Loại File: PPT | Số trang:99

15
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Vi xử lý - Chương 4: Các chức năng họ 8051. Chương này cung cấp cho sinh viên những nội dung gồm: timer; các thanh ghi của timer; điều khiển các bộ định thời; các chế độ định thời; port nối tiếp; thanh ghi điều khiển port nối tiếp SCON; tốc độ baud cho port nối tiếp; interrupt;... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Vi xử lý - Chương 4: Các chức năng họ 8051

  1. Đại Học Giao Thông Vận Tải Tp.HCM Khoa Điện – Điện Tử Viễn Thông Học phần: Vi Xử Lý Chương 4: Các chức năng họ 8051 Giảng viên: TS. NGUYỄN HỮU CHÂN THÀNH
  2. Chương 4 bao gồm 3 nội dung: 1. Timer. 2. Port nối tiếp. 3. Interrupt.
  3. . Timer
  4. 1. Giới thiệu -Một bộ định thời (timer) là một chuỗi các Flip Flop (FF) với mỗi FF là một mạch chia 2. Chuỗi này nhận một tín hiệu ngõ vào làm xung clock kích cho tầng đầu tiên, ngõ ra của tầng đầu lại trở thành nguồn xung clock cho tầng kế tiếp. Ngõ ra của tầng cuối cùng làm xung clock cho một FF báo tràn timer hay còn gọi là cờ tràn (overflow flag). Cờ tràn này sẽ được kiểm tra bởi phần mềm hay tạo ra một ngắt (interrupt). Hình dưới minh họa một timer đơn giản 3-bit. - Giá trị nhị phân trong các FF của timer được dùng để tính số xung clock (số chu kì) của tín hiệu ngõ vào từ khi timer bắt đầu đếm. 4
  5. 1. Giới thiệu - 8051/8031 có 2 timer 16 bit: + Timer 0: số đếm chứa trong thanh ghi TH0 (byte cao) và TL0 (byte thấp) + Timer 1: số đếm chứa trong thanh ghi TH1 (byte cao) và TL1 (byte thấp) Ngoài ra, các chip 8032/8052 còn có thêm timer 2. - Các timer chỉ đếm lên (0000H ÷ FFFFH). Khi số đếm tràn từ FFFFH xuống 0000H, cờ tràn sẽ được đặt lên 1. 5
  6. 2. Các thanh ghi của timer a. Thanh ghi chế độ định thời (TMOD): - Không được định địa chỉ bit. - Được dùng để định chế độ hoạt động cho các timer. - Chức năng từng bit: + M1, M0: chọn chế độ hoạt động. + C/T: bit chọn chức năng đếm hoặc định thời cho timer. + Gate: bit điều khiển cổng cho bộ định thời. 6
  7. 2. Các thanh ghi của timer b. Thanh ghi điều khiển định thời (TCON): - Chứa các bit điều khiển và trạng thái của timer 0 và 1 ở 4 bit cao, 4 bit thấp được dùng cho chức năng ngắt (interrupt). - Được định địa chỉ bit. - Chức năng từng bit: + TFx: cờ tràn của timer x (x là 0 hay 1) + TRx = 0: không cho phép timer chạy. + TRx = 1: cho phép timer chạy. 7
  8. 3. Điều khiển các bộ định thời 8
  9. 3. Điều khiển các bộ định thời - (Counter/Timer): + C/T= 0: timer nhận xung clock từ bộ dao động nội (sau khi qua bộ chia 12). Ứng dụng: thường dùng cho việc định thời một khoảng thời gian (mỗi số đếm tương ứng với 1 chu kỳ máy). + C/T = 1: timer nhận xung clock từ chân Tx (P3.4 đối với timer 0 và P3.5 đối với timer 1). Ứng dụng: thường dùng để đếm sự kiện bên ngoài. Mỗi sự kiện tạo ra một xung kích vào chân Tx (tích cực cạnh xuống). Số các sự kiện được xác định trong phần mềm bằng cách đọc các thanh ghi định thời (THx/TLx), giá trị 16-bit trong các thanh ghi này tăng theo mỗi sự kiện. 9
  10. 3. Điều khiển các bộ định thời - Gate: + Gate = 0: việc điều khiển timer x chỉ phụ thuộc vào TRx. TRx = 0: không cho phép timer x chạy. TRx = 1: cho phép timer x chạy. + Gate = 1: việc điều khiển timer x phụ thuộc vào TRx và /INTx. TRx = 1 và /INTX= 1: cho phép timer chạy. Ứng dụng: thường dùng để đo độ rộng xung (thời gian xung ở mức cao) đưa vào ở chân . Độ rộng xung tương ứng với số đếm trong THx/TLx. 10
  11. 4. Các chế độ định thời a. Chế độ 0 - Xác lập bit M1M0 = 00 - Là chế độ định thời 13-bit tương thích với bộ vi điều khiển 8048 trước đó. Chế độ này thường ít dùng. 11
  12. 4. Các chế độ định thời b. Chế độ 1 - Xác lập bit M1M0 = 01 - Là chế độ định thời 16-bit: số đếm 16-bit chứa trong cặp thanh ghi THx/TLx khoảng đếm tối đa là 65536 chu kì máy. - Giá trị bắt đầu đếm được nạp vào THx và TLx. Khi timer tràn, để nạp lại giá trị bắt đầu đếm cần phải dừng timer. 12
  13. 4. Các chế độ định thời Ví dụ 1: Viết 1 đoạn chương trình khởi động timer 0 ở chế độ 1 và dùng timer 0 để tạo ra 1 xung mức cao rộng 1ms ở chân P1.0. Giả sử dùng thạch anh 12MHz. 13
  14. 4. Các chế độ định thời ; 8051 code MOV TMOD,#00000001B ; khởi động timer 0 ở chế độ 1 CLR P1.0 ; xóa P1.0 MOV TH0,#HIGH(-1000) ; nạp byte cao của -1000 (FCH) vào TH0 MOV TL0,#LOW(-1000) ; nạp byte thấp của -1000 (18H) vào TL0 SETB TR0 ; cho timer 0 chạy SETB P1.0 ; đặt P1.0 lên mức cao JNB TF0,$ ; chờ cho đến khi timer tràn (TF0 = 1) CLR P1.0 ; xóa P1.0 CLR TF0 ; xóa cờ tràn TF0 để dùng cho các lần sau 14
  15. 4. Các chế độ định thời Ví dụ 2: Viết chương trình con tạo trễ 200ms dùng timer 1. Giả sử fOSC = 12MHz. Hướng dẫn: fOSC = 12MHz chu kỳ máy TM= 1 s. Nếu dùng timer 1 ở chế độ 1 thì thời gian định thời tối đa là 65536 s < 200.000 s = 200ms phải dùng thêm vòng lặp ngoài. Để đơn giản, mỗi vòng lặp sẽ delay 50.000 s số lần lặp là 4. 15
  16. 4. Các chế độ định thời ; 8051 code DELAY_200MS: MOV TMOD,#10H MOV R7,#4 LOOP: MOV TH1,#HIGH(-50000) MOV TL1,#LOW(-50000) SETB TR1 JNB TF1,$ CLR TR1 CLR TF1 DJNZ R7, LOOP RET 16
  17. 4. Các chế độ định thời Ví dụ 3: Viết chương trình dùng timer tạo sóng vuông đối xứng có tần số 1KHz trên chân P1.0. Hướng dẫn: f = 1KHz T=1000 s tH = tL = 500 s Tần số thạch anh: fOSC = 12MHz chu kỳ máy TM=1 s tH = tL = 500TM 17
  18. 4. Các chế độ định thời ; 8051 code, using TIMER 0 ORG 0 MOV TMOD,#01H LOOP: MOV TH0,#HIGH(-500) MOV TL0,#LOW(-500) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 CPL P1.0 SJMP LOOP END 18
  19. 4. Các chế độ định thời c. Chế độ 2 - Xác lập bit M1M0 = 10 - Là chế độ định thời 8 bit tự động nạp lại. + TLx: bộ đếm 8 bit khoảng đếm tối đa là 256 chu kì máy. + THx: lưu giá trị bắt đầu đếm được cài đặt. - Mỗi khi timer tràn từ FFH xuống 00H, không chỉ cờ tràn được đặt lên 1 mà giá trị lưu trong THx còn được tự động nạp vào cho TLx (không cần dừng timer) và việc đếm sẽ tiếp tục từ giá trị này cho đến khi xảy ra lần tràn kế tiếp rồi lặp lại… 19
  20. 4. Các chế độ định thời Ví dụ 4: Viết chương trình con delay 100 s dùng timer. Giả sử fOSC = 12MHz. Hướng dẫn: Do khoảng thời gian tạo trễ là 100 s = 100 TM < 256 có thể dùng timer ở chế độ 2. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2