티스토리 뷰

C언어

타이머 모드(TMOD) 의 GATE 제어하기

시작이반입니다 2021. 8. 20. 03:00

타이머 모드(TMOD) 의 GATE 제어하기

타이머 모드를 설정하는 TMOD 레지스터에 GATE 비트가 있습니다. 이 GATE 비트를 1 로 설정하면 타이머의 동작을 일시 정지시킬수 있습니다. 앞의 강좌 '타이머 인터럽트 0 사용하기' 에서 TMOD 값을 0x09 (GATE=1, 모드 1) 로 설정해서 동작하는 것을 살펴보겠습니다. 프로그램을 실행하고 LED 가 이동하는 동안 외부 인터럽트 0 (INT0) 버튼을 누르면 타이머가 정지해서 LED 의 이동이 멈춥니다. 이 버튼을 놓으면 다시 타이머가 동작하고 LED 가 이동하는 것을 볼수 있습니다. GATE 제어를 사용하면 외부 인터럽트 기능을 사용할 수 없습니다. #include typedef unsigned char byte; byte led, cnt; void T0_int() interrupt 1 { TR0=0; cnt++; if(cnt == 10) { led = (led << 1) | 0x01; if(led == 0xff) led = 0xfe; P1 = led; cnt = 0; } TH0=0xb1; TL0=0xe0; TR0=1; } void main() { TMOD=0x09; TH0=0xb1; TL0=0xe0; PT0=1; ET0=1; EA=1; cnt = 0; led = 0xfe; P1 = led; TR0=1; while(1); }

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함