TIMER 1 Timer

Một phần của tài liệu Thiết kế và điều khiển mô hình thang máy bằng vi xử lý PIC 16F877A (Trang 61)

- K tn i vi máy tính đ giám sát và ho tđ ngca mô hình thang máy.

3.TIMER 1 Timer

3.1. Timer0

ây là m t trong ba b đ m ho c b đnh th i c a vi đi u khi n PIC16F877A. Timer0 là b đ m 8 bit đ c k t n i v i b chia t n s (prescaler) 8 bit. C u trúc c a Timer0 cho phép ta l a ch n xung clock tác đ ng và c nh tích c c c a xung clock. Ng t Timer0 s xu t hi n khi Timer0 b tràn. Bit TMR0IE là bit đi u khi n c a Timer0. TMR0IE=1 cho phép ng t Timer0 tác đ ng, TMR0IF= 0 không cho phép ng t Timer0 tác đ ng. S đ kh i c a Timer0 nh sau:

Hình 6.3 – S đ kh i c a Timer 0

Mu n Timer0 ho t đ ng ch đ Timer ta clear bit TOSC, khi đó giá tr thanh ghi TMR0 s t ng theo t ng chu kì xung đ ng h (t n s vào Timer0 b ng ¼ t n s oscillator). Khi giá tr thanh ghi TMR0 t FFh tr v 00h, ng t Timer0 s xu t hi n.

Thanh ghi TMR0 cho phép ghi và xóa đ c giúp ta n đnh th i đi m ng t Timer0 xu t hi n m t cách linh đ ng. Mu n Timer0 ho t đ ng ch đ counter ta set bit TOSC. Khi đó xung tác đ ng lên b đ m đ c l y t chân RA4/TOCK1. Bit TOSE cho phép l a ch n c nh tác đ ng vào b t đ m. C nh tác đ ng s là c nh lên n u TOSE=0 và c nh tác đ ng s là c nh xu ng n u TOSE=1.

Khi thanh ghi TMR0 b tràn, bit TMR0IF s đ c set. ây chính là c ng t c a Timer0. C ng t này ph i đ c xóa b ng ch ng trình tr c khi b đ m b t đ u th c hi n l i quá trình đ m. Ng t Timer0 không th “đánh th c” vi đi u khi n t ch đ sleep.

B chia t n s (prescaler) đ c chia s gi a Timer0 và WDT (Watchdog Timer). i u đó có ngh a là n u prescaler đ c s d ng cho Timer0 thì WDT s không có đ c h tr c a prescaler và ng c l i. Prescaler đ c đi u khi n b i thanh ghi OPTION_REG. Bit PSA xác đnh đ i t ng tác đ ng c a prescaler. Các bit PS2:PS0 xác đnh t s chia t n s c a prescaler. Xem l i thanh ghi OPTION_REG đ xác đnh l i m t cách chi ti t v các bit đi u khi n trên.

Các l nh tác đ ng lên giá tr thanh ghi TMR0 s xóa ch đ ho t đ ng c a prescaler. Khi đ i t ng tác đ ng là Timer0, tác đ ng lên giá tr thanh ghi TMR0 s xóa prescaler nh ng không làm thay đ i đ i t ng tác đ ng c a prescaler. Khi đ i t ng tác đ ng là WDT, l nh CLRWDT s xóa prescaler, đ ng th i prescaler s ng ng tác v h tr cho WDT.

Các thanh ghi đi u khi n liên quan đ n Timer0 bao g m: - TMR0 (đa ch 01h, 101h) : ch a giá tr đ m c a Timer0.

