160 likes | 627 Views
8051 마이크로컨트롤러 제 4 장 . 타이머 / 카운터 (Timer/Counter). 타이머 / 카운터. 타이머 / 카운터 (Timer/Counter) - 타이머 : 시간을 잴 때 사용 8051 외부 공급 clock(crystal) 을 12 분주한 clock 을 사용 - 카운터 : 신호의 개수를 셀 때 사용 8051 T0/T1 핀을 통해 들어오는 신호 (High Low) 의 개수
E N D
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 타이머/카운터 • 타이머/카운터(Timer/Counter) - 타이머 : 시간을 잴 때 사용 8051 외부 공급 clock(crystal)을 12분주한 clock을 사용 - 카운터 : 신호의 개수를 셀 때 사용 8051 T0/T1핀을 통해 들어오는 신호(High Low)의 개수 • 타이머/카운터의 특수 기능 레지스터(SFR) - TCON, TMOD, TL0, TL1, TH0, TH1 - 8052는 타이머/카운터가 3개이므로 T2CON, RCAP2L, RCAP2H, TL2, TH2 레지스터 추가 보유 -1-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) TMOD(Timer/counter MODe register) - TMOD 7 ~ 4 : 타이머/카운터 1, TMOD 3 ~ 0 : 타이머/카운터 0 - GATE : “0”이면 TRx 비트로 Run 시킴, “1”이면 INTx 핀으로 Run 시킴 - C/T : “1”이면 Counter, “0”이면 Timer - 타이머/카운터 모드 M1( 0 ) M0( 0 ) 모드0 13비트 타이머/카운터 모드 M1( 0 ) M0( 1 ) 모드1 16비트 타이머/카운터 모드 M1( 1 ) M0( 0 ) 모드2 8비트 자동 재적재 모드 M1( 1 ) M0( 1 ) 모드3 분할 타이머 모드 -2-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) TCON • TCON(Timer/counter CONtrol register) - TCON 7, 6 : 타이머/카운터 1, TCON 5, 4 : 타이머/카운터 0 (TCON 3 ~ 0 : 인터럽트) - TF1(Timer/counter 1 over Flow flag) : overflow가 발생하면 “0” “1” - TR1(Timer/counter 1 Run control bit) : GATE가 “0”인 상태에서 TR1이 “1”이면 타이머/카운터(T/C) 1이 시작(Run), “0 ”이면 T/C 1이 정지(Stop) - TF0(Timer/counter 0 over Flow flag) - TR0(Timer/counter 0 Run control bit) -3-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 타이머/카운터 모드 • 모드0 (13비트 타이머/카운터 모드) MCS-48과 호환을 하기 위해 만든 모드, 거의 사용되지 않음 • 모드1 (16비트 타이머/카운터 모드) -4-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 타이머/카운터 모드 • 모드2 (8비트 자동 재적재 모드) • 모드3 (분할 타이머 모드) 타이머/카운터0은 2개의 8비트 타이머(TL0 TF0, TH0 TF1) -5-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 타이머/카운터의 초기화 • TMOD 설정 - MOV TMOD, #00010000B 타이머/카운터 1 사용, TR1로 시작/정지(GATE = 0), 타이머(C/T = 0), 모드1(M1 = 0, M0 = 0) • TH1, TL1 초기화 (예 : 10000us = 10ms = 0.01초 / 12MHz 경우) - MOV TH1, #HIGH(-10000) - MOV TL1, #LOW(-10000) • SETB TR1 되면 시작 - WAIT: JNB TF1, WAIT TF1은 처음에 “0”이다가, 0.01초 후에 “1” • TF1이 “1”(over flow)이 되면 타이머를 멈추고, TF1을 clear - CLR TR1 - CLR TF1 -6-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 짧은 간격과 긴 간격 시간 간격의 프로그램 기법 최대 간격(us) 기 법 예제 10 소프트웨어로 조절 예제4-1(펄스파 발생) 256 이하 모드2(8비트 자동 재적재 모드) 예제4-2(10KHz 구형파) 65536 이하 모드1(16비트 타이머/카운터 모드) 예제4-3(1KHz 구형파) 65536 이상 모드1 + 소프트웨어 루프 예제4-4(부저 인터페이스) -7-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 실험(예제 4-1) • 주기가 4us(최소 주기)인 펄스파 발생(12MHz 사용) ORG 8000H LOOP: SETB P1.0 ; 1 machine cycle CLR P1.0 ; 1 machine cycle SJMP LOOP ; 2 machine cycle END P1.0 -8-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 실험(예제 4-2) • 10KHz 구형파 프로그램 작성(P1.0에 출력, 12MHz 사용) T(주기) = 1 / f(주파수) = 1 / 10KHz = 100us 반주기(2/T)는 50us, 50us 마다 over flow가 발생, 모드2사용 ORG 8000H MOV TMOD, #02H MOV TH0, #-50 SETB TR0 CPL P1.0 WAIT: JNB TF0, WAIT SJMP WAIT CLR TF0 END -9-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 실험(예제 4-3) • 1KHz 구형파 프로그램 작성(P1.0에 출력, 12MHz 사용) T(주기) = 1 / f(주파수) = 1 / 1KHz = 1000us 반주기(2/T)는 500us, 500us 마다 over flow가 발생, 모드1사용 ORG 8000H MOV TMOD, #01H CLR TF0 LOOP: MOV TH0, #HIGH(-500) CLR TR0 MOV TL0, #LOW(-500) CPL P1.0 SETB TR0 SJMP LOOP WAIT: JNB TF0, WAIT END -10-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 실험(예제 4-4) • P1.7의 입력이 “1” “0”로 전이될 때, P1.0에서 5초간 출력 5초 = 50000us 100 (50000us는 모드1, 100은 소프트웨어 루프) ORG 8000H AGAIN: MOV TH0, #HIGH(-50000) MOV TMOD, #01H MOV TL0, #LOW(-50000) LOOP: JNB P1.7, LOOP SETB TR0 WAIT: JB P1.7, WAIT JNB TF0, $ SETB P1.0 CLR TF0 CALL DELAY CLR TR0 CLR P1.0 DJNZ R0, AGAIN SJMP LOOP RET DELAY: MOV R0, #100 END -11-청강문화산업대학 이동통신과
8051 마이크로컨트롤러 제4장. 타이머/카운터(Timer/Counter) 과제물(Report) • 기한 : 10월 4일(금) 17시까지 강의도우미가 수거하여 제출 1. 예제 4-2 : 문제, 프로그램, 설명 기재 2. 예제 4-3 : 문제, 프로그램, 설명 기재 3. 예제 4-4 : 문제, 프로그램, 설명 기재 * 자필로 작성해야 함(가급적 A4지 1장에 기재) -12-청강문화산업대학 이동통신과