본문 바로가기

Hacked Brain/embeddedland.net

80C196KC SFR

SFR(Special Function Register)

80C196KC 에는 CPU기능외에도 다양한 기능이 있다.
그래서 이넘을 CPU라고 부르기보다는 Controller라고 부른다.
이넘은 카운터/타이머, I/O,ADC,HSI,HSO,PWM,인터럽트콘트롤러등을 가진다.
그래서 이넘들을 제어하기 위해서 특별한 레지스터를 이용하는데,
그것이 바로 SFR이다.
SFR를 보면 더 많은 기능을 제어하기 위해서 윈도우라는 개념을 이용해서,
같은 번지에 다수의 레지스터를 할당한다.
15H번지에는 IOS2,IOC0가 할당 되어있고,
16H번지에는 IOS1,IOC1,PWM1_CONTROL이 할당되어 있다.
이때 WSR상태와 읽기/쓰기 상태에 따라 레지스터를 선택되어진다.
위에서 예로든 15H번지 같은 경우
WSR=0 일때, 읽을때는 IOS0가 쓸때는 IOC0가 선택된다.

17H

IOS2

PWM_CONTROL

PWM2_CONTROL

PWM_CONTROL

IOS2

16H

IOS1

IOC1

PWM1_CONTROL

IOC1

IOS1

15H

IOS0

IOC0

RESERVED

IOC0

IOS0

14H

WSR

WSR

WSR

WSR

WSR

13H

INT_MASK1

INT_MASK1

INT_MASK1

INT_MASK1

INT_MASK1

12H

INT_PEND1

INT_PEND1

INT_PEND1

INT_PEND1

INT_PEND1

11H

SP_STAT

SP_CON

RESERVED

SP_CON

SP_STAT

10H

PORT2

PORT2

RESERVED

RESERVED

RESERVED

0FH

PORT1

PORT1

RESERVED

RESERVED

RESERVED

0EH

PORT0

BAUD RATE

RESERVED

RESERVED

RESERVED

0DH

TIMER2(HI)

TIMER2(HI)

RESERVED

T2CAPTURE(HI)

T2CAPTURE(HI)

0CH

TIMER2(LO)

TIMER2(LO)

IOC3

T2CAPUTRE(LO)

T2CAPUTRE(LO)

0BH

TIMER1(HI)

IOC2

RESERVED

IOC2

TIMER1(HI)

0AH

TIMER1(LO)

WATCHDOG

RESERVED

WATCHDOG

TIMER1(LO)

09H

INT_PENT

INT_PEND

INT_PEND

INT_PEND

INT_PENT

08H

INT_MASK

INT_MASK

INT_MASK

INT_MASK

INT_MASK

07H

SBUF(Rx)

SBUF(Tx)

PTSSRV(HI)

SBUF(Tx)

SBUF(Rx)

06H

HSI_STATUS

HSO_COMMAND

PTSSRV(LO)

HSO_COMMAND

HSI_STATUS

05H

HSI_TIME(HI)

HSO_TIME(HI)

PTSSEL(HI)

HSO_TIME(HI)

HSI_TIME(HI)

04H

HSI_TIME(LO)

HSO_TIME(LO)

PTSSEL(LO)

HSO_TIME(LO)

HSI_TIME(LO)

03H

AD_RESULT(HI)

HSI_MODE

AD_TIME

HSI_MODE

AD_RESULT(HI)

02H

AD_RESULT(LO)

AD_COMMAND

RESERVED

AD_COMMAND

AD_RESULT(LO)

01H

ZERO_REG(HI)

ZERO_REG(HI)

ZERO_REG(HI)

ZERO_REG(HI)

ZERO_REG(HI)

00H

ZERO_REG(LO)

ZERO_REG(LO)

ZERO_REG(LO)

ZERO_REG(LO)

ZERO_REG(LO)


when read

when write

read & write

when read

when write

wsr=0

wsr=1

wsr=15