8051 타이머 / 카운터

83
8051 타타타 / 타타타 타타타타타타 타타타타타타타 타타타

Upload: daniel-gentry

Post on 30-Dec-2015

56 views

Category:

Documents


0 download

DESCRIPTION

8051 타이머 / 카운터. 순천향대학교 정보기술공학부 이상정. 개 요. 3 개의 타이머 80C31 : 2 개의 16 비트 증가형 카운터 / 타이머 (timer 0, timer 1) 를 내장 80C32 : 16 비트 카운터 / 타이머 (timer 2) 를 추가로 내장 기능 내부 시스템 클럭을 클럭 소스로 사용하는 타이머 기능 외부 단자로부터의 클럭 입력을 사용하는 사건 카운터 (event counter) 의 기능 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 8051 타이머 / 카운터

8051 타이머 / 카운터

순천향대학교 정보기술공학부

이상정

Page 2: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 2

마이크로프로세서

8051 타이머 / 카운터

개 요 3 개의 타이머

• 80C31 : 2 개의 16 비트 증가형 카운터 / 타이머 (timer 0, timer 1) 를 내장

• 80C32 : 16 비 트 카 운 터 / 타 이 머 (timer 2) 를 추가로 내장

기능• 내부 시스템 클럭을 클럭 소스로 사용하는 타이머

기능• 외부 단자로부터의 클럭 입력을 사용하는 사건

카운터 (event counter) 의 기능 타이머 0 과 타이머 1 은 4 가지의 동작 모드 ,

타이머 2 는 3 가지의 동작 모드

Page 3: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 3

마이크로프로세서

8051 타이머 / 카운터

개 요

타이머 기능• 타이머 레지스터의 값이 내부 클럭에 의해서 1 머신

사이클에 한 번씩 증가• 결과적으로 타이머의 클럭 소스는 발진기 주파수를 1

2 분주 ( 타이머 2 가 보레이트 발생기 모드는 예외 ) 카운터 기능

• 단자 T0∼T2 에서 입력되는 외부 클럭 입력신호의 하강 에지에서 1 씩 증가

• 카운터는 최소한 2 개의 머신 사이클에 한번씩 인식( 최대 입력 클럭 주파수는 발진기 주파수의 1/24)

Page 4: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 4

마이크로프로세서

8051 타이머 / 카운터

머신 사이클

80C32 에서 1 개의 머신 사이클 (machine cycle)• 12 클럭 주기• S1∼S6 의 6 개 스테이트 (state) 로 구성• 각 스테이트는 2 개의 클럭 주기로 구성• 각 스테이트를 구성하는 2 개 클럭의 앞쪽에 있는 1

주기를 위상 1(phase 1), 뒤쪽 1 주기를 위상 2(phase 2)

결과적으로 12MHz 의 클럭을 사용한다면 1 머신 사이클은 1[μs]

Page 5: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 5

마이크로프로세서

8051 타이머 / 카운터

명령 인출 및 실행 동작 타이밍 80C32 는 기본적으로 각 머신 사이클동안

무조건 2 회씩의 프로그램 명령 페치 동작을 수행• 만약 명령이 1 바이트로 구성되어 2 번째의

페치가 필요없다면 CPU 는 더미 리드 (dummy read) 를 수행

1 사이클에 실행되는 명령• 스테이트 1 에서 명령이 시작되어 읽혀진 명령이

명령 레지스터에 저장• 2 번째의 페치는 스테이트 4 에 시작되는데 1

바 이 트 명 령 에 서 는 이 것 이 더 미 리 드 이 며 , 스테이트 6 에서 이 명령의 실행이 모두 완료

Page 6: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 6

마이크로프로세서

8051 타이머 / 카운터

명령 인출 및 실행 동작 타이밍

1 바이트 명령이면서 2 개의 머신 사이클에 실행되는 명령• 전체적으로 4 회의 명령 코드 페치가 수행되며

이중에서 뒤의 3 차례에 걸쳐서 읽은 코드는 모두 더미 리드

MOVX 명령• 첫번째 ALE 신호에서 명령 코드를 읽은 후에

두번째 ALE 신호에서는 이 명령이 액세스할 데이터 메모리의 번지를 출력

• 2 번째 머신 사이클에서 전반부에는 이 명령을 실행하는 데이터 메모리를 액세스

