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:

- 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)

Tải bản đầy đủ (PDF)

(76 trang)