8051타이머/카운터 순천향대학교 정보기술공학부 이상정.

Slides:



Advertisements
Similar presentations
10-7 부동소수점 (Floating-Point) 계산  컴퓨터에서 숫자를 표기하는 방법  가수 (Fraction) : 부호화된 고정소수점 숫자 지수 (Exponent) : 소수점의 위치를 표시 ( 예 )10 진수 를 표기하면 Fraction Exponent.
Advertisements

2 3 t h K o r e a O p e r a t i n g S y s t e m S e m i n a r 8259A 를 아는가 ??? 2 3 t h K o r e a O p e r a t i n g S y s t e m S e m i n a r.
8051 Serial 통신 Mode 0 : 동기 통신 Mode 1,2,3 : 비동기 통신
14. 타이머와 PWM 활용 - 스마트 폰으로 제어하는 아두이노 -.
마이크로콘트롤러 설계 – 4 Timer 실습 2 – T1, T3
6 인터럽트.
컴퓨터와 인터넷.
3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정.
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
AVR 실습.
7 – 세그먼트 동작 시키기 (0~9, A, B, C, D, E, F 표시하기)
AVR - Chapter 11 황 지 연.
UNIT 15 Timer & Watch Dog 로봇 SW 교육원 조용수.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
8051의 칩 구성 및 CPU 이해 메모리 구조 8051의 신호 포트 구성
12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작.
어셈블리 문법 보강 4월 10일.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
오브젝트 조합 회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
RS 및 D 플립플롭 RS Flip Flop 래치는 어떤 입력 레벨에 의해서 제어되는 데 플립플롭은 클록 입력이라고
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
DK-128 ADC 실습 아이티즌 기술연구소
임베디드 실습 # LED, 7’Segment 제어
마이크로 시스템 lecture8. Interrupt Greet class 선 덕 한.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
PSW : PROGRAM STATUS WORD
타이머/카운트 정리 정보통신•컴퓨터 공학부 송명규
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
과제#4 내용 정성훈.
어서와 C언어는 처음이지 제14장.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
8장 대형 순차회로 문제의 해법 시프트 레지스터 카운터 ASM 도를 이용한 설계 One Hot encoding 복잡한 예제.
타이머 8051 타이머 타이머 설정 및 모드
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
플립플롭, 카운터, 레지스터 순서회로 플립플롭 카운터 레지스터.
컴퓨터시스템 구조 Computer System Architecture.
DK-128 FND 실습 아이티즌 기술연구소
오브젝트 순서회로 IT CookBook, VHDL을 이용한 디지털 회로 입문.
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
패러럴 포트를 이용한 Text LCD 제어 6월 17일 허정수 나선웅.
6. 레지스터와 카운터.
제4강 처리장치 1.
13장 CTC and DMA Slide 1 (of 10).
ARM Development Suite v1.2
ATmega128의 특징 아이티즌 기술연구소
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
계산기.
과제 1 4bit x 4 SRAM이 있다 아래 (1), (2) 두 입력에 대한 출력값 [3:0] Dout을 나타내시오 (1)
Canary value 스택 가드(Stack Guard).
DK-128 개발환경 설정 아이티즌 기술연구소
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
논리회로 설계 및 실험 4주차.
시리얼 UART 정리 정보통신•컴퓨터 공학부 송명규
3.2 분기 명령어.
AdcRead API 함수 분석 마이크로프로세서.
ARM Development Suite v1.2
OP-AMP를 이용한 함수발생기 제작 안정훈 박선진 변규현
아날로그 신호를 디지털 신호로 변환하는 A/D 변환기 A/D 변환 시 고려하여 할 샘플링 주파수 D/A 변환기
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
ARM Development Suite v1.2
Presentation transcript:

8051타이머/카운터 순천향대학교 정보기술공학부 이상정

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

개 요 타이머 기능 카운터 기능 타이머 레지스터의 값이 내부 클럭에 의해서 1머신 사이클에 한 번씩 증가 결과적으로 타이머의 클럭 소스는 발진기 주파수를 12분주(타이머2가 보레이트 발생기 모드는 예외) 카운터 기능 단자 T0∼T2에서 입력되는 외부 클럭 입력신호의 하강 에지에서 1씩 증가 카운터는 최소한 2개의 머신 사이클에 한번씩 인식 (최대 입력 클럭 주파수는 발진기 주파수의 1/24) 순천향대학교 정보기술공학부 이 상 정 3