Page 7: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 7

마이크로프로세서

8051 타이머 / 카운터

명령 인출 및 실행 동작 타이밍

Page 8: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 8

마이크로프로세서

8051 타이머 / 카운터

제어 레지스터

Page 9: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 9

마이크로프로세서

8051 타이머 / 카운터

TMOD 레지스터

Timer/Counter Mode Control Register

타이머 0, 타이머 1 제어 3 가지 기능

• 타이머 혹은 카운터로서의 사용 여부 결정• 4 가지 동작 모드 결정• 타이머 / 카운터의 ON/OFF 제어 위치 ( 내부 , 외

부 ) 결정

Page 10: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 10

마이크로프로세서

8051 타이머 / 카운터

TMOD 레지스터

Page 11: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 11

마이크로프로세서

8051 타이머 / 카운터

TMOD 레지스터

M1 과 M0 비트는 타이머 / 카운터의 동작 모드를 설정

C/ T’ 비트는 타이머와 카운터의 기능을 선택• C/ T’ = 0 이면 타이머• C/ T’ = 1 이면 카운터

GATE 비트는 외부 인터럽트 단자에 의하여 타이머 / 카운터의 동작을 인에이블시킬 수 있도록 제어

Page 12: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 12

마이크로프로세서

8051 타이머 / 카운터

TCON 레지스터

Page 13: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 13

마이크로프로세서

8051 타이머 / 카운터

TCON 레지스터 TR0 와 TR1 비트는 각각 타이머 / 카운터 0 과 1 의

동작을 ON/OFF 하는 제어 비트• TMOD 레 지 스 터 에 서 GATE=0 로 설 정 되 어 있 으 면 TR

단독으로 ON/OFF• GATE=1 이면 각각 INT0’ 및 INT1’ 신호와 함께 ON/OFF

TF0 와 TF1 비트는 각각 타이머 / 카운터 0 과 1 이 오버플로우되면 1 로 세트• CPU 가 해당 타이머의 인터럽트를 받아 인터럽트 서비스

루틴을 실행하기 시작하면 다시 0 으로 클리어• 타이머 오버플로우는 카운터의 최대값 (8 비트에서는 FFH, 1

6 비트에서는 FFFFH) 에서 1 개의 펄스가 입력되어 카운터가 0 으로 바뀌는 것을 말한다 .

Page 14: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 14

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작

13 비트 타이머 / 카운터로 동작 최대로 계수할 수 있는 값

213 = 8192 = 8K 외부 클럭 주파수가 12MHz 인 경우 계수하는데

걸리는 최대 (tmax) 및 최소 (tmin) 시간• tmax = 12 / (12 * 106) * 8192 = 8192 usec• tmin = 12 / (12 * 106) * 1 = 1 usec

=> 즉 계수되는 펄스 당 1 usec 의 시간이 소요 1 머신 사이클 (12 개 클럭 ) 마다 타이머 클럭이

공급되므로 12 를 곱해준다 .

Page 15: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 15

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작

Page 16: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 16

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작

모드 0 에서는 타이머 / 카운터 13 비트 중에서 TL 의 5 비트는 32 분주 (32 배 ) 된 신호를 만들어내는 프리스케일러 (prescaler) 역할• TH 의 8 비트만이 타이머 / 카운터로 동작• TL 은 TH 의 값을 32 배해주는 역할 • 즉 , TL 의 값이 증가되어 32 가 될 때 TH 가 1

증가 TH 의 8 비트 카운터에서 오버플로우가 발생

(FFH→ 00H) 하면 TCON 레지스터의 TF 비트가 세트되고 해당 인터럽트가 발생

Page 17: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 17

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작 예

타이머 0 에 5000 usec 간격으로 인터럽트 발생하고자 할때 TH 를 다음과 같이 세트• MOV TH0, #(8192-5000)/32• 12MHz 클럭 주파수 사용 가정하면 1 개 계수 당 1 us

ec 소요• 5000 을 세기 위해 8192-5000=3192 부터 8192

까지 계수• TL 에 의해 32 배 되므로 TH 의 값은 ( 계수할 총 펄스

수 /32) 로 주어진다 .

Page 18: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 18

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작 예

타이머 0 에 5000 usec 간격으로 인터럽트 발생 코드 예

