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

Vi xử lý chapter 2

15 12 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 15
Dung lượng 775,85 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nguồn xung nhịp cho các timer là xung vuông có tần số bằng 1/12 tần số xung nhịp cung cấp cho 8051 Nguyên lý hoạt động của bộ định thời • Tần số của bộ định thời luôn bằng 1/12 tần số củ

Trang 1

Bộ định thời họ VXL 8051

Giảng viên: TS Đoàn Thị Hương Giang

ĐT: 037 263 0593 Email: giangdth@epu.edu.vn

Trang 2

Timers /Counters trong 8051

8051 có 2 timers/counters:

– Timer/counter 0

– Timer/counter 1

Chúng có thể được sử dụng như sau:

1 Timerđược sử dụng như một bộ định thời.

– Nguồn tạo xung đồng hồ The clock source is the internal crystal frequency of

the 8051.

2 Đếm sự kiện với chức năngcounter.

Tín hiệu ngoàitừ chân vào để đếm số lượng các sự kiện.

– Có thể dùng để đến số người ra vào cửa, số vòng quay, ….

3 tạo tốc độ baud cho cổng nối tiếp có sẵn trong 8051/8031

VD với timer 16 bit có 16 tầng, tầng cuối cùng chia tần số xung nhịp cho

2 16 =65536 Nguồn xung nhịp cho các timer là xung vuông có tần số bằng

1/12 tần số xung nhịp cung cấp cho 8051

Nguyên lý hoạt động của bộ định thời

• Tần số của bộ định thời luôn bằng 1/12 tần số của thạch anh gắn với 8051

• Bộ đếm/Bộ định thời: Đâ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).

Tràn (overflow): là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó có thể biểu

diễn và quay trở về giá trị 0 Với bộ đếm 8 bit, giá trị tối đa là 255 (tương đương

với FF trong hệ Hexa) và là 65535 (FFFFH) với bộ đếm 16 bit.

Trang 3

Các bộ định thời (Timers)

• Chế độ định thời - Timer

– Tăng sau mỗi chu kỳ máy (tương đương với 12 chu kỳ

thạch anh)

• Chế độ đếm - Counter

– Tăng khi chân T0/T1 chuyển từ 1 - 0 (tín hiệu ngoài)

• Có thể truy cập các giá trị định thời một cách trực tiếp

• Các bộ định thời có thể tạo ra ngắt

• Hoạt động của Timer/Counter:

– Thanh ghi điều khiển chế độ - Mode control register

(TMOD)

– Thanh ghi điều khiển - Control register (TCON)

Chế độ định thời - Timer

• Khởi tạo bộ định thời thông qua các thanh ghi

• Bắt đầu định thời và sau đó 8051 sẽ đếm tiến

• Đầu vào từ nguồn xung đồng hồ hệ thống nội (machine cycle)

• Khi các thanh ghi bằng 0 thì 8051 đặt một bit báo đã đếm xong

ĐK LCD,…

P1

8051

TL0 TH0

P2

Đặt bộ định thời 0

Trang 4

Chế độ đếm - Counter

• Đếm số lượng các sự kiện

– Lưu số lượng các sự kiện đếm được trong thanh ghi

– Nguồn xung đếm từ ngoài ở chân T0(P3.4) đối với

bộ đếm 0

– Nguồn xung đếm từ ngoài ở chân T1(P3.5) đối với

bộ đếm 1

– Đầu vào từ ngoàitrên chân Tx

– Tx (T0 hoặc T1)

T0 P3.4

8051

Xung

TL0 TH0

Đếm số lần chuyển trạng thái từ 1 xuống 0 tới một chân P3.4 TS Đoàn Thị Hương Giang 7

Chế độ đếm - Counter

Timer 0

external

input Pin

3.4

TR0

TH0 TL0 TF0

TF0 goes high when FFFF 0

overflow flag

C/T = 1

Trang 5

Các thanh ghi đặc biệt dùng trong

chế độ đinh thời

SFR của bộ định thời Mục đích Địa chỉ Định địa chỉ bit

TCON Điều khiển 88H Có

TMOD Chọn chế độ 89H Không

TL0 Byte thấp của bộ định thời 0 8AH Không

TL1 Byte thấp của bộ định thời 1 8BH Không

TH0 Byte cao của bộ định thời 0 8CH Không

TH1 Byte cao của bộ định thời 1 8DH Không

T2CON Điều khiển bộ định thời 2 C8H Có