머신 사이클 80C32에서 1개의 머신 사이클(machine cycle) 12 클럭 주기 S1∼S6의 6개 스테이트(state)로 구성 각 스테이트는 2개의 클럭 주기로 구성 각 스테이트를 구성하는 2개 클럭의 앞쪽에 있는 1주기를 위상1(phase 1), 뒤쪽 1주기를 위상2(phase 2) 결과적으로 12MHz의 클럭을 사용한다면 1 머신 사이클은 1[μs] 순천향대학교 정보기술공학부 이 상 정 4

명령 인출 및 실행 동작 타이밍 80C32는 기본적으로 각 머신 사이클동안 무조건 2회씩의 프로그램 명령 페치 동작을 수행 만약 명령이 1바이트로 구성되어 2번째의 페치가 필요없다면 CPU는 더미 리드(dummy read)를 수행 1사이클에 실행되는 명령 스테이트1에서 명령이 시작되어 읽혀진 명령이 명령 레지스터에 저장 2번째의 페치는 스테이트4에 시작되는데 1바이트 명령에서는 이것이 더미 리드이며, 스테이트6에서 이 명령의 실행이 모두 완료 순천향대학교 정보기술공학부 이 상 정 5

명령 인출 및 실행 동작 타이밍 1바이트 명령이면서 2개의 머신 사이클에 실행되는 명령 MOVX 명령 전체적으로 4회의 명령 코드 페치가 수행되며 이중에서 뒤의 3차례에 걸쳐서 읽은 코드는 모두 더미 리드 MOVX 명령 첫번째 ALE 신호에서 명령 코드를 읽은 후에 두번째 ALE 신호에서는 이 명령이 액세스할 데이터 메모리의 번지를 출력 2번째 머신 사이클에서 전반부에는 이 명령을 실행하는 데이터 메모리를 액세스 순천향대학교 정보기술공학부 이 상 정 6

명령 인출 및 실행 동작 타이밍 순천향대학교 정보기술공학부 이 상 정 7

제어 레지스터 순천향대학교 정보기술공학부 이 상 정 8

TMOD 레지스터 Timer/Counter Mode Control Register 타이머 0, 타이머 1 제어 3가지 기능 타이머 혹은 카운터로서의 사용 여부 결정 4가지 동작 모드 결정 타이머/카운터의 ON/OFF 제어 위치(내부, 외부) 결정 순천향대학교 정보기술공학부 이 상 정 9

TMOD 레지스터 순천향대학교 정보기술공학부 이 상 정 10

TMOD 레지스터 M1과 M0 비트는 타이머/카운터의 동작 모드를 설정 C/ T’ 비트는 타이머와 카운터의 기능을 선택 GATE 비트는 외부 인터럽트 단자에 의하여 타이머/카운터의 동작을 인에이블시킬 수 있도록 제어 순천향대학교 정보기술공학부 이 상 정 11

TCON 레지스터 순천향대학교 정보기술공학부 이 상 정 12

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, 16비트에서는 FFFFH)에서 1개의 펄스가 입력되어 카운터가 0으로 바뀌는 것을 말한다. 순천향대학교 정보기술공학부 이 상 정 13

모드 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를 곱해준다. 순천향대학교 정보기술공학부 이 상 정 14

모드 0 동작 순천향대학교 정보기술공학부 이 상 정 15

모드 0 동작 모드 0에서는 타이머/카운터 13 비트 중에서 TL의 5비트는 32분주(32배)된 신호를 만들어내는 프리스케일러(prescaler) 역할 TH의 8 비트만이 타이머/카운터로 동작 TL은 TH의 값을 32배해주는 역할 즉, TL의 값이 증가되어 32가 될 때 TH가 1 증가 TH의 8비트 카운터에서 오버플로우가 발생(FFH→ 00H)하면 TCON 레지스터의 TF 비트가 세트되고 해당 인터럽트가 발생 순천향대학교 정보기술공학부 이 상 정 16

모드 0 동작 예 타이머 0에 5000 usec 간격으로 인터럽트 발생하고자 할때 TH를 다음과 같이 세트 MOV TH0, #(8192-5000)/32 12MHz 클럭 주파수 사용 가정하면 1개 계수 당 1 usec 소요 5000을 세기 위해 8192-5000=3192부터 8192까지 계수 TL에 의해 32배 되므로 TH의 값은 (계수할 총 펄스 수/32)로 주어진다. 순천향대학교 정보기술공학부 이 상 정 17