MOV TMOD, #00H ; M1 M0 = 00, C/T’ = 0 GATE = 0MOV TH0, #(8192-5000)/32MOV IE, #10000010 ; EA=1, ET0=1SETB PT0 ; IP.1 = 1 레벨 1 우선순위MOV 0B7H, #0 ; IPH.1 = 0 SETB TR0 ; TCON.4 계수 시작

Page 19: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 19

마이크로프로세서

8051 타이머 / 카운터

모드 0 동작 예

타이머 0 에 20 usec 간격으로 인터럽트 발생 예• MOV TH0, #0FFH

MOV TL0, #(32-20)• 20 번 카운트되어야 하므로 32 보다 작다 . • TL 만 20 번 카운트 한 후 인터럽트 발생 필요• TH 는 0FFH 로 초기화 하여 TL 이 20 번

카운트하여 32 에 도달되면 1 증가하여 바로 TH가 0 이 되어 인터럽트 발생

Page 20: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 20

마이크로프로세서

8051 타이머 / 카운터

1. 타이머 프로그램 예 1

타이머 0 을 이용하여 50KHz 속도로 우선순위 3 의 인터럽트를 발생시키고 발생된 횟수를 병렬포트 p0 에 표시하고 메모리 30H에 저장하는 프로그램

T = 1/f = 1/(50 * 103) = 0.00002 sec = 20usec

12MHz 클럭 주파수 사용 가정하면 1 개 계수 당 1 usec 소요되므로 20 번 카운트해야 함

Page 21: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 21

마이크로프로세서

8051 타이머 / 카운터

1. 타이머 프로그램 예 1CSEG AT 8000H

; initialize counter value, parallel port MOV 30H,#0MOV P0,30H; Initialize Timer, Interrupt SFRsMOV TMOD, #00H ; M1M0=00, C/T’=0 GATE=0MOV TH0, #0FFH ; count initial value TH0

MOV TL0, #(32-20) ; count initial value TH0MOV IE, #10000010B ; EA=1, ET0=1SETB PT0 ; MOV IP,#00000010B level 3 priorityMOV 0B7H, #2 ; IPH.1 = 1SETB TR0 ; MOV TCON,#00010000B TCON.4, start count

Page 22: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 22

마이크로프로세서

8051 타이머 / 카운터

1. 타이머 프로그램 예 1LOOP: SJMP LOOP ; infinite loop

; interrupt service routineTF0_ISR:

MOV TH0, #0FFH ; count initial value TH0 MOV TL0, #(32-20) ; count initial value TH0 INC 30H

MOV P0, 30H RETI

CSEG AT 000BH ; TF0 interrupt vectoring JMP TF0_ISR

END

Page 23: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 23

마이크로프로세서

8051 타이머 / 카운터

Page 24: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 24

마이크로프로세서

8051 타이머 / 카운터

Page 25: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 25

마이크로프로세서

8051 타이머 / 카운터

레지스터 윈도우 내의 state, sec

시뮬레이션 시 시간의 변화를 표시• 명령 실행 시 시간 변화 표시• 12MHz 프로세서에서는 1 머신 사이클 (12 개의 클럭 )

이 1usec• 1 사이클 명령 실행 하면 1 usec 씩 증가• 대부분 명령은 2 사이클 명령• p.140 명령 표 참조

무한루프의 명령 SJMP LOOP 은 2 사이클 명령• 따라서 10 번 수행해야 20 usec• 인터럽트 서비스 루틴 진입하자 마자 카운트는 시작• 따라서 서비스 루틴 수행 중에도 카운트 됨

Page 26: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 26

마이크로프로세서

8051 타이머 / 카운터

Page 27: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 27

마이크로프로세서

8051 타이머 / 카운터

Page 28: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 28

마이크로프로세서

8051 타이머 / 카운터

Page 29: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 29

마이크로프로세서

8051 타이머 / 카운터

Page 30: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 30

마이크로프로세서

8051 타이머 / 카운터

Page 31: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 31

마이크로프로세서

8051 타이머 / 카운터

Page 32: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 32

마이크로프로세서

8051 타이머 / 카운터

Page 33: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 33

마이크로프로세서

8051 타이머 / 카운터

Page 34: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 34

마이크로프로세서

