1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

chuong 4 mạch đo tốc độ động cơ và giá cước taxi

8 149 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 309,5 KB

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

Nội dung

Chương 4:Bộ Hoạt Động Định thời4.1 – Bộ định thời TIMER0 Trong phần này ta sẽ làm bước đầu làm quen với các Timer của vi điều khiển PIC16F877A và các thao tác cơ bản đối với các Timer, b

Trang 1

Chương 4:Bộ Hoạt Động Định thời

4.1 – Bộ định thời TIMER0

Trong phần này ta sẽ làm bước đầu làm quen với các Timer của vi điều khiển PIC16F877A và các thao tác cơ bản đối với các Timer, bao gồm thao tác khởi tạo và xử lí ngắt Để cụ thể hơn ta sẽ đi sâu vào ứng dụng sau:hiển thị các giá trị đã được cập nhật ra LED 7 đoạn

Bộ định thời/bộ đếm Timer0 cĩ các đặc tính sau :

Bộ định thời / bộ đếm 8 bit

Cho phép đọc và ghi

Bộ chia 8 bit lập trình được bằng phần mềm

Chọn xung clock nội hoặc ngoại

Ngắt khi cĩ sự tràn từ FFh đến 00h

Chọn cạnh cho xung clock ngồi

Bên dưới là sơ đồ khối của bộ định thời Timer0 và bộ chia dùng chung với WDT