RCAP2L Nhặn byte thấp của bộ định thời 2 CAH Không

RCAP2H Nhận byte cao của bộ định thời 2 CBH Không

TL2 Byte thấp của bộ định thời 2 CCH Không

TH2 Byte cao của bộ định thời 2 CDH Không

Thanh ghi TMOD

• Thanh ghi chế độ timer: TMOD

MOV TMOD,#21H

– 8-bit, ở địa chỉ 89H trong RAM nội

– Thiết lập chế độ sử dụng cho 02 timer

• 4 bit thấp cho Timer 0 (đặt bằng 0000 nếu không sử dụng)

• 4 bit cao cho Timer 1 (đặt bằng 0000 nếu không sử dụng)

– Không được truy cập theo từng bit

• C/T – Chỉ định chế độ Timer/counter:

= 0  Chế độ Timer

= 1  Chế độ Counter

GATE C/T M1 M0 GATE C/T M1 M0

Timer 1 Timer 0

Trang 6

Thanh ghi TMOD

• GATE – cho phép khởi động/dừng timer bằng phần cứng

hay phần mềm:

– GATE=0: Khởi động/dừng timer bằng phần mềm

• Chân INT(P3.2, P3.3) không được sử dụng trong chế độ định thời và

được sử dụng như chức năng của cổng vào/ra thông thường.

– GATE=1: Khởi động/dừng timer bằng phần cứng

• Chân INT(P3.2, P3.3) được sử dụng trong chế độ counter C/T

11

GATE C/T M1 M0 GATE C/T M1 M0

Timer 1 Timer 0

TS Đoàn Thị Hương Giang

M1, M0

• M0 và M1 - Lựa chọn chế độ cho timer 0 & 1.

M1 M0 Chế độ Ý nghĩa hoạt động

0 0 0 13-bit timer – chế độ định thời 13 bit  8191

8-bit THx + 5-bit TLx (x= 0 hoặc 1)

0 1 1 16-bit timerchế độ định thời 16 bit  65535

8-bit THx + 8-bit TLx

1 0 2 8-bit tự động nạp lại  255

8-bit timer/counter tự động nạp lại;

THx giữ giá trị để nạp lại cho TLx khi timer đếm tràn

1 1 3 8- bit: Chế độ định thời chia tách; Timer0 dùng cờ tràn, timer1

không dùng chế độ tràn

GATE C/T M1 M0 GATE C/T M1 M0

Timer 1 Timer 0

Trang 7

Các chế độ của bộ định thời

Ví dụ 1

• Tìm giá trị nạp cho TMOD nếu muốn lập trình timer 0 ở chế độ 2

Sử dụng XTAL của 8051 làm nguồn xung clock và sử dụng lệnh để

khởi động cho bộ định thời

Giải:

TMOD= 0000 0 10

Timer 0, Chế độ 2(SM0 = 0; SM1 =1) C/T = 0 => Chế độ timer

GATE = 0 =>ĐK timer khởi động và dừng bằng

phần mềm

timer 1 timer 0

Trang 8

Thanh ghi điều khiển định thời (TCON )

• Thanh ghi TCON chứa các bit điều khiển và trạng thái của bộ

định thời 0 và bộ định thời 1

• Bốn bit cao trong TCON (TCON.4 - TCON.7 ) được dùng để

điều khiển các bộ định thời hoạt động hoặc ngừng (TR0, TR1)

hoặc để báo các bộ định thời tràn (TF0, TF1)

• Bốn bit thấp của TCON ( TCON.0 - TCON.3 ) không dùng để

điều khiến các bộ định thời, chúng được dùng để phát hiện và

khởi động các ngắt ngoài

Thanh ghi điều khiển định thời (TCON )

TCON.7 TF1

Cờ báo tràn của bộ định thời 1

Được set bởi phần cứng khi có tràn, được xóa bởi phần mềm, hoặc bởi phần cứng khi bộ vi xử lý trỏ đến trình phục vụ ngắt.

TCON.6 TR1

Bit diều khiển hoạt động của bộ định thời 1.

Bit này được set hoặc được xóa bởi phần mềm để điều khiển bộ định thời hoạt động hay ngưng hoạt động.

TCON.5 TF0 Cờ báo tràn của bộ định thời 0

TCON.4 TR0 bit điều khiển hoạt động của bộ định thời 0

TCON.3 IE1