8051 타이머 / 카운터

Page 35: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 35

마이크로프로세서

8051 타이머 / 카운터

Page 36: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 36

마이크로프로세서

8051 타이머 / 카운터

Page 37: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 37

마이크로프로세서

8051 타이머 / 카운터

Page 38: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 38

마이크로프로세서

8051 타이머 / 카운터

Page 39: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 39

마이크로프로세서

8051 타이머 / 카운터

Page 40: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 40

마이크로프로세서

8051 타이머 / 카운터

Page 41: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 41

마이크로프로세서

8051 타이머 / 카운터

2. 타이머 프로그램 예 1 – C 프로그램#include <REG52.H>

sfr IPH = 0xB7; /* define IPH register */unsigned char count _at_ 0x30;

void timerint(void) interrupt 1 // 8*n+3{ /* initialize counter */ TH0 = 0xff; TL0 = 32-20; /* increment memory, P0 */ ++count; P0 = count;}

Page 42: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 42

마이크로프로세서

8051 타이머 / 카운터

2. 타이머 프로그램 예 1 – C 프로그램main(){ /* initialize memory, parallel port */ P0 = count = 0; /* Timer 0 mode 0 */

TMOD = 0; /* initialize counter */ TH0 = 0xff; TL0 = 32-20;

/* interrupt */IE = 0x82; // EA=1, ET0=1

IP = IPH = 2; // set highest interrupt priority 3 /* TCON.4, start count */TR0 = 1;

while (1) ;}

Page 43: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 43

마이크로프로세서

8051 타이머 / 카운터

Page 44: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 44

마이크로프로세서

8051 타이머 / 카운터

Page 45: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 45

마이크로프로세서

8051 타이머 / 카운터

Page 46: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 46

마이크로프로세서

8051 타이머 / 카운터

Page 47: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 47

마이크로프로세서

8051 타이머 / 카운터

Page 48: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 48

마이크로프로세서

8051 타이머 / 카운터

Page 49: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 49

마이크로프로세서

8051 타이머 / 카운터

모드 1 동작

모드 0 동작과 거의 동일 다만 16 비트 타이머 / 카운터로 동작 최대로 계수할 수 있는 값

216 = 65536 = 64K

Page 50: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 50

마이크로프로세서

8051 타이머 / 카운터

모드 1 동작

Page 51: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 51

마이크로프로세서

8051 타이머 / 카운터

모드 1 동작 예 타이머 / 카운터 0 를 모드 1 타이머를 사용하여

50000usec(20Hz) 간격으로 인터럽트를 발생

MOV TMOD, #01H ; M1M0=01, C/T’=0 GATE=0

MOV DPTR, #0-50000 ; 초기값 -50000 MOV TH0, DPH MOV TL0, DPL MOV IE, #10000010B ; EA=1, ET0=1 MOV IP, #00000010B ; SETB PT0, 레벨 1 우선순위 MOV 0B7H, #0 ; IPH.1 = 0 MOV TCON, #00010000B ; SETB TR0,TCON.4 계수

시작

Page 52: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 52

마이크로프로세서

8051 타이머 / 카운터

3. 타이머 프로그램 예 2

타이머 / 카운터 1 를 모드 1 타이머를 사용하여 50000usec(20Hz) 간격으로 우선순위 2 의 인터럽트를 발생시키고 발생된 횟수를 병렬포트 p0 p1 에 표시하고 메모리 30H 31H 에 저장하는 프로그램

12MHz 클럭인 경우 50000 번 카운트 필요하므로 16 비트 카운트 모드인 모드 1 사용

Page 53: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 53

마이크로프로세서

8051 타이머 / 카운터

3. 타이머 프로그램 예 2CSEG AT 8000H

; initialize counter value, parallel port MOV 30H,#0MOV 31H, #0MOV P0,#0MOV P1,#0; Initialize Timer, Interrupt SFRsMOV TMOD, #10H ; Timer 1, mode 1MOV DPTR,#0-50000 ; initial Timer 0 valueMOV TH1,DPH ; (interrupt cycle = 20 Hz)MOV TL1,DPLMOV IE, #88H ; EA=1, ET1=1MOV IP, #0 ; level 2 priorityMOV 0B7H,#8 ; IPH.3 = 1SETB TR1 ; MOV TCON, #01000000B

