Tải bản đầy đủ (.doc) (8 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (298.85 KB, 8 trang )

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 .


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 )


_Đế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


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.


.



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



đ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


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



×