Cờ ngắt bên ngoài 1 (kích khởi cạnh ) Cờ này được set bởi phần cứng khi có cạnh âm (xuống) xuất hiện trên chân /INT1, Được xóa bởi phần mềm hoặc phần cứng khi CPU trỏ đến trình phục vụ ngắt

TCON.2 IT1

Cờ ngắt bên ngoài 1 ( kích khởi cạnh hoặc mức ) Cờ này được set hoặc xóa bởi phần mềm khi xảy ra cạnh âm (xuống ) hoặc mức thấp tại chân ngắt ngoài

TCON.1 IE0 Cờ ngắt bên ngoài 0 (kích khởi cạnh)

TCON.0 IT0 Cờ ngắt bên ngoài 0 (kích khởi cạnh hoặc mức) TS Đoàn Thị Hương Giang 16

Trang 9

Các bước lập trình ở chế độ 1

Để tạo ra một độ trễ thời gian dùng chế độ 1 (16 bit) của bộ

định thời thì cần phải thực hiện các bước dưới đây:

1 Nạp giá trị TMOD cho thanh ghi báo độ định thời nào

(Timer0 hay Timer1) được sử dụng và chế độ nào được

chọn.

2 Nạp các thanh ghi TL và TH với các giá trị đếm ban đầu.

3 Khởi động bộ định thời.

4 Duy trì kiểm tra cờ bộ định thời TF bằng một vòng lặp

để xem nó được bật lên 1 không Thoát vòng lặp

khi TF được lên cao.

5 Dừng bộ định thời.

6 Xoá cờ TF cho vòng kế tiếp.

7 Quay trở lại bước 2 để nạp lại TL và TH.

Cách tính toán độ trễ (1)

• Sử dụng chế độ 1 (16 bit) của bộ định thời đối với tần

số thạch anh XTAL = f (MHz):

Trang 10

Các bước để tìm các giá trị của các

thanh ghi TH và TL

1 Tính t cần trễ cho chu kỳ lệnh T=1.085  s

2 Thực hiện (65535 – n +1)T = t => n

3 Chuyển đổi kết quả ở bước 2 sang số Hex:

ta có YYXX là giá trị Hexa ban đầu cần

phải nạp vào các thanh ghi Timer.

4 Đặt TL = XX và TH = YY

Bảng tính giá trị THTL theo các chế độ

Chế độ Công thức tính

Trang 11

Ví dụ

thì để tạo trễ là 6ms thì nên dùng timer0 chế

độ nào?

Chế độ Công thức tính

Chế độ 8 bit t = (256)*10-6=0.256ms

Chế độ 13 bit t = (8192)*10-6 = 8.192ms

Chế độ 16 bit t = (65536)*10-6=65,536ms

Bảng các thời gian trễ tối đa của bộ

định thời

Tần số thạch anh 6MHz 12MHz 18MHz 24MHz 36MHz

Chế độ 8 bit 0.512ms 0.256ms 0.17ms 0.128ms 0.085ms

Chế độ 13 bit 16.384ms 8.192ms 5.461ms 4.096ms 2.73ms

Chế độ 16 bit 131.072ms 65.536ms 43.69ms 32.768ms 21.845ms

Trang 12

Các bước lập trình ở chế độ 1

Để tạo ra một độ trễ thời gian dùng chế độ 1 (16 bit) của bộ định

thời thì cần phải thực hiện các bước dưới đây:

1 Nạp giá trịTMODcho thanh ghi báo độ định thời nào (Timer0

hay Timer1) được sử dụng và chế độ nào được chọn

2 Nạp các thanh ghi TLx và THxvới các giá trị đếm ban đầu

3 Khởi độngbộ định thời (TRx)

4 Duy trì kiểm tra cờbộ định thờiTFxbằng một vòng lặp để

xem nó được bật lên 1 không Thoát vòng lặp khi TF được lên

cao

5 Dừngbộ định thời

6 Xoá cờ TFxcho vòng kế tiếp

7 Quay trở lại bước 2 để nạp lại TL và TH.

Ví dụ tính TH, TL ViÕt chư¬ng tr×nh t¹o xung f = 2KHz trªn P1.5?

Giải:

• Chu kú xung ra P1.5 :

• Thêi gian cao thÊp/cao cña xung hay thời gian trễ:

”t”= Txung/2 = 250s

• Tần số thạch anh: fta=12MHz=> T=12/fta=1s

• Gi¸ trÞ cÇn n¹p vµo TH vµ TL lµ:

(65.535 – THTL+1)T = t

THTL=65286

