z8051 타이머 z타이머설정및모드 -...

24
타이머 타이머 z 8051 타이머 z 타이머 설정 모드 z 타이머 설정 모드 [email protected] htt ://bl /d li http://blog.naver.com/dolicom

Transcript of z8051 타이머 z타이머설정및모드 -...

Page 1: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머타이머

8051 타이머

타이머 설정 및 모드타이머 설정 및 모드

[email protected] ://bl /d lihttp://blog.naver.com/dolicom

Page 2: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

카운터의 원리와 디지털회로카운터의 원리와 디지털회로

2진 카운터 (Binary Counter)

디지털 회로에 의해 이루어 진다.디지털 회로에 의해 이루어 진다.

정해진 초기 값으로 부터 1증가 하거나 1감소 한다소 한다.

설계 시 카운터 비트 수가 결정되어 있어 그비트수가 지정할 수 있는 최대 범위가 넘으면비트수가 지정할 수 있는 최대 범위가 넘으면0으로 간다.

(예) 비트 진 카운터는 부터 까지(예) 4비트 2진 카운터는 0부터 15까지 16 상태로 카운터 된다.0 → 1 → 2 → … → 14 → 15 → 0 → 1 → …

Page 3: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

카운터는 클럭에 의해 상태가 바뀐다카운터는 클럭에 의해 상태가 바뀐다.

D Q Q2 0 0 0 0 1 1 1 1 0

0 1 2 3 4 5 6 7 0

D

CLK

Q

Q>조합논리

Q2 0 0 0 0 1 1 1 1 0

D Q

논리회로

Q1 0 0 1 1 0 0 1 1 0

CLK Q>

D Q Q0 0 1 0 1 0 1 0 1 0

CLK Q>CLK

CLK

Page 4: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

8051 타이머8051 타이머

타이머타이머//카운터카운터타이머타이머//카운터카운터

Page 5: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머(Timer)와 카운터(Counter)타이머(Timer)와 카운터(Counter)

타이머(Timer)타이머(Timer)1머신사이클(내부 시스템 클럭 1/12)을 세는 것을 말함함

카운터(Counter)외 핀에 입력되 럭 이벤 세 것 말함외부 핀에 입력되는 클럭 또느 이벤트를 세는것을 말함.이것을 타이머와 구별없이 혼용해서 사용.

방법방법타이머/카운터 0는 SFR영역의 TH0,TL0

타이머/카운터 1는 SFR영역의 TH1,TL1

클럭이 입력될 때, +1 증가하는 업카운터(up counter)

Page 6: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머의 구조타이머의 구조

XTAL

카운터

XTAL

오버플로 인터럽트클럭발생

카운터(디지털카운터)

플래그설정

시스템 클럭

외부 핀 입력

오버플로 인터럽트

Page 7: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머의 사용타이머의 사용