모드 0 동작 예 타이머 0에 5000 usec 간격으로 인터럽트 발생 코드 예 MOV TMOD, #00H ; M1 M0 = 00, C/T’ = 0 GATE = 0 MOV TH0, #(8192-5000)/32 MOV IE, #10000010 ; EA=1, ET0=1 SETB PT0 ; IP.1 = 1 레벨 1 우선순위 MOV 0B7H, #0 ; IPH.1 = 0 SETB TR0 ; TCON.4 계수 시작 순천향대학교 정보기술공학부 이 상 정 18

모드 0 동작 예 타이머 0에 20 usec 간격으로 인터럽트 발생 예 MOV TH0, #0FFH MOV TL0, #(32-20) 20번 카운트되어야 하므로 32보다 작다. TL만 20번 카운트 한 후 인터럽트 발생 필요 TH는 0FFH로 초기화 하여 TL이 20번 카운트하여 32에 도달되면 1 증가하여 바로 TH가 0이 되어 인터럽트 발생 순천향대학교 정보기술공학부 이 상 정 19

1. 타이머 프로그램 예 1 타이머 0을 이용하여 50KHz 속도로 우선순위 3의 인터럽트를 발생시키고 발생된 횟수를 병렬포트 p0에 표시하고 메모리 30H에 저장하는 프로그램 T = 1/f = 1/(50 * 103) = 0.00002 sec = 20usec 12MHz 클럭 주파수 사용 가정하면 1개 계수 당 1 usec 소요되므로 20번 카운트해야 함 순천향대학교 정보기술공학부 이 상 정 20

1. 타이머 프로그램 예 1 CSEG AT 8000H ; initialize counter value, parallel port MOV 30H,#0 MOV P0,30H ; Initialize Timer, Interrupt SFRs MOV TMOD, #00H ; M1M0=00, C/T’=0 GATE=0 MOV TH0, #0FFH ; count initial value TH0 MOV TL0, #(32-20) ; count initial value TH0 MOV IE, #10000010B ; EA=1, ET0=1 SETB PT0 ; MOV IP,#00000010B level 3 priority MOV 0B7H, #2 ; IPH.1 = 1 SETB TR0 ; MOV TCON,#00010000B TCON.4, start count 순천향대학교 정보기술공학부 이 상 정 21

1. 타이머 프로그램 예 1 LOOP: SJMP LOOP ; infinite loop ; interrupt service routine TF0_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 순천향대학교 정보기술공학부 이 상 정 22

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

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

레지스터 윈도우 내의 state, sec 시뮬레이션 시 시간의 변화를 표시 무한루프의 명령 SJMP LOOP은 2 사이클 명령 명령 실행 시 시간 변화 표시 12MHz 프로세서에서는 1 머신 사이클(12개의 클럭)이 1usec 1 사이클 명령 실행 하면 1 usec 씩 증가 대부분 명령은 2 사이클 명령 p.140 명령 표 참조 무한루프의 명령 SJMP LOOP은 2 사이클 명령 따라서 10번 수행해야 20 usec 인터럽트 서비스 루틴 진입하자 마자 카운트는 시작 따라서 서비스 루틴 수행 중에도 카운트 됨 순천향대학교 정보기술공학부 이 상 정 25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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; } 순천향대학교 정보기술공학부 이 상 정 41

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) ; } 순천향대학교 정보기술공학부 이 상 정 42

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

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

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

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

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

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

모드 1 동작 모드 0 동작과 거의 동일 다만 16비트 타이머/카운터로 동작 최대로 계수할 수 있는 값 216 = 65536 = 64K 순천향대학교 정보기술공학부 이 상 정 49

모드 1 동작 순천향대학교 정보기술공학부 이 상 정 50

모드 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 계수 시작 순천향대학교 정보기술공학부 이 상 정 51

3. 타이머 프로그램 예 2 타이머/카운터 1를 모드 1 타이머를 사용하여 50000usec(20Hz) 간격으로 우선순위 2의 인터럽트를 발생시키고 발생된 횟수를 병렬포트 p0 p1에 표시하고 메모리 30H 31H에 저장하는 프로그램 12MHz 클럭인 경우 50000번 카운트 필요하므로 16비트 카운트 모드인 모드 1 사용 순천향대학교 정보기술공학부 이 상 정 52

3. 타이머 프로그램 예 2 CSEG AT 8000H ; initialize counter value, parallel port MOV 30H,#0 MOV 31H, #0 MOV P0,#0 MOV P1,#0 ; Initialize Timer, Interrupt SFRs MOV TMOD, #10H ; Timer 1, mode 1 MOV DPTR,#0-50000 ; initial Timer 0 value MOV TH1,DPH ; (interrupt cycle = 20 Hz) MOV TL1,DPL MOV IE, #88H ; EA=1, ET1=1 MOV IP, #0 ; level 2 priority MOV 0B7H,#8 ; IPH.3 = 1 SETB TR1 ; MOV TCON, #01000000B ; TCON.6, start count LOOP: SJMP LOOP ; infinite loop 순천향대학교 정보기술공학부 이 상 정 53

