Embedded SW 기초

MCU - 상태 레지스터

sg.kim 2024. 6. 30. 23:43

상태 레지스터

상태 레지스터(Status Register)란 가장 최근에 실행된 산술 연산의 명령 처리 결과에 대한 상태 정보를 표현한다.

이 상태 정보는 조건부 처리 명령어(if ... 등)에 의해 프로그램의 흐름을 제어해야 할 경우, 사용될 수 있다.

 

상태 레지스터는 인터럽트를 처리하는 과정에서 자동적으로 저장되거나 복구되지 않기 때문에 필요하다면 소프트웨어에서 필요한 동작을 처리해주어야 한다.

 

- 연산 결과에 따라 나타나는 플래그

부호 플래그 : 가장 최근 수행된 산술 연산 결과과 +일 경우 0, -일 경우 1로 세팅된다.

제로 플래그 : 연산 결과가 0일 경우 1, 0이 아닌 경우 0으로 세팅된다.

캐리 플래그 : 자리 올림이 발생하거나 감산 결과 자리내림이 발생할 경우 1로 세팅된다.

오버플로우 플래그 : 연산기가 처리하는 데이터 비트를 초과할 경우, 1로 세팅된다.

패리티 플래그 : 연산 결과가 짝수인지 홀수인지 나타내는데 사용된다.

 

- 제어 상태를 표시하는 플래그

인터럽트 플래그 : 인터럽트를 허가하는 플래그가 존재한다.

 

전체 인터럽트 허가 플래그와 각각의 기능에 따라 인터럽트 허가 플래그가 존재한다.

전체 인터럽트 플래그가 비활성화된 경우, 각각의 인터럽트 플래그를 활성화하더라도 인터럽트가 발생하지 않는다.

 

MCU마다 인터럽트가 발생했을 때, 인터럽트 서비스루틴을 수행하고,

인터럽트 플래그가 자동 클리어되는 경우도 존재하고 수동으로 클리어 해주어야 하는 경우도 존재한다.

수동으로 클리어해주어야 하는 경우, 클리어를 해주지 않으면 계속 인터럽트 서비스루틴이 불려 동작이 정상적으로 수행되지 않을 수 있으므로 주의해야 한다.