Chế độ định thời (Timer) được chọn bằng cách xĩa bit T0CS ( OPTION_REG<5> Trong chế độ định thời , bộ định thời Timer0

sẽ tăng dần sau mỗi chu kỳ lệnh ( khơng cĩbộ chia ) Nếu thanh ghi TMR0 được ghi thì sự tăng sẽ bị ngăn lại sau hai chu kỳ lệnh Chế độ đếm (Counter) được chọn bằng cách set bit T0SC (OPTION_REG<5> ) Trong chế độ đếm , Timer0 sẽ tăng dần ở mỗi cạnh lên hoặc cạnh xuống của chânRA4/T0CKI Sự tăng cạnh được xác định bởi bit Timer0 Source Edge Select , T0SE (OPTION_REG<4> ) Bộ chia chỉ được dùng chung qua lại giữa bộ định thời Timer0 và bộ định thời Watchdog Bộ chia khơng cho phép đọc hoặc ghi

Trang 2

Ngắt TMR0 được phát ra khi thanh ghi TMR0 tràn từ FFh đến 00h

Sự tràn này sẽ set bit T0IF (INTCON<2>) Ngắt này có thể được giấu đi bằng cách xóa đi bit T0IE(INTCON<5>) Bit T0IF cần phải được xóa trong chương trình bởi thủ tục phục vụngắt của bộ định thời Timer0 trước khi ngắt này được cho phép lại

2 – Sử dụng Timer0 với xung clock ngoại

Khi bộ chia không được sử dụng , clock ngoài đặt vào thì giống như bộ chia ở ngõ ra Sự đồng bộ của chân T0CKI với clock ngoài được thực hiện bằng cách lấy mẫu bộ chia ở ngõ ra trên chân Q2

và Q4 Vì vậy thưc sự cần thiết để chân T0CKIở mức cao trong ít nhất 2 chu kỳ máy và ở mức thấp trong ít nhất 2 chu kỳ máy

4.2*Bộ định thời TMR1 :

Bộ định thời 1 là một bộ định thời/bộ đếm 16 bit gồm hai thanh ghi TMR1H ( byte cao ) và TMR1L ( byte thấp ) mà có thể đọc hoặc ghi Cặp thanh ghi này tăng số đếm từ0000h đến FFFFh và một tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFh xuống0000h Ngắt, nếu được phép có thể phát ra khi có số đếm tràn và được đặt ở bit cờ ngắt TMR1IF Ngắt có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit cho phép ngắtTMR1IE.Bộ định thời Timer1 có thể được cấu hình để hoạt động một trong hai chế độ sau:

_Định thời một khoảng thời gian ( Timer )

Trang 3

_Đếm sự kiện ( Counter )

Việc lựa chọn một trong hai chế độ được xác định bằng cách đặt hoặc xóa bit chọn clock TMR1CS Trong chế độ định một khoảng thời gian, bộ định thời tăng số đếm lênsau mỗi chu kỳ lệnh Trong chế độ đếm sự kiện, bộ định thời tăng sau mỗi

cạnh lên của clock ngoài đặt vào Bộ định thời 1 có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit điều khiển TMR1ON.\

1 – Chế độ Timer

Chế độ Timer được chọn bằng cách xóa bit TMR1CS Trong chế độ này, nguồn clock đặt vào Timer là mạch dao động FOSC/4 Bit điều khiển đồng bộ không bị tác động vì clock ngoài luôn luôn đồng bộ

*Chế độ counter

Trong chế độ này, bộ định thời tăng số đếm qua nguồn clock ngoài Việc tăng xảy ra sau mỗi cạnh lên của xung clock ngoài

Bộ định thời phải có một cạnh lên trước khi việc đếm bắt đầu

Trang 4

4.3– Bộ định thời Timer2

Bộ định thời 2 là bộ định thời 8 bit với một bộ chia và một bộ Postscaler Nó thường được dùng chung với bộ CCP trong chế độ PWM ( sẽ được đề cập ở phần sau ) Thanh ghi TMR2 có thể đọc hoặc ghi và được xóa khi có bất kỳ tín hiệu reset nào của thiết bị.Bộ định thời 2 có một thanh ghi chu kỳ 8 bit,PR2.Bộ định thời tăng số đếm lên từ 00hđến giá trị được ghi trong thanh ghi TR2

và sau đó reset lại giá trị 00h trong chu kỳ kếtiếp PR2 là thanh ghi có thể đọc hoặc ghi.Giá trị trùng hợp trong thanh ghi TMR2 được đi qua bộ postscaler 4 bit để phát ra

một ngắt TMR2(được đặt ở bit cờ ngắt TMR2IF) Bộ định thời 2 có thể được tắt ( không hoạt động ) bằng cách xóa bit điều khiển TMR2ON để giảm thiểu công suất tiêu tán nguồn

Trang 5

.

Trang 6

4.4 NGẮT (INTERRUPT)

PIC16F877A có đến 15 nguồn tạo ra hoạt động ngắt được điều khiển bởi thanh ghi INTCON (bit GIE) Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuôc vào bit GIE và các bit điều khiển khác Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2 Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2

Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB (PORTB Interrupt on change), việc xác định ngắt nào xảy ra cần 3 hoặc 4chu kì lệnh tùy thuộc vào thời

Trang 7

điểm xảy ra ngắt.Cần chú ý là trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra

*Giới Thiệu 1 số thanh ghi trong PIC

P2.24 Thanh ghi RCSTA: địa chỉ 18h

Thanh ghi chứa các bit trạng thái và các bit điều khiển quá trình nhận dữ liệu qua

chuẩn giao tiếp USART

P2.25 Thanh ghi XTREG: địa chỉ 19h

Thanh ghi đóng vai trò là buffer đệm 8 bit trong quá trình truyền dữ liệu thông qua

chuẩn giao tiếp USART

P2.26 Thanh ghi RCREG: địa chỉ 1Ah

Thanh ghi đóng vai trò là buffer đệm trong quá trình nhận dữ liệu qua chuẩn giao tiếp USART

P2.27 Thanh ghi CCPR2L: địa chỉ 1Bh

Thanh ghi chứa 8 bit thấp của khối CCP2

P2.28 Thanh ghi CCPR2H: địa chỉ 1Ch

Thanh ghi chứa 8 bit cao của khối CCP2

P2.29 Thanh ghi ADRESH: địa chỉ 1Eh

Trang 8

Thanh ghi chứa byte cao của kết quả quá trình chuyển đổi ADC

P2.30 Thanh ghi ADCON0: địa chỉ 1Fh

Đây là một trong hai thanh ghi điều khiển khối chuyển đổi ADC Thanh ghi còn lại là thanh ghi ADCON1 (địa chỉ 9Fh)

P2.32 Thanh ghi TRISA: địa chỉ 85h

Thanh ghi điều khiển xuất nhập của các pin trong PORTA

P2.33 Thanh ghi TRISB: địa chỉ 86h, 186h

Thanh ghi điều khiển xuất nhập của các pin trong PORTB

P2.34 Thanh ghi TRISC: địa chỉ 87h

Thanh ghi điều khiển xuất nhập của các pin trong PORTC

P2.35 Thanh ghi TRISD: địa chỉ 88h

Thanh ghi điều khiển xuất nhập của các pin trong PORTD

P2.36 Thanh ghi TRISE: địa chỉ 89h

Thanh ghi điều khiển xuất nhập của các pin trong PORTE, điều khiển cổng giao tiếp song song PSP (Parallel Slave Port)

P2.37 Thanh ghi PIE1: địa chỉ 8Ch

Thanh ghi chứa các bit cho phép các ngắt ngoại vi

P2.38 Thanh ghi PIE2: địa chỉ 8Dh

Thanh ghi chứa các bit cho phép các ngắt ngọai vi

P2.39 Thanh ghi PCON: địa chỉ 8Eh

Thanh ghi điều khiển chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi điều khiển

P2.40 Thanh ghi SSPCON2: địa chỉ 91h

Thanh ghi điều khiển các chế độ hoạt động của chuẩn giao tiếp I2C

P2.41 Thanh ghi PR2: địa chỉ 92h

Thanh ghi dùng để ấn định trước giá trị đếm cho Timer2 Khi vi điều khiển được reset, PR2 mang giá trị FFh Khi ta đưa một giá trị vào thanh ghi PR2, Timer2 sẽ đếm từ 00h cho đến khi giá trị bộ đếm của Timer2 bằng với giá trị của bộ đếm trong thanh ghi PR2 Như vậy mặc định Timer2 sẽ đếm từ 00h đến FFh

P2.42 Thanh ghi SSPADD: địa chỉ 93h Thanh ghi chứa địa

chỉ của vi điều khiển khi hoạt động ở chuẩn giao tiếp I2C Slavemode Khi không dùng để chứa địa chỉ (I2C Master mode) SSPADD được dùng để chứa giá trị tạo ra xung clock đồng bộ tại pin SCL Và 1 số thanh ghi khác

Ngày đăng: 07/09/2017, 15:28

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w