; TCON.6, start countLOOP: SJMP LOOP ; infinite loop

Page 54: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 54

마이크로프로세서

8051 타이머 / 카운터

3. 타이머 프로그램 예 2TF1_ISR: MOV DPTR,#0-50000 ; initial Timer 0 value

MOV TH1,DPHMOV TL1,DPL

; increment interrupt counter

MOV DPH,30HMOV DPL,31HINC DPTRMOV 30H,DPHMOV 31H,DPLMOV P0,DPHMOV P1,DPLRETI

CSEG AT 001BH ; TF1 interrupt vectoringJMP TF1_ISREND

Page 55: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 55

마이크로프로세서

8051 타이머 / 카운터

Page 56: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 56

마이크로프로세서

8051 타이머 / 카운터

Page 57: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 57

마이크로프로세서

8051 타이머 / 카운터

Page 58: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 58

마이크로프로세서

8051 타이머 / 카운터

4. 타이머 프로그램 예 2 - C 프로그램#include <REG52.H>sfr IPH = 0xB7; /* define IPH register */unsigned int count _at_ 0x30;int temp = -50000;void timerint(void) interrupt 3 // 8*n+3{ /* initialize counter */ TL1 = temp & 0x00ff; TH1 = (temp & 0xff00) >> 8; /* increment memory, P0 */ ++count; P0 = (count & 0xff00) >> 8; P1 = count & 0x00ff;}

Page 59: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 59

마이크로프로세서

8051 타이머 / 카운터

4. 타이머 프로그램 예 2 - C 프로그램main(){ /* initialize memory, parallel port */ P0 = P1 = 0; count = 0; /* Timer 1 mode 1 */

TMOD = 0x10; /* initialize counter */ TL1 = temp & 0x00ff; TH1 = (temp & 0xff00) >> 8;

/* interrupt */IE = 0x88; // EA=1, ET1=1

IP = 0; IPH = 8; // set interrupt priority 2/* TCON.6, start count */TR1 = 1;

/* infinite loop */ while (1) ;}

Page 60: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 60

마이크로프로세서

8051 타이머 / 카운터

Page 61: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 61

마이크로프로세서

8051 타이머 / 카운터

Page 62: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 62

마이크로프로세서

8051 타이머 / 카운터

Page 63: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 63

마이크로프로세서

8051 타이머 / 카운터

모드 2 동작

8 비트 자동 재로드 (auto-reload) 가 되는 동작 모드• TL 을 8 비트 카운터로 사용• 오 버 플 로 우 가 발 생 하 면 TH 에 저 장 된 값 이

자동으로 TL 에 적재• 최대로 계수할 수 있는 값

28 = 256

Page 64: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 64

마이크로프로세서

8051 타이머 / 카운터

모드 2 동작

Page 65: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 65

마이크로프로세서

8051 타이머 / 카운터

모드 2 동작 예

타이머 / 카운터 0 을 모드 2 의 타이머로 사용하여 200 usec 마다 인터럽트 발생 코드 예

MOV TMOD, #02H ; M1 M0 = 10, C/T’ = 0 GATE = 0MOV TH0, #(256-200)MOV IE, #10000010 ; EA=1, ET0=1SETB PT0 ; 레벨 1 우선순위 ,IP.1 =1MOV 0B7H, #0 ; IPH.1 = 0SETB TR0 ; TCON.4 계수 시작

Page 66: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 66

마이크로프로세서

8051 타이머 / 카운터

5. 타이머 프로그램 예 3

타이머 0 을 사용하여 모드 2 동작으로 20 usec 마다 병렬 포트 P0 가 반전하고 30H 번지 값이 증가하는 C 프로그램

인터럽트를 사용하지 않고 소프트웨어적으로 처리

12MHz 클럭 사용 시 20 번 카운트된 후 발생하는 오버플로우 (TF0) 감지하여 P0 반전하고 30H 번지 증가

TF0 플래그는 오버플로우 발생 후 초기화 시켜주어야 한다 .

Page 67: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 67

마이크로프로세서

8051 타이머 / 카운터

5. 타이머 프로그램 예 3#include <REG52.H>unsigned int count _at_ 0x30;main(){ /* initialize memory, parallel port */ P0 = count = 0;