3. 타이머 프로그램 예 2 TF1_ISR: MOV DPTR,#0-50000 ; initial Timer 0 value MOV TH1,DPH MOV TL1,DPL ; increment interrupt counter MOV DPH,30H MOV DPL,31H INC DPTR MOV 30H,DPH MOV 31H,DPL MOV P0,DPH MOV P1,DPL RETI CSEG AT 001BH ; TF1 interrupt vectoring JMP TF1_ISR END 순천향대학교 정보기술공학부 이 상 정 54

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

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

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

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; } 순천향대학교 정보기술공학부 이 상 정 58

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) ; } 순천향대학교 정보기술공학부 이 상 정 59

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

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

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

모드 2 동작 8비트 자동 재로드(auto-reload)가 되는 동작 모드 TL을 8비트 카운터로 사용 오버플로우가 발생하면 TH에 저장된 값이 자동으로 TL에 적재 최대로 계수할 수 있는 값 28 = 256 순천향대학교 정보기술공학부 이 상 정 63

모드 2 동작 순천향대학교 정보기술공학부 이 상 정 64

모드 2 동작 예 타이머/카운터 0을 모드 2의 타이머로 사용하여 200 usec 마다 인터럽트 발생 코드 예 MOV TMOD, #02H ; M1 M0 = 10, C/T’ = 0 GATE = 0 MOV TH0, #(256-200) MOV IE, #10000010 ; EA=1, ET0=1 SETB PT0 ; 레벨 1 우선순위,IP.1 =1 MOV 0B7H, #0 ; IPH.1 = 0 SETB TR0 ; TCON.4 계수 시작 순천향대학교 정보기술공학부 이 상 정 65

5. 타이머 프로그램 예 3 타이머 0을 사용하여 모드 2 동작으로 20 usec 마다 병렬 포트 P0가 반전하고 30H 번지 값이 증가하는 C 프로그램 인터럽트를 사용하지 않고 소프트웨적으로 처리 12MHz 클럭 사용 시 20번 카운트된 후 발생하는 오버플로우(TF0) 감지하여 P0 반전하고 30H 번지 증가 TF0 플래그는 오버플로우 발생 후 초기화 시켜주어야 한다. 순천향대학교 정보기술공학부 이 상 정 66

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 */ P0 ^= 0xff; ++count; } 순천향대학교 정보기술공학부 이 상 정 67

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

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

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

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

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

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

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

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

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

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

모드 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의 인터럽트를 발생 순천향대학교 정보기술공학부 이 상 정 78

모드 3 동작 순천향대학교 정보기술공학부 이 상 정 79

타이머2 80C32에는 타이머 0과 타이머 1에 추가하여 16비트인 타이머 2를 하나 더 가지고 있다. 타이머 2는 항상 16비트로 동작하고 업/다운 카운터로 동작할 수도 있다. 레지스터 T2CON, T2MOD 제어 레지스터 TL2,TH2, RCAP2L, RCAP2H 레지스터 타이머 2에는 모두 5가지의 동작 모드 순천향대학교 정보기술공학부 이 상 정 80

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

타이머2 16비트 자동 재로드 모드 16비트 캡쳐 모드(capture mode) 특정한 조건에서 16비트 카운터에 RCAP2H 및 RCAP2L 레지스터의 값을 로드하는 모드 16비트 캡쳐 모드(capture mode) 외부의 T2EX 신호에 의하여 현재의 타이머 레지스터 값을 캡쳐하는 모드 16비트 보레이트 발생기 모드(baud rate generator mode) T2CON 레지스터에서 TCLK이나 RCLK 비트를 최소한 1개만 세트시켜도 설정 16비트 프로그래머블 클럭 출력 모드(programmable clock-out mode) 보레이트 발생기 모드에서 발생되어 직렬 포트에 제공되는 주파수 신호를 외부 단자로 출력할 수 있는 기능 순천향대학교 정보기술공학부 이 상 정 82

프로그램 과제 프로그램 1-5를 실행하라. 프로그램 5의 C 프로그램을 어셈블리 버전으로 변경하여 작성하여라 프로그램 5를 변경하여 우선순위 3의 인터럽트로 처리하는 프로그램을 작성하라. 순천향대학교 정보기술공학부 이 상 정 83