하드웨어 설계에 관련한 공개 강좌를 게재하는 공간입니다.
운영진에 의해 강좌글은 편집되며, 공익을 위한 게시글은 '하드웨어 강좌'란으로 이동될 수 있습니다.
판매자 | 아크마 | 판매 납포인트 | 무료 | 평점 | 1.0점 / 총 1명 참여 |
---|
제4장. 타이머/카운터
1. 타이머/카운터
ㅇ타이머
- 시간을 잴 때 사용
- 외부 공급 clock을 12분주한 clock을 사용
ㅇ 카운터
- 신호의 개수를 셀 때 사용
- 카운터/타이머 0 : T0핀을 통해 들어오는 신호가 high → low 바뀌면 레지스터 (TH0, TL0, TH1, TL1)에 값을 증가(+1)
ㅇ 타이머/카운터의 특수 기능 레지스터(SFR)
- TCON, TMOD, TL0, TL1, TH0, TH1
- 8052(8032, 8752)는 타이머/카운터가 3개
․ T2CON, RCAP2L, RCAP2H, TL2, TH2 레지스터 추가
* 교재 85page 표4-1 타이머의 특수 기능 레지스터 참조
2. 타이머/카운터 모드 레지스터(TMOD)
ㅇ TMOD(Timer/counter MODe register)
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
b0 |
ㅇ 비트별 제어 가능
GATE |
C//T |
M1 |
M0 |
GATE |
C//T |
M1 |
M0 |
- b7~b4는 타이머/카운터 1, b3~b0은 타이머/카운터 0
- GATE : /INTx 핀 및 TRx(Timer/counter Run bit) 과의 논리 조합을 이루어
타이머/카운터를 시작 또는 정지
․ “1”이면 타이머/카운터를 /INTx 핀으로 즉, 하드웨어적으로 Run 시킴
․ “0”이면 타이머/카운터를 TRx 비트로 즉, 소프트웨어적으로 Run 시킴
- C//T : "1"이면 Counter, "0"이면 Timer
- 동작 모드 선택
M1 M0 모드 설명 |
0 0 0 13비트 타이머/카운터 모드 0 1 1 16비트 타이머/카운터 모드 1 0 2 8비트 자동 재적재 모드 1 1 3 분할 타이머 모드 |
3. 타이머/카운터 제어 레지스터(TCON)
ㅇ TMOD(Timer/counter MODe register)
b7 |
b6 |
b5 |
b4 |
b3 |
b2 |
b1 |
b0 |
ㅇ 비트별 제어 가능
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
- b7~b4가 타이머/카운터에 해당, b3~b0은 인터럽트 해당 비트
- TFx(Timer/counter x overFlow flag) : 하드웨어적으로 set
- TRx(Timer/counter x Run control bit) : 타이머/카운터를 ON/OFF 하기 위해
소프트웨어적으로 set/reset
4. 타이머/카운터 모드
4.1 13비트 타이머/카운터 모드 (모드 0)
ㅇ MCS-48과 호환을 위해서 만든 모드, 거의 사용되지 않음
4.2 16비트 타이머/카운터 모드 (모드 1)
4.3 8비트 자동 재적재 모드 (모드 2)
4.4 분할 타이머 모드 (모드 3)
ㅇ 프로그램 시작과 함께 타이머/카운터 초기화
- TMOD 동작 모드 설정
․ MOV TMOD, #00010000B
→ 타이머/카운터 1 사용, GATE=0(TR1로 시작/정지), C//T=0(타이머 사용), 모드1(M1=0, M0=1)
- TH1/TL1 초기화
․ MOV TL1, #9CH
MOV TH1, #0F로
- SETB TR1 되면 시작
․ TF1은 100㎲ 후에 설정
WAIT : JNB TF1, WAIT
- TF1이 OV 될 때 소프트웨어적으로 타이머를 멈추고 TF1를 clear
․ CLR TR1
CLR TF1
5. 짧은 간격과 긴 간격
ㅇ 시간 간격의 프로그램 기법
최대간격(㎲) 기 법 |
10 정도 소프트웨어로 조절 256 이내 8비트 자동 재적재 모드 65536 16비트 타이머/카운터 모드 무제한 16비트 타이머/카운터 모드 + 소프트웨어 루프 |