*종*
Bronze개인
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 2
검색어 입력폼
  • [마이크로프로세서] 인터럽터 평가B괜찮아요
    * 인터럽트는 프로그램이 수행되고 있는 도중에 인터럽트 신호가 들어오면 지금까지 하던 작업을 멈추고 인터럽트와 관련되는 일련의 처리를 우선적으로 하고 다시 원래 프로그램으로 돌아가 계속 프로그램을 수행하게된다.1. 80c196kc을 이용한 인터럽트 활용- 고속입력 및 고속출력과 관련된 인터럽트를 이용하여 주기적으로 입력을 받거나 주기적으로 정해진 시간마다 특정한 작업을 할 수 있도록 해준다.- A/D 변환이 끝났음을 알리는 신호에 대한 인터럽트를 이용하여 A/D 변환 결과를 즉시 얻을 수 있다.- 직렬 통신에 관련된 신호에 의한 인터럽트를 이용해 외부 장치로부터 데이터를 원하는 형태로 주고받을 수 있다.2. 80c196kc의 인터럽트 종류: 모두 18개의 인터럽트를 가지고 있다. 15개는 선택형인터럽트(maskable interrupt)이며 세 개는 무조건형 인터럽트(nonmaskable interrupt)이다.인터럽트 소스트랜지션(transition)검출기상승 모서리 검출08H, 13H인터럽트 대기 레지스터인터럽트 마스크 레지스터전체인터럽트 인에이블(PSW.9)세 개의 입력이 모두 "1"이 되어 있어야 한다.28개 인터럽트 소스 18개 벡터우선 순위 인코더우선순의가 가장 높은 인터럽트인터럽트 벡터 테이블벡터인터럽트 서비스 루틴인터럽터 시스템의 블록도1) 인터럽트의 종류* 무조건형 인터럽트- NMI(non maskable interrupt) : NMI는 가장 높은 우선순위의 인터럽트로서 INT_MASK1에 NMI비트가 존재하지만 마스크 기능을 하지 못한다. 백터 위치는 203EH 이며, NMI핀에 상승모서리가 생기면 항상 인터럽트가 발생하므로, 사용하지 않을 경우 그라운드 시켜야 한다.- TRAP : TRAP은 다음명령어의 실행이 끝날 때까지 인터럽트를 허용하지 못하게 한다. 인터럽트 백터 위치는 2010H이며 소프트웨어 디버거의 설계 및 소프트웨어 인터럽트 등에 유용한 단일 명령어 인터럽트를 제공한다.- Unimplemented Opcode : 정의되지 않은 명령어를 실행시키면 Unimplemented Opcode 인터럽트가 발행되며 벡터 위치는 2012H이다.인터럽트 번호인터럽트 이름요청 신호우선순위INT14고속입력 FIFO 찼음고속입력 FIFO 찼음14INT13외부인터럽트 1포트2.213INT12타이머 2값의 초과타이머 2값의 초과12INT11타이머 2값의 일치타이머 2값의 일치11INT10고속입력 FIFO 4개고속입력 FIFO 4번째 채워짐10INT09직렬통신 수신수신(RI) 플래그9INT08직렬통신 송신송신(TI) 플래그8INT07외부 인터럽트포트 2.2 또는 포트 0.77INT06직렬통신수신(RI)또는 송신(TI) 플래그6INT05소프트웨어 타이머소프트웨어 타이머 0~3타이머2 리셋A/D 변환 시작5INT04고속입력0HSI.04INT03고속출력HSO.0~HSO.53INT02고속입력 데이터 사용가능고속입력 FIFO 채워짐 또는 홀딩 래지스터값 채워짐2INT01A/D 변환완료A/ D변혼 완료1INT00타이머값 초과타이머 또는 타이머20* 선택형 인터럽트- INT00 타이머 오버플로(timer overflow(2000H)) : 타이머 1,2의 값이 FFFFH -> 0000H로 될 때 인터럽트가 발생된다. IOC1.2는 타이머 1을, IOC1.3은 타이머 2를 소스로 설정, 타이머 2를 인터럽트 소스로 사용할 경우에는 IOC2.3비트의 설정에 의해 FFFFH -> 0000H될 때 7FFFH -> 8000H일 때 각 경우에 대해 인터럽트 발생시킬수 있음.- INT01 A/D 변환 완료(A/D conversion complete(2002H)) : A/D 변환이 완료되면 인터럽트 발생된다.- INT02 : 고속 입력 데이터 유효(high speed input data available(2004H)) : HSI 의 FIFO에 데이터가 로드될 때 인터럽트가 발생된다.- INT03 고속 출력(high speed output(2006H)) : HSO 0_5롤 어떤 출력이 나갈 때 인터럽트가 발생. HSO_MMAND의 비트 4의 설정에 의해 HSO 출력과 함께 인터럽트가 발생되도록 설정.- INT04 : HSI.0 Pin(2008H) : HSI의 0번 채널의 상승모서리에서 인터럽트가 발생.- INT05 소프트웨어 타이머(software timer(200AH)) : HSO_COMMAND에 사건을 예약할 수 있으며 주기적으로 어떤 루틴이 수행되어져야 할 때 사용된다.- INT06 시리얼 포트(serial port(200CH)) : 시리얼 포트의 입/출력 인터럽트로서 송/수신 인터럽트이다.- INT07 외부인터럽트(External interrupt(200EH)) : 두 개의 외부 인터럽트 소스를 가지고 있다. P2.2(EXTINT)와 P0.7(EXTINT1)이며 상승 모서리에서 트리거 된다. IOC1.1로서 인터럽트 벡터를 선택할 수 있다.- INT08 송신(Transmit(2030H)) : TI 플래그가 셋 되면 인터럽트 발생.- INT09 수신(Receive(2032H)) : RI 플래그가 셋 되면 인터럽트 발생.- INT10 : 고속입력 FIFO(HSI FIFO 4(2034H))- INT11 : 타이머 2 캡쳐(timer 2 capture(2036H))- INT12 : 타이머 2 오버플로(timer 2 overflow(2038H))- INT13 외부 인터럽트 1(External interrupt 1(203AH)) : P2.2(EXTINT1)에 상승 모서리로 트리거 되면 인터럽트가 발생.- INT14 : 고속 입력 FIFO 풀(HSI FIFO full(203CH))3. 인터럽트 관련 레지스터1) 인터럽트 펜딩 레지스터(interrupt pending resister)- 인터럽트 펜딩 레지스터는 INT_PEND 레지스터와 INT_PEND1 레스스터로 구분된다.- 8096계열에서는 하위 8개의 인터럽트만이 존재했었고, 80c196kc에서 상위 8개의 인터럽트가 추가되었기 때문에 상위 인터럽트에 해당하는 인터럽트 펜딩 레지스터인 INT_PEND1을 INT_PEND와는 독립적으로 추가하여 8096계열과 호환성을 가진 것이다.- 펜딩 레지스터를 읽음으로써 어떠한 인터럽트가 요청되었는지 확인할 수 있으며, 펜딩 레지스터에 값들을 인위적으로 바꾸어서 인터럽트를 강제 수행하게 할 수도, 못하게76543210외부인터럽트직렬통신소프트웨어 타이머고속입력0고속출력고속입력 데이터사용 가능A/D 변환완료타이머 값 초과할 수도 있다.-> INT_PEND의 각 비트별 기능-> INT_PEND1의 각 비트별 기능2) 인터럽트 마스크 레지스터(interrupt mask register)- 인터럽트 마스크 레지스터도 펜딩 레지스터와 마찬가지로 8096계열의 마이크로 컨트롤러와 호환성을 가지기 위해서 INT_MASK 와 INT_MASK1 두 개의 레지스터로 구성되어 있다. 이 레지스터를 이용하여 각가의 이터럽트를 가능 또는 불가능하게 한다. 마이크로 컨트롤러가 리셋이 되었을 때는 이 마스크 레지스터들의 값은 00H가 된다.- INT_MASK의 각 비트별 기능76543210외부인터럽트직렬통신소프트웨어 타이머고속입력0고속출력고속입력 데이터사용 가능A/D 변환완료타이머 값 초과76543210NMI고속입력 FIFO 찼음외부인터럽트1타이머2 값 초과타이머 2 캡쳐고속입력 FIFO 4번째 찼음수신송신- INT_MASK1의 각 비트별 기능3) 기타 인터럽트 관련 레지스터- 입력/출력 제어 레지스터(IOC1) : 이 레지스터 INT00, INT02, INT07, INT13 인터럽트의 입력원을 선택한다.* IOC1.1 = 1 (P0.7를 INT07의 입력원으로 사용)(P2.2를 INT13의 엽력원으로 사용)= 0 (P2.2를 INT07과 INT13의 공통입력원으로 사용)* IOC1.2 = 1 (INT00의 소스로서 타이머 1이 가능)0 (INT00의 소스로서 타이머 1이 불가능)* IOC1.3 = 1 (INT00의 소스로서 타이머 2이 가능)0 (INT00의 소스로서 타이머 2이 불가능)* IOC1.7 = 1 (INT02의 소스로서 고속입력 FIFO 찼음 선택)0 (INT02의 소스로서 고속입력 홀딩 레지스터에 값이 기록됨 선택)- 입력/출력 상태 레지스터(IOS1)- 프로그램 상태 위드(PSW)- PTS 선택 레지스터(PTSSEL)4. 인터럽트 처리과정1) 인터럽트 수행 루틴(ISR)- 각각의 인터럽트에 대해 인터럽트 벡터 테이블의 위치가 정해져 있어서 이 인터럽트 벡터 테이블에서 ISR의 시작번지를 읽어오게 된다. 인터럽트 벡터 테이블의 위치는 2000H에서 2013H, 2030H에서 203FH까지 이다.
    공학/기술| 2002.12.29| 6페이지| 1,000원| 조회(1,281)
    미리보기
  • [마이크로프로세서] 인터럽터 평가B괜찮아요
    인터럽트란…….마이크로 콘트롤러는 실시간(real_time)으로 어떤 장치들을 제어하는 기능이 가장 기본적이다. 즉 외부로부터 받은 신호를 처리시간을 최소화하여 결과를 출력하여 장치를 제어하는 것이다. 이를 좀더 자세히 말하면 순차적으로 프로그램을 수행하는 도중 인터럽트 요청, 외부 또는 내부에서 인터럽트를 발생시키는 신호를 받게 되면 수행중인 프로그램을 보류하고 처리 프로그램을 수행한다.우리가 사용하는 80C196KC는 모두 18개의 인터럽트를 가지고 있으며 이중 15개는 선택형 인터럽트이고 나머지 3개는 무조건형 인터럽트이다.여기에서 무조건형 인터럽트는 15이다.인터럽트 순위가 가장 높은 것은 15이며 우선순위가 가장 낮은 인터럽트 순위는 0이다.여기에서 인터럽트가 동시에 요청되었다면 우선순위가 높은 것부터 수행이 된다.인터럽트의 수행순서...1. 인터럽트 요청신호를 받음.2. 요청인터럽트에 해당하는 인터럽트 팬딩 레지스터의 비트를 1로한다.3. NMI인터럽트에 해당하는 펜딩비트가 1이면 우선순위 처리기로 간다.4. 요청받는 인터럽트의 마스트비트가 0이면 인터럽트 처리를 종료한다.5. PTS선택 비트가 1이면 PTS관련부분으로 간다.6. 모든 인터럽트가 가능비트가 0이면 인터럽트 처리를 종료한다.7. 우선 순위 처리기에서 NMI가 아니면 인터럽트 벡터 데이블로 간다.8. PTS 요청이 있는 경우는 PTS관련 부분으로 간다.9. 인터럽트 벡터테이블에서 원하는 인터럽트 수행루틴의 시작번지를 찾는다.10. 인터럽트 수행 루틴을 수행하고 인터럽트 처리를 종료한다.즉 상승모소링 검출기(transition detector)가 인터럽트 요청 (인터럽트 요청 신호의 상승 모소리)를 인식해서 인터럽트 대기 레지스터(interrupt pending register)에 인터럽트 소스에 해당되는 비트를 셋 시킨다. 이 레지스터에 있는 다른 비트들은 이미 다른 인터럽트 소스에서 받은 인터럽트를 표시하기 위하여 셋 되어 있을수도 있다.이러한 인터럽트가 CPU에서 받아 처리하려면, tatus word) 내에 전체 인터럽트 인에이블 비트(global interrupt enable bit : PSW.9)가 셋 되어 있어야 한다.위의 조건을 만족하는 인터럽트는 가장 높은 우선순위를 갖는 인터럽트를 선택하는 우선순위 인코더(priority encoder)를 통과하게 된다. 인터럽트 우선순위는 하드웨어로 결정되어있다.인터럽트 대기 레지스터를 좀더 자세히 보면 인터럽트 대기 레지스터는 NT_PEND, INT_PEND1이 있으며 인터럽트 소스중에서 0=>1의트랜지션이 생기며 PSW.9의 인터럽트 인에이블 또는 인터럽트 마스크 레지스터와 관계없이 소스에 해당되는 비트가 "1"이 된다.인터럽트백터를 얻으면 인터럽트 대기 비트를 대기 레지스터의 해당되는 비트는 클리어 된다. 인터럽크 대기 레지스터의 특정 비트를 소프트웨어로 셋 시킬수 있으며 이 기능을 이용하면 하드웨어 방법이 아니 스프트웨어 방법으로 인터럽트를 요청할 수 있다.INT_PEND, INT_PEND1은 언제든지 어느 인터럽트가 되기 중인지를 검사하기 위하여 읽을수 있다.인터럽트 마스크 레지스터는 개개의 인터럽트를 INT_MASK, INT_MASK1의 비트를 셋, 클리어 시킴으로써 인터럽트를 인에이블/디스에이블 시킬수도 있다.이 레지스터는 인터럽트 대기 레지스터오 같은 형태를 갖고 있으며 INT_MASK, INT_MASK1은 바이트 레지스트로서 리드/라이트 할 수 있으며, 해당되는 비트를 셋 시키면 인터럽트 인에이블 디스 에이블 된다.INT_MASK, INT_MASK1의 비트가 클리어 되어 있을지라도(인터럽트 디스에이블), 인터럽트요청이 있으면 인터럽트 대기 레지스터의 비트는 셋 되므로 인터럽트 요청을 소프트웨어로 검사할 수도 있다.인터럽트 벡터를 얻어도 인터럽트 대기 레지스터의 해당되는 비트는 클리어 되지만, 인터럽트 마스트 레지스터는 클리어 되지 않으므로 소프트웨어로 크리어 시켜야 한다.INT_MASK1에 있는 NMI비트는 아무기능도 업다. 즉 NM 비트가 "0"이든 "1"이든 논 마스커블 PF 명령은 INT_MASK, PSW를 스택에 저장/다시 빼내올 수 있으며 , INT_MASK1은 바이트 레지스터이기 때문에 WSR(window select register)와 같이 PU놈/POPA 명령을 이용하여 저장하거나 다시 빼내올 수 있다.PUSHF, PUSHA 명령은 PSW와 인터럽트 마스트 레지스터를 클리어하기 때문에, 이명령을 하고 나면 인터럽트는스에이블된다.인터럽트 번호인터럽트 이름요청 신호우선순위INT14고속입력 FIFO 찼음고속입력 FIFO 찼음14INT13외부인터럽트 1포트2.213INT12타이머 2값의 초과타이머 2값의 초과12INT11타이머 2값의 일치타이머 2값의 일치11INT10고속입력 FIFO 4개고속입력 FIFO 4번째 채워짐10INT09직렬통신 수신수신(RI) 플래그9INT08직렬통신 송신송신(TI) 플래그8INT07외부 인터럽트포트 2.2 또는 포트 0.77INT06직렬통신수신(RI)또는 송신(TI) 플래그6INT05소프트웨어 타이머소프트웨어 타이머 0~3타이머2 리셋A/D 변환 시작5INT04고속입력0HSI.04INT03고속출력HSO.0~HSO.53INT02고속입력 데이터 사용가능고속입력 FIFO 채워짐 또는 홀딩 래지스터값 채워짐2INT01A/D 변환완료A/ D변혼 완료1INT00타이머값 초과타이머 또는 타이머20위의 인터럽트를 좀더 상세히 보면 .....INT00 : 타이머 1과 타이머 2의 오버프로 인터럽트로서, 타이머가 FFFFH => 0000H가 되면 인터럽트를 발생한다. IOC1의 비트2를 셋시키면 타이머 1용으로 사용하며, 비트 3을 셋 시키면 타이며 2용으로 사용한다. 그리고 오버프로만 체크할 겨우는 IOS1의 비트 4(타이머 2), 비트 5(타이머 1)를 검사하면 된다.타이머 인터럽트 소스로 사용할 경우 IOC2의 비트 5를 "0"으로 하면 타이머 2가 FFFFH => 0000H가 되면 인터럽트가 발생하고 "1" 로 하면 7FFFH => 8000H가 되면 인터럽트가 발생한다.INT01 : A/D 컨버터의 변환 인터럽트가 발생한다.INT03 : 이 인터럽트는 HSO 인터럽트로서 HSO.0~HSO.5에 대해서 각각인터럽트를 설정할 수 있다. HSO_COMMAND 레지스터의 비트0~3에 HSO의 핀 번호를 쓰고 4에 인터럽트 인에이블/디스에이블을 설정할수 있다. 또 IOS2를 이용하여 HSO의 이벤트를 체크할수 있다.INT04 : 이 인터럽트는 HSI.0핀의 상승모소리에서 외부 인터럽트로 된다.이 인터럽트를 사용할 경우에는 HSI FIFO를 인에이블할 필요는 업다.INT05 : 소프트웨어 타이머 인터럽트로서 네 개의 소프트웨어 타이머가 동시에 인터럽를 발생할 숭 있다. 인터럽트 설정은 HSO_COMMAND의 비트 0~3에 소프트웨어 타이머 번호를 비트 4를 "1"로 설정하면 된다. 또 A/D 변환의 트리거 및 타이머 2의 리셋 인터럽트 원인으로도 사용할수 있다.INT06 : 시리얼 입/출력 인터럽트로서 송/수신 인터럽트이다.INT07 : 외부 인터럽트로서 두개의 원인이 있다. IOC1.1=0이면포트 P2.2(EXTINT)가, IOC1.1=1이면 포트 P0.7(EXTINT1)이 선택된다. 똑같이 상승모소리에서 트리거 된다.INT08, INT09 : 시리얼 통신의 송/수신 인터럽트로서, INT08은송신 인터럽트로 INT09는 수신 인터럽트로 독립적으로 사용할수 있으며, 이 인터럽트를 사용할 경우에는 INT06은 디스에이블 시킨다.INT10 : 이것은 HSI의 FIFO로 네 개이상의 데이터가 입력될때 인터럽트가 발생한다.INT11 : P2.7(T2CAPTURE)의 상승 모소리에서 인터럽트를 발생하여 타이머 2의 값이 T2CAPTURE 레지스터로 복사된다.INT12 : INT00에서 설명한 타이머 2의 오버플로일때 인터럽트를 발생한다.INT13 : 외부 입력핀 P0.7(EXTINT1)의 상승모소리에서 인터럽트를 발생한다.INT14 : 이것은 HSI의 FIFO가 풀이 될 때 발생하는 인터럽트이다.가장 간단한 인터럽트 예제프로그램을 이용하여 어떻게 사용하는지 알아본다.여기에서 사이터럽트 소스를 선택한다.이프로그램은 IOC1.1을 사용한다. 이비트는 EXTINT 외부 인터럽트 소스 (INT07, 800EH)를 선택한다. 이비트가 1이면 P=0.7 0이면 P=2.2이다.LDB IOC1,#0IOC1.1에 0이 들어가게 되어서 P2.2를 인터럽트 소스로 사요한다는 것이다.LDB INT_MASK,#10000000BINT_MASK.7의 비트를 1로 하는것은 외부 인터럽트를 가능하게 한다.아래의 프로그램은 11110000와 00001111를 번갈아 가면서 P1에 출력하는프로그램이다.외부인터럽트를 받으면 비트를 체크한다. 그리고 LED로 출력한다.SP EQU 18HP1 EQU 0FHIOC1 EQU 16HINT_MASK EQU 08HBREG EQU 20HCSEG AT 800EHDCW INT0CSEG AT 8080HLD SP,#00E0HLDB IOC1,#0 ;USE OF EXTINT(P2.2)LDB INT_MASK,#10000000B ;7 외부이터럽트 가능IOC1.1LDB BREG,#00001111B ;START OF LEDLDB P1,BREG ;LED OF P1EI ;START OF INT-LOOP:SJMP LOOP ;REARD OF INTERRUPTINT0:DI ;END OF INT-JBS BREG,1,LEFT1LDB BREG,#00001111BLDB P1,BREGEIRETLEFT1:LDB BREG,#11110000BLDB P1,BREG ;P1 OF LEDEIRETEND위의 asm으로 짜여지 프로그램을 통해서 외부인터럽트를 구동하여보았습니다.아주 간단한 프로그램이지만 asm으로 짜여졌기 때문에 어떻게 프로그램이 수행되는지 한눈에 볼수가 있으며 직접 레지스터를 계념이 들어가서 좀더 마이크로그로세서에 쉬게 접근할수 있습을 보았습니다.아래의 예제들은 책에 있는 예제로서 c로 짜여진 것으로 우리가 좀더 편리하게 프로그램을 접근할 수 있는 예제들입니다./**//*LED 점등 방향 반전 실험*/#pragma code#pragma model(kc)#includ ; i
    공학/기술| 2002.12.29| 15페이지| 1,000원| 조회(674)
    미리보기
전체보기
받은후기 2
2개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    0
  • B괜찮아요
    2
  • C아쉬워요
    0
  • D별로예요
    0
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 05월 21일 목요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
8:10 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감