TMOD = 2; /* mode 2*/ TL0 = TH0 = -20; /* counter initial value */ TF0 = 0;/* clear counter 0 overflow bit */

TR0 = 1; /* start count */ while (1) {

while (!TF0) ; /* repeat until overflow */TF0 = 0; /* clear counter 0 overflow bit */P0 ^= 0xff;++count;

}}

Page 68: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 68

마이크로프로세서

8051 타이머 / 카운터

Page 69: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 69

마이크로프로세서

8051 타이머 / 카운터

Page 70: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 70

마이크로프로세서

8051 타이머 / 카운터

Page 71: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 71

마이크로프로세서

8051 타이머 / 카운터

Page 72: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 72

마이크로프로세서

8051 타이머 / 카운터

Page 73: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 73

마이크로프로세서

8051 타이머 / 카운터

Page 74: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 74

마이크로프로세서

8051 타이머 / 카운터

Page 75: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 75

마이크로프로세서

8051 타이머 / 카운터

Page 76: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 76

마이크로프로세서

8051 타이머 / 카운터

Page 77: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 77

마이크로프로세서

8051 타이머 / 카운터

Page 78: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 78

마이크로프로세서

8051 타이머 / 카운터

모드 3 동작 모드 3 동작은 타이머 0 에서만 사용 타이머 0 에서 모드 3 으로 설정하면 TL0 과 TH0 은

2 개의 독립적인 8 비트 카운터로 동작 하위 8 비트 카운터 TL0 에 관련된 기능

• 타이머 0 의 제어 비트들 (TR0, TF0 비트나 T0,INT0’ 신호 )을 사용

• TL0 의 입력으로는 내부 클럭이나 외부 신호 T0 를 모두 사용 상위 8 비트 카운터 TH0 에 관련되는 기능

• 타이머 1 의 제어 비트들 (TR1, TF1) 을 사용• TH0 의 입력으로는 내부 클럭만을 사용• 오버플로우 (TF1=1) 시 타이머 1 의 인터럽트를 발생

Page 79: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 79

마이크로프로세서

8051 타이머 / 카운터

모드 3 동작

Page 80: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 80

마이크로프로세서

8051 타이머 / 카운터

타이머 2

80C32 에 는 타 이 머 0 과 타 이 머 1 에 추가하여 16 비트인 타이머 2 를 하나 더 가지고 있다 .

타이머 2 는 항상 16 비트로 동작하고 업 / 다운 카운터로 동작할 수도 있다 .

레지스터 • T2CON, T2MOD 제어 레지스터• TL2,TH2, RCAP2L, RCAP2H 레지스터

타이머 2 에는 모두 5 가지의 동작 모드

Page 81: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 81

마이크로프로세서

8051 타이머 / 카운터

타이머 2

T2CON 레지스터 , p.121• CP/RL2’: T2CON.0, Capture/Reload Select• TR2: T2CON.2, Timer 2 Run• TCLK: T2CON.4, Transmit Clock Select• RCLK: T2CON.5, Receive Clock Select

T2MOD 레지스터 , p.122• T2OE: T2MOD.1, Timer 2 Output Enable

Page 82: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 82

마이크로프로세서

8051 타이머 / 카운터

타이머 2 16 비트 자동 재로드 모드

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

16 비트 캡쳐 모드 (capture mode)• 외부의 T2EX 신호에 의하여 현재의 타이머 레지스터 값을 캡쳐하는 모드

16 비트 보레이트 발생기 모드 (baud rate generator mode)• T2CON 레지스터에서 TCLK 이나 RCLK 비트를 최소한 1 개만

세트시켜도 설정

16 비트 프로그래머블 클럭 출력 모드 (programmable clock-out mode)• 보레이트 발생기 모드에서 발생되어 직렬 포트에 제공되는 주파수

신호를 외부 단자로 출력할 수 있는 기능

Page 83: 8051 타이머 / 카운터

순천향대학교 정보기술공학부 이 상 정 83

마이크로프로세서

8051 타이머 / 카운터

프로그램 과제

프로그램 1-5 를 실행하라 . 프로그램 5 의 C 프로그램을 어셈블리 버전으로

변경하여 작성하여라 프로그램 5 를 변경하여 우선순위 3 의

인터럽트로 처리하는 프로그램을 작성하라 .