- INTCON (đa ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép ng t ho t đ ng (GIE và PEIE).

- OPTION_REG (đa ch 81h, 181h): đi u khi n prescaler.

3.2. TIMER1

Timer1 là b đnh th i 16 bit, giá tr c a Timer1 s đ c l u trong hai thanh ghi (TMR1H:TMR1L). C ng t c a Timer1 là bit TMR1IF. Bit đi u khi n c a

Timer1 s là TMR1IE.

T ng t nh Timer0, Timer1 c ng có hai ch đ ho t đ ng: ch đ đnh th i (timer) v i xung kích là xung clock c a oscillator (t n s c a timer b ng ¼ t n s c a oscillator) và ch đ đ m (counter) v i xung kích là xung ph n ánh các s ki n c n đ m l y t bên ngoài thông qua chân RC0/T1OSO/T1CKI (c nh tác đ ng là c nh lên). Vi c l a ch n xung tác đ ng (t ng ng v i vi c l a ch n ch đ ho t đ ng là timer hay counter) đ c đi u khi n b i bit TMR1CS.

Ngoài ra Timer1 còn có ch c n ng reset input bên trong đ c đi u khi n b i m t trong hai kh i CCP (Capture/Compare/PWM). Khi bit T1OSCE đ c set, Timer1 s l y xung clock t hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đ m. Timer1 s b t đ u đ m sau c nh xu ng đ u tiên c a xung ngõ vào. Khi đó PORTC s b qua s tác đ ng c a hai bit TRISC và PORTC đ c gán giá tr 0. Khi clear bit T1OSCEN Timer1 s l y xung đ m t oscillator ho c t chân RC0/T1OSO/T1CKI.

Timer1 có hai ch đ đ m là đ ng b (Synchronous) và b t đ ng b (Asynchronous). Ch đ đ m đ c quy t đnh b i bit đi u khi n.

Khi =1 xung đ m l y t bên ngoài s không đ c đ ng b hóa v i xung clock bên trong, Timer1 s ti p t c quá trình đ m khi vi đi u khi n đang ch đ sleep và ng t do Timer1 t o ra khi b tràn có kh n ng “đánh th c” vi đi u khi n. ch đ đ m b t đ ng b ,

Timer1 không th đ c s d ng đ làm ngu n xung clock cho kh i CCP

(Capture/Compare/Pulse width modulation). Khi =0 xung đ m vào Timer1 s đ c đ ng b hóa v i xung clock bên trong. ch đ này Timer1 s không ho t đ ng khi vi đi u khi n đang ch đ sleep.

Các thanh ghi liên quan đ n Timer1 bao g m:

- INTCON (đa ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép ng t ho t đ ng (GIE và PEIE).

- PIR1 (đa ch 0Ch): ch a c ng t Timer1 (TMR1IF). - PIE1( đa ch 8Ch): cho phép ng t Timer1 (TMR1IE).

- TMR1L (đa ch 0Eh): ch a giá tr 8 bit th p c a b đ m Timer1. - TMR1H (đa ch 0Eh): ch a giá tr 8 bit cao c a b đ m Timer1. - T1CON (đa ch 10h): xác l p các thông s cho Timer1.

3.3.3. TIMER2

Timer2 là b đnh th i 8 bit và đ c h tr b i hai b chia t n s prescaler và postscaler. Thanh ghi ch a giá tr đ m c a Timer2 là TMR2. Bit cho phép ng t Timer2 tác đ ng là TMR2ON. C ng t c a Timer2 là bit TMR2IF. Xung ngõ vào (t n s b ng ¼ t n s oscillator) đ c đ a qua b chia t n s prescaler 4 bit (v i các t s chia t n s là 1:1, 1:4 ho c 1:16 và đ c đi u khi n b i các bit T2CKPS1:T2CKPS0.

Hình 6.5 – S đ kh i c a Timer 2

Timer2 còn đ c h tr b i thanh ghi PR2. Giá tr đ m trong thanh ghi TMR2 s t ng t 00h đ n giá tr ch a trong thanh ghi PR2, sau đó đ c reset v 00h. Khi reset thanh ghi PR2 đ c nh n giá tr m c đnh FFh.

Ngõ ra c a Timer2 đ c đ a qua b chia t n s postscaler v i các m c chia t 1:1 đ n 1:16. Postscaler đ c đi u khi n b i 4 bit T2OUTPS3:T2OUTPS0. Ngõ ra c a postscaler đóng vai trò quy t đnh trong vi c đi u khi n c ng t.

Ngoài ra ngõ ra c a Timer2 còn đ c k t n i v i kh i SSP, do đó Timer2 còn đóng vai trò t o ra xung clock đ ng b cho kh i giao ti p SSP.

Các thanh ghi liên quan đ n Timer2 bao g m: (adsbygoogle = window.adsbygoogle || []).push({});

- INTCON (đa ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn b các ng t (GIE và PEIE).

- PIR1 (đa ch 0Ch): ch a c ng t Timer2 (TMR2IF). - PIE1 (đa ch 8Ch): ch a bit đi u khi n Timer2 (TMR2IE). - TMR2 (đa ch 11h): ch a giá tr đ m c a Timer2.

- T2CON (đa ch 12h): xác l p các thông s cho Timer2. - PR2 (đa ch 92h): thanh ghi h tr cho Timer2.

Nh n xét v Timer0, Timer1 và Timer2 nh sau:

imer0 và Timer2 là b đ m 8 bit (giá tr đ m t i đa là FFh), trong khi Timer1 là b đ m 16 bit (giá tr đ m t i đa là FFFFh).

Timer0, Timer1 và Timer2 đ u có hai ch đ ho t đ ng là timer và counter. Xung clock có t n s b ng ¼ t n s c a oscillator. Xung tác đ ng lên Timer0 đ c h tr b i prescaler và có th đ c thi t l p nhi u ch đ khác nhau (t n s tác đ ng, c nh tác đ ng) trong khi các thông s c a xung tác đ ng lên Timer1 là c đnh. Timer2 đ c h tr b i hai b chia t n s prescaler và postcaler đ c l p, tuy nhiên c nh tác đ ng v n đ c c đnh là c nh lên.

Timer1 có quan h v i kh i CCP, trong khi Timer2 đ c k t n i v i kh i SSP.

4. ADC

ADC (Analog to Digital Converter) là b chuy n đ i tín hi u gi a hai d ng t ng t và s . PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0). Hi u đi n th chu n VREF có th đ c l a ch n là VDD, VSS hay hi u đi n th chu n đ c xác l p trên hai chân RA2 và RA3. K t qu chuy n đ i t tín ti u t ng t sang tín hi u s là 10 bit s t ng ng và đ c l u trong hai thanh ghi ADRESH:ADRESL. Khi không s d ng b chuy n đ i ADC, các thanh ghi này có th đ c s d ng nh các thanh ghi thông th ng khác. Khi quá trình chuy n đ i hoàn t t, k t qu s đ c l u vào hai thanh ghi ADRESH:ADRESL, bit đ c xóa v 0 và c ng t ADIF đ c set.

Quy trình chuy n đ i t t ng t sang s bao g m các b c sau: 1. Thi t l p các thông s cho b chuy n đ i ADC:

- Ch n ngõ vào analog, ch n đi n áp m u (d a trên các thông s c a thanh ghi ADCON1)

- Ch nh kênh chuy n đ i AD (thanh ghi ADCON0).

- Ch nh xung clock cho kênh chuy n đ i AD (thanh ghi ADCON0). - Cho phép b chuy n đ i AD ho t đ ng (thanh ghi ADCON0). 2. Thi t l p các c ng t cho b AD

- Clear bit ADIF. - Set bit ADIE. - Set bit PEIE. - Set bit GIE.

3. i cho t i khi quá trình l y m u hoàn t t. 4. B t đ u quá trình chuy n đ i (set bit ) 5. i cho t i khi quá trình chuy n đ i h n t t b ng cch:

- Ki m tra bit N u =0, quá trình chuy n đ i đã hoàn t t. - Ki m tra c ng t.

Hình 6.7 – Nguyên lý c a b so sánh 7. Ti p t c th c hi n các b c 1 và 2 cho quá trình chuy n đ i ti p theo.

C n chú ý là có hai cách l u k t qu chuy n đ i AD, vi c l a ch n cách l u đ c đi u khi n b i bit ADFM và đ c minh h a c th trong hình sau:

Hình 6.6 – Các cách l u k t qu chuy n đ i ADC Các thanh ghi liên quan đ n b chuy n đ i ADC bao g m:

- INTCON (đ a ch 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ng t (các bit GIE, PEIE). - PIR1 (đa ch 0Ch): ch a c ng t AD (bit ADIF).

- PIE1 (đ a ch 8Ch): ch a bit đi u khi n AD (ADIE).

- ADRESH (đa ch 1Eh) và ADRESL (đa ch 9Eh): các thanh ghi ch a k t qu chuy n đ i AD.

- ADCON0 (đa ch 1Fh) và ADCON1 (đa ch 9Fh): xác l p các thông s cho b chuy n đ i AD.

- PORTA (đa ch 05h) và TRISA (đa ch 85h): liên quan đ n các ngõ vào analog PORTA.

- PORTE (đa ch 09h) và TRISE (đa ch 89h): liên quan đ n các ngõ vào analog PORTE.

Một phần của tài liệu Thiết kế và điều khiển mô hình thang máy bằng vi xử lý PIC 16F877A (Trang 61)