THTL=FF06=> TH=0FFh, TL=06h

s ms f

10 2 1

3   

P1.5

250  s

Trang 13

Chương trình

CLR TF0 ; Xóa cờ tràn T0

MOV TMOD,#01h ;DùngT0 ở chế độ1

AGAIN:

MOV TL0,#06h

MOV TH0,#0FFh

SETB TR0 ; Khởi động T0

BACK:

JNB TF0,BACK ; Nhảy tại chỗ nếu cờ tràn chưa báo 0

CLR TR0 ; Dừng T0

CPL P1.5 ; Đảo giá trị cuả cổng P1.5

CLR TF0 ; Xóa cờ tràn T0

JMP AGAIN ; Lặp lại quá trình chạy T0

Main:

cpl P1.5

lcall Timer1

sjmp Main

Timer1:

CLR TF1

MOV TMOD, #10h

AGAIN:

MOV TL1,#BFH

SETB TR1

BACK:

JNB TF1,BACK

CLR TR1

CLR TF1

ret

end

Main:

CLR TF1 MOV TMOD,#10h

AGAIN:

MOV TL1,#06h MOV TH1,#0FFh SETB TR1 BACK:

JNB TF1,BACK CLR TR1

CPL P1.5

CLR TF1 JMP AGAIN

end

Trang 14

;Tạo xung dung timer

MOV TMOD,#01h ;Dựng T0 ở chế độ 1

MAIN:

CPL P0.1 ;Đảo giỏ trị cổng P0.1

CALL Delay_Timer0 ;Gọi chương trinh trễ

;Tạo trễ dựng timer

Delay_Timer0:

AGAIN:

JNB TF0,AGAIN ; TF0 = 0 nhảy tại chỗ chờ timer0 đếm xong

RET

Vớ dụ: Tạo xung cú độ rộng 50% trờn chõn P1.0

8s = 200 x 0.04s = 200 x 40,000  s  40,000 nhịp đếm, mỗi nhịp 1  s

- Giá trị nạp vào T1 là : 65,536 – 40,000 = 25,536 = 63BFH

( hoặc : FFFFh – 9C40H = 63BFH)

- Lặp 200 lần

Chương trình : = Sai

Wait8s:

CLR TF1 ;Xóa cờ tràn T1 MOV TMOD,#10h ; Dùng T1 ở chế độ 1 MOV R3,#200 ; Lặp 200 lần AGAIN: MOV TL1,# 0 BF H

MOV TH1,#63 H

SETB TR1 BACK: JNB TF1,BACK ; Nhảy tại chỗ nếu cờ tràn bằng 0

CLR TR1 ; Tắt T1 CLR TF1 ; Xóa cờ tràn DJNZ R3,AGAIN ; Nếu R3 khác 0 thì lặp lại

RET

Viết ch ương trình tạo trễ 8s dùng T1

Trang 15

Thời gian trễ t=8s => số thời gian quá lớn t= 8s = 200*0.04s

Thực hiện lặp 200 lần thời gian tạo trễ của timer=> coi nh tính toán cho timer 1 với

thời gian trễ là t1=0.04s

Chu kỳ lệnh: T= 1  s

Giá trị nạp vào T1 là: (65535-THTL+1)*T=t1

 65,536 – 40,000 = 25,536 = 63BF H (hoặc : FFFFh – 9C40 = 63BF)

Lặp 200 lần:

CLR TF1 ;Xóa cờ tràn T1

MOV TMOD,#10h ; Dùng T1 ở chế độ 1

MOV R3,#200 ; Lặp 200 lần

AGAIN:

MOV TL1,#BF

MOV TH1,#63

SETB TR1

BACK:

JNB TF1,BACK ; Nhảy tại chỗ nếu cò tràn bằng 0

CLR TR1 ;Tắt T1

CLR TF1 ;Xóa cờ tràn

DJNZ R3,AGAIN ;Nếu R3 khác 0 thì lặp lại

Viết chương trình tạo trễ 8s dùng T1

To Chapter 4….

Ngày đăng: 12/10/2022, 01:21

HÌNH ẢNH LIÊN QUAN

Bảng tớnh giỏ trị THTL theo cỏc chế độ - Vi xử lý chapter 2
Bảng t ớnh giỏ trị THTL theo cỏc chế độ (Trang 10)
Chế độ 8 bit t= (256)*10-6=0.256ms - Vi xử lý chapter 2
h ế độ 8 bit t= (256)*10-6=0.256ms (Trang 11)
w