
-
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
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72


본문내용
0 (REG)
사용예 :
특정비트를 클리어시키는데 사용될 수 있다.
위의 예에서는 REG의 하위 4비트[3:0]를 클리어시켰다.
▣ IORLW : Inclusive OR Literal with W
문법 :
IORLW k
오퍼랜드 :
k=0~255
동작 :
(W) .or. k → (W)
STATUS :
Z
설명 :
W의 각비트를 k와 OR 시킨다
사용예 :
이전 W=0xA3 ; 1 0 1 0 0 0 1 1
실행 IORLW 0x1F ; or)0 0 0 1 1 1 1 1
이후 W=0xB3 ; 1 0 1 1 1 1 1 1
사용예 :
특정비트를 세트시키는데 사용될 수 있다.(여기서는 W의 bit2)
이전 W=0xAA ; 1 0 1 0 1 0 1 0
실행 IORLW 0x04 ; or)0 0 0 0 0 1 0 0
이후 W=0xA2; 1 0 1 0 1 1 1 0
▣ IORWF : Inclusive OR W with f
문법 :
IORWF f,d
오퍼랜드 :
f=0~127
d=W,F
동작 :
(W) .or. (f) → (d)
STATUS :
Z
설명 :
W와 f의 각비트를 OR 시켜서 결과를 d가 지정하는 곳에 저장한다
사용예 :
이전 W=0x0F, REG=0xAA ; 0 0 0 0 1 1 1 1 (W)
실행 IORWF REG,F ; or)1 0 1 0 1 0 1 0 (REG)
이후 W=0x0F, REG=0xAF ; 1 0 1 0 1 1 1 1 (REG)
사용예 :
특정비트를 세트시키는데 사용될 수 있다.
위의 예에서는 REG의 하위4비트를 세트시켰다.
▣ XORLW : Exclusive OR Literal with W
문법 :
XORLW k
오퍼랜드 :
k=0~255
동작 :
(W) .xor. k → (W)
STATUS :
Z
설명 :
W의 각비트를 k와 XOR 시킨다
사용예 :
이전 W=0x0A ; 0 0 0 0 1 0 1 0
실행 XORLW 0x0F ; xor)0 0 0 0 1 1 1 1
이후 W=0x05 ; 0 0 0 0 0 1 0 1
사용예 :
특정비트를 반전시키는데 사용될 수 있다.
위의 예에서 W의 bit3:0 이 모두 반전되었다.
▣ XORWF : Exclusive OR W with f
문법 :
XORWF f,d
오퍼랜드 :
f=0~127
동작 :
(W) .xor. (f) → (d)
STATUS :
Z
설명 :
W와 f의 각비트를 XOR 시킨후, d가 지정하는 곳에 저장한다
사용예 :
이전 W=0x0F, REG=0xAA ; 0 0 0 0 1 1 1 1 (W)
실행 XORWF REG,F ; xor)1 0 1 0 1 0 1 0 (REG)
이후 W=0x0F, REG=0xA5 ; 1 0 1 0 0 1 0 1 (REG)
사용예 :
특정비트를 반전시키는데 사용될 수 있다.
위의 예에서는 REG의 하위 4비트[3:0]를 반전시켰다.
▨ 비트연산 명령어 (BCF, BSF, BTFSC, BTFSS)
파일레지스터의 특정비트를 Set, Clear 하거나, 특정비트를 검사해서 다음명령어를 스킵할지 실행할지를 결정하는 명령어들로써, SFR의 레지스터를 조작하거나, 조건분기문을 만들거나, 반복문을 반들 때등 매우 유용하게 사용되는 명령어입니다.
▣ BCF : Bit Clear f
문법 :
BCF f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
0 → (f) : 파일레지스터 f의 b번째 비트를 클리어시킴
STATUS :
None
설명 :
레지스터 f의 비트b를 클리어시킨다.
사용예 :
이전 FLAG_REG=0xC7 ;1 1 0 0 0 1 1 1
실행 BCF FLAG_REG,7
이후 FLAG_REG=0x47 ; 0 1 0 0 0 1 1 1
▣ BSF : Bit Set f
문법 :
BSF f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
1 → (f) : 파일레지스터 f의 b번째 비트를 세트시킴
STATUS :
None
설명 :
레지스터 f의 비트b를 세트시킨다.
사용예 :
이전 FLAG_REG=0x00 ;0 0 0 0 0 0 0 0
실행 BSF FLAG_REG,4
이후 FLAG_REG=0x10 ; 0 0 0 1 0 0 0 0
▣ BTFSC : Bit Test f, Skip if Clear
문법 :
BTFSC f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
Skip if (f)=0 : 만일 레지스터 f의 비트b가 0이면 다음 명령을 스킵한다
STATUS :
None
설명 :
레지스터 f의 비트b를 비트테스트한 결과, 0이면 다음 명령은 스킵하고, 0이 아니면 다음명령을 실행시킨다.
사용예 :
HERE BTFSC FLAG,1
FALSE GOTO PROCESS_CODE
TRUE ....
이전 PC = address(HERE)
실행 BTFSC FLAG,1
이후
if FLAG<1>=0 then PC=address(TRUE) : 비트가 클리어(0)이므로 한줄을 스킵하고 TRUE부터 실행됨.
if FLAG<1>≠0 then PC=address(FALSE) : 비트가 클리어가 아니므로 다음줄의 FALSE를 계속 실행함.
결국, 조건문을 구현한 결과가 되었다.
▣ BTFSS : Bit Test f, Skip if Set
문법 :
BTFSS f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
Skip if (f)=1 : 만일 레지스터 f의 비트b가 1이면 다음 명령을 스킵한다
STATUS :
None
설명 :
레지스터 f의 비트b를 비트테스트한 결과, Set(1)이면 다음 명령은 스킵하고, 1이 아니면 다음명령을 실행시킨다.
사용예 :
HERE BTFSS FLAG,1
FALSE GOTO PROCESS_CODE
TRUE ....
이전 PC = address(HERE)
실행 BTFSS FLAG,1
이후
if FLAG<1>=1 then PC=address(TRUE) : 비트가 Set(1)이므로 한줄을 스킵하고 TRUE부터 실행됨.
if FLAG<1>≠1 then PC=address(FALSE) : 비트가 Set가 아니므로 다음줄의 FALSE를 계속 실행함.
결국, 조건문을 구현한 결과가 되었다.
사용예 :
특정비트를 클리어시키는데 사용될 수 있다.
위의 예에서는 REG의 하위 4비트[3:0]를 클리어시켰다.
▣ IORLW : Inclusive OR Literal with W
문법 :
IORLW k
오퍼랜드 :
k=0~255
동작 :
(W) .or. k → (W)
STATUS :
Z
설명 :
W의 각비트를 k와 OR 시킨다
사용예 :
이전 W=0xA3 ; 1 0 1 0 0 0 1 1
실행 IORLW 0x1F ; or)0 0 0 1 1 1 1 1
이후 W=0xB3 ; 1 0 1 1 1 1 1 1
사용예 :
특정비트를 세트시키는데 사용될 수 있다.(여기서는 W의 bit2)
이전 W=0xAA ; 1 0 1 0 1 0 1 0
실행 IORLW 0x04 ; or)0 0 0 0 0 1 0 0
이후 W=0xA2; 1 0 1 0 1 1 1 0
▣ IORWF : Inclusive OR W with f
문법 :
IORWF f,d
오퍼랜드 :
f=0~127
d=W,F
동작 :
(W) .or. (f) → (d)
STATUS :
Z
설명 :
W와 f의 각비트를 OR 시켜서 결과를 d가 지정하는 곳에 저장한다
사용예 :
이전 W=0x0F, REG=0xAA ; 0 0 0 0 1 1 1 1 (W)
실행 IORWF REG,F ; or)1 0 1 0 1 0 1 0 (REG)
이후 W=0x0F, REG=0xAF ; 1 0 1 0 1 1 1 1 (REG)
사용예 :
특정비트를 세트시키는데 사용될 수 있다.
위의 예에서는 REG의 하위4비트를 세트시켰다.
▣ XORLW : Exclusive OR Literal with W
문법 :
XORLW k
오퍼랜드 :
k=0~255
동작 :
(W) .xor. k → (W)
STATUS :
Z
설명 :
W의 각비트를 k와 XOR 시킨다
사용예 :
이전 W=0x0A ; 0 0 0 0 1 0 1 0
실행 XORLW 0x0F ; xor)0 0 0 0 1 1 1 1
이후 W=0x05 ; 0 0 0 0 0 1 0 1
사용예 :
특정비트를 반전시키는데 사용될 수 있다.
위의 예에서 W의 bit3:0 이 모두 반전되었다.
▣ XORWF : Exclusive OR W with f
문법 :
XORWF f,d
오퍼랜드 :
f=0~127
동작 :
(W) .xor. (f) → (d)
STATUS :
Z
설명 :
W와 f의 각비트를 XOR 시킨후, d가 지정하는 곳에 저장한다
사용예 :
이전 W=0x0F, REG=0xAA ; 0 0 0 0 1 1 1 1 (W)
실행 XORWF REG,F ; xor)1 0 1 0 1 0 1 0 (REG)
이후 W=0x0F, REG=0xA5 ; 1 0 1 0 0 1 0 1 (REG)
사용예 :
특정비트를 반전시키는데 사용될 수 있다.
위의 예에서는 REG의 하위 4비트[3:0]를 반전시켰다.
▨ 비트연산 명령어 (BCF, BSF, BTFSC, BTFSS)
파일레지스터의 특정비트를 Set, Clear 하거나, 특정비트를 검사해서 다음명령어를 스킵할지 실행할지를 결정하는 명령어들로써, SFR의 레지스터를 조작하거나, 조건분기문을 만들거나, 반복문을 반들 때등 매우 유용하게 사용되는 명령어입니다.
▣ BCF : Bit Clear f
문법 :
BCF f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
0 → (f) : 파일레지스터 f의 b번째 비트를 클리어시킴
STATUS :
None
설명 :
레지스터 f의 비트b를 클리어시킨다.
사용예 :
이전 FLAG_REG=0xC7 ;1 1 0 0 0 1 1 1
실행 BCF FLAG_REG,7
이후 FLAG_REG=0x47 ; 0 1 0 0 0 1 1 1
▣ BSF : Bit Set f
문법 :
BSF f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
1 → (f) : 파일레지스터 f의 b번째 비트를 세트시킴
STATUS :
None
설명 :
레지스터 f의 비트b를 세트시킨다.
사용예 :
이전 FLAG_REG=0x00 ;0 0 0 0 0 0 0 0
실행 BSF FLAG_REG,4
이후 FLAG_REG=0x10 ; 0 0 0 1 0 0 0 0
▣ BTFSC : Bit Test f, Skip if Clear
문법 :
BTFSC f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
Skip if (f)=0 : 만일 레지스터 f의 비트b가 0이면 다음 명령을 스킵한다
STATUS :
None
설명 :
레지스터 f의 비트b를 비트테스트한 결과, 0이면 다음 명령은 스킵하고, 0이 아니면 다음명령을 실행시킨다.
사용예 :
HERE BTFSC FLAG,1
FALSE GOTO PROCESS_CODE
TRUE ....
이전 PC = address(HERE)
실행 BTFSC FLAG,1
이후
if FLAG<1>=0 then PC=address(TRUE) : 비트가 클리어(0)이므로 한줄을 스킵하고 TRUE부터 실행됨.
if FLAG<1>≠0 then PC=address(FALSE) : 비트가 클리어가 아니므로 다음줄의 FALSE를 계속 실행함.
결국, 조건문을 구현한 결과가 되었다.
▣ BTFSS : Bit Test f, Skip if Set
문법 :
BTFSS f,b
오퍼랜드 :
f=0~127
b=0~7
동작 :
Skip if (f)=1 : 만일 레지스터 f의 비트b가 1이면 다음 명령을 스킵한다
STATUS :
None
설명 :
레지스터 f의 비트b를 비트테스트한 결과, Set(1)이면 다음 명령은 스킵하고, 1이 아니면 다음명령을 실행시킨다.
사용예 :
HERE BTFSS FLAG,1
FALSE GOTO PROCESS_CODE
TRUE ....
이전 PC = address(HERE)
실행 BTFSS FLAG,1
이후
if FLAG<1>=1 then PC=address(TRUE) : 비트가 Set(1)이므로 한줄을 스킵하고 TRUE부터 실행됨.
if FLAG<1>≠1 then PC=address(FALSE) : 비트가 Set가 아니므로 다음줄의 FALSE를 계속 실행함.
결국, 조건문을 구현한 결과가 되었다.
키워드
추천자료
차동 증폭기
공통 베이스,컬렉터,이미터 증폭기(CB,CC,CE)
전압전류회로 예비보고서
[Pspice] op amp 를 이용한 반전 증폭기 및 리미터 설계
트랜지스터(BJT, FET) 완벽정리
OP-amp의 동작 원리를 이용 반전, 비반전 증폭기, 가산기, 감산기 구성
OPamp를 응용하여 반전, 비반전 증폭기 와 voltage flower 실험
실험(3) 예비 3-18,35 공통 게이트 증폭기, 트랜지스터 스위치
[전기전자공학개론] 연산, 비반전, 반전 증폭기
[직렬][직렬연결][RL직렬연결][RLC직렬회로][회로]직렬(직렬연결)과 상호변환, 직렬(직렬연결...
[계측 및 신호 처리] 반전 증폭기
[전자회로실험] Orcad 실험
[전기전자 기초 실험] 공통 베이(CB)스 및 에미터 플로워 트랜지스터 증폭기
트렌지스터 스위칭 회로
소개글