타이머 레지스터가 오버플로 (0xFFFF-타이머 레지스터가 오버플로 (0xFFFF->0x0000)가 발생하면, TCON 레지스터내의TF(Timer Overflow)가 셋된다TF(Timer Overflow)가 셋된다.

Timer 0 -> TF0, Timer 1 -> TF1

타이머 2은 시리얼 포트의 보레이트 제너( )레이터(Baud rate gererator)로 동작 시킬

수 있다.

4개의 타이머는 TMOD와 TCON을 사용하여4개의 타이머는 TMOD와 TCON을 사용하여프로그램 한다.

Page 8: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

TMOD 레지스터TMOD 레지스터

7 6 5 4 3 2 1 0

GATE C/T M1 M0 GATE C/T M1 M07 6 5 4 3 2 1 0

Timer 2 Timer 1

GATE : 외부 인터럽트 핀(INT1 INT0)을 이용해서 타이머를 정지/동GATE : 외부 인터럽트 핀(INT1, INT0)을 이용해서, 타이머를 정지/동작을 제어 한다.1. GATE=1, TR0=1 : INT0=1 – 타이머1 동작, INT0 – 정지

GATE=1 TR1=1 : INT1=1 타이머2 동작 INT1 정지GATE=1, TR1=1 : INT1=1 – 타이머2 동작, INT1 – 정지2. GATE=0 : INT0,INT1 핀을 사용하지 않으며, TCON내의 TR0, TR1에

따라 동작/정지 된다.

C/T (Counter/Timer selector) : 카운터/타이머 모드를 결정C/T (Counter/Timer selector) : 카운터/타이머 모드를 결정1. C/T=1 : 카운터 모드 – 입력 핀 T0, T1에서 들어오는 펄스를 센다.

C/T=0 : 타이머 모드 – 시스템 클럭/12을 센다.

M1:M0 : 동작 모드 설정M1:M0 : 동작 모드 설정4가지 모드를 지원 한다.

Page 9: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머 클럭 구조타이머 클럭 구조

XTALoscillator ÷ 12oscillator

C/T = 0

T0 핀(P3.4)

C/T = 1

TR0(TCON)

GATE(TMOD)

INT0핀(P3.2)

GATE(TMOD)

Page 10: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머로 사용 – 시스템 클럭 사용

XTALoscillator ÷ 12oscillator

C/T = 0

T0 핀(P3.4)C/T = 1

1=동작

TR0(TCON)

GATE(TMOD)

1

0 1

1

INT0 핀(P3.2)

GATE(TMOD) 0 1

Page 11: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머 사용 –시스템 클럭 사용타이머 사용 시스템 클럭 사용

XTALoscillator ÷ 12oscillator

C/T = 0

T0 핀(P3.4)C/T = 1

1=동작

TR0(TCON)

GATE(TMOD)

1

1 0

1

INT0 핀(P3.2)

GATE(TMOD) 1 0

1

Page 12: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머로 사용 – 외부 클럭 사용타이머로 사용 외부 클럭 사용

XTALoscillator ÷ 12oscillator

C/T = 0

T0 핀(P3.4)C/T = 1

1=동작

TR0(TCON)

GATE(TMOD)

11

0 1

INT0 핀(P3.2)

GATE(TMOD) 0 1

Page 13: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

TCON 레지스터TCON 레지스터

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT07 6 5 4 3 2 1 0

Timer2 Timer1 Interrupt

• TR1/TR0 : 타이머/카운터 동작/정지 제어 한다.TR0=1 : 타이머/카운터 0 동작TR0=0 : 타이머/카운터 0 정지

• TF1/TF0 : 타이머/카운터 오버플로 플래그TF0 : 타이머/카운터 0의 카운터 레지스터(TH1, TH0)가 오버플로가 되면

셋된다.*이 때 다음과 같이 인터럽트 처리 된다..- 인터럽트 인에이블되어 있고- 인터럽트 요청하게 되면- 인터럽트 처리가 끝나면 자동으로 클리어 된다

Page 14: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

타이머/카운터의 동작 모드타이머/카운터의 동작 모드

4가지 동작 모드 지원

TMOD의 M1:M0을 이용 설정TMOD의 M1:M0을 이용 설정

모드 0~2는 타이머/카운터 1과 2이0 는 타이머/카운터 과 이똑같이 동작

모드 3에서는 모듈1과 2가 다르다.

Page 15: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 0모드 0

32분주 프리스케일러(prescaler)+8비트카운터

TH0: 255→0TL0: 31→0

TL0(5bit) TH0(8bit) TF0Interrupt0 000B

0→31 카운팅 0→255 카운팅오버플로플래그

OSC ÷ 12

( ) ( ) TF00x000B

오버플로가 발생하면T1

외부클럭 오버플로가 발생하면1. TF0 셋2. 인터럽트 인에이블(enable) 되어 있으면3. 인터럽트 요청

•클럭선택(C/T0)•동작설정TR0GATE0 터 청

4. ISR로 가기전에 TF0를 클리어 하고5. ISR로 들어가서 인터럽트 처리 한다.

INT0

Page 16: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 0의 프로그램모드 0의 프로그램

우선 TMOD동작 모드 및 동작 설정 한다우선 TMOD동작 모드 및 동작 설정 한다.TMOD = 0x04;타이머 1동작 모드 M1:M0= 00 : 모드 0GATE0=0 : 사용 않함C/T0 = 1 : 가운터로 동작 – 외부클럭 T0 사용C/T0 1 가운터로 동작 외부클럭 T0 사용

타이머 2동작 모드 0, GATE1=0 : 사용 않함C/ 타이머로 동작 시스템 클럭 사용C/T0 = 0 : 타이머로 동작 – 시스템 클럭 사용

시정수 결정TH0=255;- 시정수 256-255=1 : 32x1TH1=90; - 시정수 256-90=166, 전체 시정수=32x166

타이머 동작 시작TR0=1; TR1=1; - 타이머1/2 동작시작

Page 17: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 1모드 1

16비트 카운터 : 8비트 + 8비트

TH0: 255→0TL0: 255→0

TL0(8bit) TH0(8bit) TF0Interrupt0 000B

0→255 카운팅 0→255 카운팅오버플로플래그

OSC ÷ 12

( ) ( ) TF00x000B

T1외부클럭

•클럭선택(C/T0)

• 모드 0와 모든 동작은 같고5비트 대신 8비트로 바뀜

클럭선택(C/T0)•동작설정TR0GATE0INT0

Page 18: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 2모드 2

8비트카운터 : Auto Reload

TH0(8bit)

TL0: 255→0Auto reload 오버플로

플래그OSC ÷ 12

TL0(8bit) TF0Interrupt0x000B

TH0→255 카운팅

플래그

T1TL0: 255→0

외부클럭•클럭선택(C/T0)•동작설정TR0GATE0GATE0INT0

Page 19: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 3 – 타이머 1모드 3 타이머 1

8비트카운터 TH0 TL0 카운터8비트카운터 – TH0, TL0 카운터

TH0(8bit) TF1Interrupt0x001B

•동작설정TR1

OSC ÷ 12

TL0(8bit) TF0Interrupt0x000B

TH0→255 카운팅T1외부클럭

•클럭선택(C/T0)•동작설정TR0GATE0GATE0INT0

Page 20: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

모드 3 – 타이머 2모드 3 타이머 2

8비트카운터 TF1은 사용 불가능8비트카운터 – TF1은 사용 불가능

TH1(8bit)

OSC ÷ 12

TL1(8bit) Serial Port 클럭

T1 TH0→255 카운팅외부클럭

•클럭선택(C/T1)•동작설정TR1GATE1GATE1INT1

Page 21: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

8051 타이머8051 타이머

TimerTimer22TimerTimer22

Page 22: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

T2CON 레지스터 0xC8T2CON 레지스터 0xC8

TF2 EXF2 RCLK TCLK EXEN2 TR2 CP/T2 CP/RL27 6 5 4 3 2 1 0

TF2 : Overflow가 되면 1로 되고 SW로 지움. RCLK/TCLK=1이면 동작 안함.EXF2 : Capture/Reload일 때, T2EX가 오면 1로 됨. EXEN2=1일 때 동작.XF Capture/Reload일 때, T X가 면 1 됨. X N 1일 때 동작.- 인터럽트 요청 EXF2=1이면 Timer2 Vector로 처리-인터럽트 루틴 실행.- DCEN=1로 Up/Down Counter Mode에서 동작 안함.

RCLK : Serial Mode1/3에서 Receive clock으로 사용.TCLK : Serial Mode1/3에서 Transmit clock으로 사용.EXEN2 : Timer2 External 동작EXEN2 : Timer2 External 동작. TR2 : Timer2의 동작 시작/멈춤 설정.CP/T2 : Timer / Counter(외부 입력 사용) 설정.CP/RL2 C t /R l d 선택CP/RL2 : Capture/Reload 선택.

Page 23: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

Timer2 동작 모드Timer2 동작 모드

16비트 자동 재로드 모드16비트 자동 재로드 모드

특정한 조건에서 16비트 카운터에 RCAP2H 및 RCAP2L 레지스터의 값을 로드

16비트 캡쳐 모드(capture mode)

외부의 T2EX 신호에 의하여 현재의 타이머 레지스터 값을 캡쳐

16비트 보레이트 발생기 모드

(Baud Rate Generator Mode)(Baud Rate Generator Mode)

T2CON 레지스터에서 TCLK이나 RCLK 비트를 최소한 1개만 세트시켜도 설정

16비트 프로그래머블 클럭 출력 모드

(Programmable Clock-Out Mode)

보레이트 발생기 모드에서 발생되어 직렬 포트에 제공되는 주파수 신호를 외부 단자로 출력할 수 있는 기능

Page 24: z8051 타이머 z타이머설정및모드 - pds16.egloos.compds16.egloos.com/pds/200908/31/64/8.8051_Timer.pdf · 카운터의원리와디지털회로 z2진카운터(Binary Counter)

Timer2의 동작 모드 – T2CONTimer2의 동작 모드 T2CON

TR2 TCLK/RCLK CP/RL2 T2OE 모드

1 0 0 0 16비트 Auto-Reload 모드

1 0 1 0 16비트 Capture 모드

1 1 x x 16비트 Baud Rate 발생 모드1 1 x x 16비트 Baud Rate 발생 모드

1 x x 1(C/T=0) 16비트 Programmable Clock-Out모드

0 x x x 타이머2 동작 OFF