Professional Documents
Culture Documents
2. . , . , . , . , .
, " ".
, , 1999.
3. S. Mueller, "Upgrading and Repairing PCs", Scott Mueller, 10th edition, Que
Corporation, 1998.
.
, . , "8086: ,
4.
', , 1992.
PIC
5.1
5.2
5.3
5.4
5.5
5.6
114
PIC
PIC
Assembly PIC
Assembly
:
PIC.
Assembly , .
.
Assembly.
Assembly.
I PIC
5.1 PIC
5.1.1
,
. ,
, CISC
RISC. PIC, Microchip
RISC.
PIC , (core)
(peripheral units).
,
.
.
PIC :
. ,
. ,
. ,
, , ,
, ,
. ,
, .
,
, , ,
. PIC, Microchip.
.
,
,
Assembly. ,
. ,
.
, , ,
PIC,
.
:
/
( )
( )
,
PIC.
5.1.2
(..), CPU,
. , ,
117
, , . ,
PIC (35) .
.
,
(...). 5.1 ... , ,
PIC.
. ,
(AND, OR, XOR, ).
(8-bit).
PC
STATUS
A/D
118
USART
, ,
. ,
,
.
Program Counter (PC).
5.1.3
.
.
.
.
5.2.
..
I PIC
...
14
PWM
5.1 PIC.
...
5.2 . ()
. () (
PIC).
119
PIC .
,
()
. , ,
. , ,
,
. , PIC,
(14) (bits) (8),
, . ,
,
, , , , , ,
.
2 8KBytes , ,
Flash.
.
.
,
128Bytes , 384Bytes .
.
PIC
.
,
.
5.1.4
RISC CISC.
RISC,
CISC.
RISC
,
.
PIC, RISC
(35) , (14 bit). ,
CISC, PIC
120
I PIC
, . ,
,
.
80, CISC,
(10) .
PIC ,
.
5.1.5
PIC ,
, .
, ,
. PIC
.
.
, , K.M.E.
.
,
.
PIC,
. ,
, PIC, .
, ,
. , , , ..
/,
. ,
, ...
... .
,
.
, ,
. ,
.
.
, , ,
. ,
...,
121
. , ...
, ,
, , .
,
, , , , ...
, .
PIC , , ,
. ,
. ,
, , , .
, ,
, .
, , , ,
, ,
PIC.
5.1.6
,
, ,
.
, A/D ,
, .
, . ,
. PIC
,
.
/ , (8)
(bits).
.
.
, ,
. ,
,
.
,
(PWM).
(.. ).
. ,
: ,
122
I PIC
USART , , , SSP
(Synchronous Serial Port).
, .
,
.
, , 8 bit.
5.2
,
. ,
. ,
. ,
,
.
.
, .
.
PIC ,
PIC, 5.3.
128KB
128KB
128KB
5.3 , , PIC.
123
, ,
(special function registers),
.
(general purpose register file). ,
W PC, .
W .
PIC. ,
. ,
,
W.
, PC,
. ,
... .
, ,
. PC, ,
1, .
, .
.
,
. , PC
.
PIC 13 bit. ,
213 , 0 8191.
. , PIC
8 , 5.1.3.
, , STATUS,
.
5.4.
7
0
6
RP1
5
RP0
4
-
3
-
2
Z
1
DC
0
C
5.4 STATUS.
bits 6, 5, 2,
1 0, . , ,
bits:
124
I PIC
5.3 PIC
PIC . ,
, (14) .
. ,
(OPCODE),
.
, . ...,
, , ,
, , , ,
.
, .
PIC , :
125
I PIC
13
12
11
10
6
5
3
2
1
12
11
10
5
3
2
1
() bit
13
12
11
10
3
2
()
13
12
11
10
000101
() Byte ( d
)
13
, .. W.
Byte.
5.5(), .
, , .
6 bit 000101. 1 bit.
. 0 W, 1
. 7 bit TMR0,
. ,
PIC 128 , 7 bit
. , :
()
5.5 PIC
,
, , .
, (AND)
. W
1 . TMR0
,
PIC. , ,
126
0000001
, .
, :
ANDWF TMR0, 0
ANDWF 000101, TMR0
0000001
.
PIC.
01010100000001 bit TMR0, 1.
BSF TMR0,2. , 101 10111110011
5F3 H
. GOTO 05F3 H.
, , PIC
.
PIC
.
5.4
.
,
. 5.6.
127
C1
OSC1
C2
PIC
OSC2
I PIC
,
, GOTO 05F3 H, . ,
4 .
3, BSF TMR0, 1 ,
BSF TMR0, 2.
,
.
PIC, :
= 4 / (. PIC)
5.6 PIC.
455kHz 20MHz,
. PIC
OSC1.
, -
.
... .
PC 1 ,
,
. PIC,
.
,
, , PC. ,
. PC
, ,
.
.
,
:
05F0 H: ADDWF TMR0, 0
05F1 H: GOTO 05F3 H
05F2 H: BSF TMR0, 1
05F3 H: BSF TMR0, 2
05F4 H: ..
05F5 H: ..
05F5 H: ..
128
, PIC, ,
20z 0,2sec. ,
0,8sec.
,
.
.
Assembly.
. ,
.
, Assembly
PIC, , ,
. Assembly,
PIC , , . ,
,
.
. , Assembly
. ,
, , . ,
Assembly, ,
.
,
. ,
Basic Assembly. ,
,
. , , ,
. ,
.
.
C, , ,
Assembly. C, ,
Assembly.
Assembly, , ,
.
.
PIC. , ,
:
130
I PIC
/
bit
( )
,
,
. , 5.1
.
, , .
5.5.1
, , . ,
, ,
, ,
, . , , ,
PIC,
.
MOVLW
W . W
, , . ,
.
MOVLW
0 255.
:
W. ( 5.7)
MOVLW
5.7 W
MOVLW .
0 255,
byte. W
. .
.
131
, , W = 7A H MOVLW 35 H.
W = 35 H.
MOVWF
,
W. ,
. PIC
W.
MOVWF 0
127
.
KAMIA
: W,
( 5.8).
0
I PIC
, , W = 16 H TMR0 = 6A
MOVWF TMR0.
TMR0 = 16 H.
, W. ,
. TMR0
23 H. , , , W
, , TMR0 W. ,
:
MOVLW 23 H
MOVWF TMR0
MOVF K, d
, , W
.
TA
1
2
3
...
...
...
...
...
...
MOVWF K
W
MOVF K, d
0 127
.
d 0 127.
Z
: ,
W, d = 0, , d = 1. ( 5.9)
0
1
2
K+1
...
...
...
...
...
...
...
...
...
FE H
FF H
5.8 W
MOVWF .
, 0
127 . ,
, .. TMR0,
1, .
, .
.
132
MOVF K, 0
W
MOVF K, 1
K+1
...
...
...
FE H
FF H
5.9 W
MOVF , 0 MOVF , 1.
133
, ,
, 0 127
,
. ,
(). d = 1,
. , ,
0.
. , ,
TMR0, .
1
, , W = 26 H TMR0 = 1A
H. MOVF TMR0, 0. ,
W = 1A H, = 0, .
2
, , , , W = 26 H
TMR0 = 0.
MOVF TMR0, 1. d = 1,
W TMR0 .
0, 1, .
I PIC
.
"MOVLW 0" , 1.
.
, , W = 71 H CLRW.
W = 0, = 1,
.
CLRF
, ,
.
CLRF
0 127
.
Z
: K
1 ( 5.11).
CLRW
,
W. :
2
3
CLRW
: W
1 ( 5.10).
...
...
...
...
...
...
0
CLRF K
K+1
...
...
...
CLRW
134
5.10 W CLRW.
FE H
FF H
5.11 CLRF K.
W, ,
1. , , .
135
I PIC
TMR0 = C3 H. CLRF
TMR0. , TMR0 = 0 = 1,
.
0
1
2
3
1. W 9 H;
2. TMR0 5;
3. W
:
23 H, 0A H, 5, 50F H, 0FF H, 111 H, 035 H
4. TMR0
W.
INCF K, 1
1.
(loops) . PIC
.
INCF K, d
, , K
.
TA
INCF K, d
0 127
.
d 0 127.
Z
: K,
1
W, d = 0, K, d = 1 (
5.12).
136
K+1
...
...
...
INCF K, 0
FE H
W
5.5.2 /
...
...
...
...
...
...
FF H
5.12 1
W INCF K, 0
INCF K, 1.
, ,
0 127
, .
().
.
1
, , TMR0 = 16 H W = 8 H.
:
INCF TMR0, 1
,
TMR0 = 17 H ( , d = 1)
W = 8 H ( , d = 1)
,
= 0 ( ), .
2
, , TMR0 = FF H W = 8 H.
:
INCF TMR0, 0
137
,
TMR0 = FF H ( , d = 0)
W = 0 ( , d = 0)
,
= 1 ( ), .
INCFSZ K, d
. ,
.
. ,
.
INCFSZ K, d
0 127
.
d 0 127.
: K, 1
W, d = 0, K, d = 1.
,
.
PC. ,
5.5 ,
2 .
.
:
INCFSZ TMR0, 1
MOVLW 23 H
INCF TMR0, 1
, , TMR0 = FF H W = 12 H. ,
, :
: INCFSZ TMR0, 1
W = 12 H,
138
I PIC
TMR0 = 0
: 2
: MOVLW 23 H
.
: INCF TMR0, 1
W = 12 H,
TMR0 = 1
: 1
, 0,
.
, , , TMR0 = 5 H W = 12 H.
, , :
: INCFSZ TMR0, 1
W = 12 H,
TMR0 = 1
: 1
: MOVLW 23 H
W = 23 H,
TMR0 = 1
: 1
: INCF TMR0, 1
W = 23 H,
TMR0 = 2
: 1
, , 3
.
DECF K, d
.
INCF, , , .
139
DECF K, d
0 127
.
d 0 127.
Z
: K, 1
W, d = 0, K, d = 1
( 5.13).
1
2
3
-1
...
...
...
...
...
...
...
...
...
FE H
FF H
5.13 1
W DECF K, 0
DECF K, 1.
,
, 1.
DECFSZ K, d
INCFSZ, .
140
1. W 1;
2. DECF TMR0, 1;
3. W TMR0,
'DECF TMR0, 0', TMR0=5;
K+1
DECF K, 0
DECFSZ K, d
0 127
.
d
0 127.
: K, 1
W, d = 0, K,
d = 1.
.
. ,
, , ,
1.
DECF K, 1
I PIC
5.5.3
. PIC
. ,
.
ADDLW
, ,
.
5.4.
ADDLW
0 255.
C, DC, Z
: W
W ( 5.14).
141
+
ADDLW
5.14 W
W ADDLW .
0 255, byte.
W
. , ,
(C), (DC),
3 4 bit, (). ,
.
, ,
.
1
W = 6D H ADDLW D1 H :
0110 1101
+ 1101 0001
0011 1110
=
=
=
6D H
D1 H
3E H
, W
W = 3E H, :
C = 1 ( ),
DC = 0 ( )
= 0 ( 0),
.
I PIC
0010 1100
=
2C H
+ 1001 0101
=
95 H
1100 0001
=
C1 H
, W
W = C1 H, :
C = 0 ( ),
DC = 1 ( )
= 0 ( 0),
.
ADDWF K, d
,
. , , W. , ,
,
.
ADDWF K, d
0 127
.
d 0 127.
Z, C, DC
: W,
W, d = 0,
, d = 1 ( 5.15).
5.15
0
W
1
2
3
W ADDWF K,
0 ADDWF
K, 1.
ADDWF K, 1
ADDWF K, 0
2
W = 95 H ADDLW 2C H :
...
...
...
...
...
...
K
K+1
...
...
...
W
FE H
FF H
142
143
.
, ,
(C), (DC)
().
, ,
.
1
W = A3 H, TMR0 = 15 H ADDWF TMR0, 0, :
1010 0011
+ 0001 0101
1011 1000
=
=
=
I PIC
SUBLW
. ,
,
W. .
SUBLW
0 255.
C, DC, Z
: W,
W ( 5.16).
3
15
B8 H
, W
W = B8 H, :
SUBLW
C = 0 ( ),
DC = 0 ( )
= 0 ( 0),
.
2
W = DB H, TMR0 = 85 H ADDWF TMR0, 1 :
1101 1011
+ 1000 0101
0110 0000
=
=
=
DB H
85 H
60 H
, (60 H) TMR0, W
(DB H). :
C = 1 ( ),
DC = 1 ( )
= 0 ( 0),
.
144
5.16 W
W SUBLW .
, 0
255. , ,
(C), (DC) ().
.
, ,
.
1
W = 6D H SUBLW D1 H :
1101 0001
- 0110 1101
0110 0100
=
=
=
D1 H
6D H
64 H
, W
145
W = 64 H, :
C = 0 ( ),
DC = 1 ( )
= 0 ( 0),
.
2
W = A4 H SUBLW 21 H :
0010 0001
- 1010 0100
0111 1101
=
=
=
21 H
A4 H
7D H
I PIC
SUBWF K, d
. ,
,
W.
SUBWF K, d
0 127
.
d 0 127.
Z, C, DC
: W,
W,
d = 0, , d = 1 ( 5.17).
, W
W = 7D H, :
C = 1 ( ),
DC = 1 ( )
= 0 ( 0),
1
2
3
.
SUBWF K, 1
3
W = 21 H ADDLW 21 H, :
0010 0001
- 0010 0001
0000 0000
=
=
=
21 H
21 H
0
, W
W = 0, :
+
SUBWF K, 0
...
...
...
...
...
...
K
K+1
...
...
...
W
FE H
FF H
C = 0 ( ),
DC = 0 ( )
= 1 ( 0),
.
146
5.17 W
W SUBWF K, 0
SUBWF K, 1.
, 0
127 , .
(C),
147
I PIC
(DC) (). , ,
.
1
W = 6D H, TMR0 = D1 H SUBWF TMR0, 0, :
1101 0001
- 0110 1101
0110 0100
=
=
=
D1 H
6D H
64 H
, W , ,
W = 64 H, :
C = 0 ( ),
DC = 1 ( )
= 0 ( 0),
.
2
W = 67 H, TMR0 = 4 H SUBWF TMR0, 1, :
0110 0111
- 1010 0100
1100 0011
=
=
=
67 H
A4 H
C3 H
, TMR0, d = 1,
, , TMR0 = C3 H, :
C = 1 ( ),
DC = 0 ( )
= 0 ( 0),
.
3
W = 21 H, TMR0 = 21 H SUBWF TMR0, 0,
:
0010 0001
- 0010 0001
0000 0000,
=
=
=
21 H
21 H
0
, W
W = 0, :
C = 0 ( ),
DC = 0 ( )
= 1 ( 0),
.
1. C, DC Z, ADDWF
2. TMR0, 1, TMR0=0D H W=13 H;
3. ;
5.5.4
, PIC,
.
.
.
,
.
.
bits .
PIC :
(AND)
H (OR)
(XOR)
1
bits
AND OR, PIC , ,
. , .
148
149
ANDLW
, ,
. , ,
.
ADLW
0 255.
Z
: KAI
W .
W ( 5.18).
A ND
5.18
W
W ANDLW .
, 0
255. , W,
, bit bit, .
().
, .
150
0011 0101
AND 1010 0100
0010 0100
(35 )
(4 )
(24 H)
, W , W = 24 H,
0.
1010 1011
AND 0001 0100
0000 0000
ANDLW
1
W = 35 H ANDLW 4 H :
2
W = AB H ANDLW 14 H :
I PIC
( )
(14 )
(0)
, W
W = 0, 1,
.
ANDWF K, d
H ,
W .
, ,
, .
ADWF , d
0 127
.
d 0 127.
Z
:
W .
W, d = 0 ( 5.19),
, d = 1 ( 5.19).
151
5.19()
0
W
1
2
3
W ANDWF K, 0.
...
...
...
...
...
...
K+1
AND
8
ANDWF K, 0
...
...
...
FE H
AND
8
ANDWF K, 1
152
1010 0011
AND 0001 0101
0000 0001
(3 )
(15 )
(1)
, W, W = 1,
0, .
AND
0101 1010
1000 0101
0000 0000
(5A H)
(85 H)
(0)
1
2
3
...
...
...
...
...
...
K
K+1
1
W = A3 H TMR0 = 15 H.
ANDWF TMR0, 0, :
2
W = 5A H TMR0 = 85 H.
ANDWF TMR0, 1 :
.
().
,
.
FF H
5.19()
W
ANDWF K, 1.
I PIC
...
...
...
FE H
FF H
, TMR0
TMR0 = 0, 1, 0.
W .
IORLW
, PIC, (OR).
, , , ANDLW .
IORLW
0 255.
:
W .
W ( 5.20).
153
I PIC
, W
W = 0, 1,
.
IORWF K, d
OR
IORLW
5.20
W
W IORLW .
, 0 255.
(). ,
.
H ,
W .
, ,
, .
ADWF , d
0 127
.
d 0 127.
Z
:
W .
W, d = 0 ( 5.21,) ,
d = 1 ( 5.21).
0
1
1
W = 11 H IORLW 96 H :
0001 0001
OR 1001 0110
1001 0111
...
...
...
...
...
...
(0)
(0)
(0)
OR
2
W = 0 IORLW 0 :
154
(11 )
(96 )
(97 H)
, W , , W = 97 H,
= 0, .
0000 0000
OR 0000 0000
0000 0000,
K+1
...
...
...
FE H
FF H
IORWF K, 0
5.21 H W
W IORWF K, 0.
155
0
1
I PIC
0000 0000
OR 0000 0000
0000 0000
(0)
(0)
(0)
2
3
...
...
...
...
...
...
OR
8
K+1
IORWF K, 1
...
...
...
FE H
FF H
5.21 H W
IORWF K, 1.
, 0 127
, . ,
, ().
, TMR0 , ,
TMR0 = 0, 1, 0.
W .
XORLW
, PIC,
(OR). , , ANDLW IORLW
.
ORLW
0 255.
Z
: (R)
W .
W ( 5.22).
1110 0100
OR 0000 0101
1110 0101
(4 )
(5)
(E5 H)
, W, W = E5 H,
0.
2
W = 0 TMR0 = 0.
IORWF TMR0, 1 :
156
X OR
1
W = E4 H TMR0 = 5.
IORWF TMR0, 0, :
8
XORLW
W
5.22
W W
ORLW .
0 255. ,
, ().
.
157
1
W = 19 H XORLW 97 H :
0001 1001
OR 1001 0111
1000 1110
(1 )
(97 )
(8D H)
I PIC
5.23 H
W
W
ORWF K, 0.
0
1
2
3
...
...
...
...
...
...
, W , , W = 8D H,
0, .
2
W = C H XORLW C H :
(C H)
(C H)
(0)
, W , ,
W = 0, 1, ,
.
XORWF K, d
H
, W .
, ,
, .
XO R
1100 1011
OR 1100 1011
0000 0000
:
W .
W, d = 0 ( 5.23),
, d = 1 ( 5.23).
K+1
...
...
...
FE H
FF H
XORWF K, 0
5.23 H
W
ORWF K, 1.
0
1
2
3
...
...
...
...
...
...
XOR
XORWF , d
0 127
.
d 0 127.
Z
K+1
XORWF K, 1
...
...
...
FE H
FF H
158
159
. ,
,
().
, , .
1
W = ED H R0 = A5 H.
ORWF R0, 0, :
1110 1101
OR 1010 0101
0100 1000
(D H)
(A5 H)
(48 H)
I PIC
: 1 ,
W, d = 0 ( 5.24),
, d = 1( 5.24).
5.24
1
W,
COMF K, 0.
, W, W = 48 H,
0, 0. O R0
.
(62 H)
(62 H)
(0)
1
2
3
...
...
...
...
...
...
K+1
...
...
...
NOT
2
W = 62 H R0 = 62 H.
ORWF R0, 1 :
0110 0010
OR 0110 0010
0000 0000
FE H
FF H
COMF K, 0
, R0 , ,
R0 = 0, 1, 0.
W .
COMF K, d
5.24
1
,
COMF K, 1.
, ,
.
160
COMF K, d
0 127
.
d 0 127.
Z
0
1
2
3
...
...
...
...
...
...
NOT
K+1
XORWF K, 1
...
...
...
FE H
FF H
161
I PIC
K
, , ,
.
1
W = 6D H TMR0 = 71 H.
COMF R0, 0.
, 8E H W, W = 8E H,
d = 0.
= 0, 0, .
2
W = 5 H TMR0 = FF H.
COMF R0, 1.
, 0 TMR0, TMR0 = 0,
d = 1.
= 1, 0, .
C
W
RLF K, 0
5.25 , C,
W, RLF K, 0.
K
C
RLF K, d
, PIC
. , ,
,
, , , .
RLF , d
0 127
.
d 0 127.
C
: C
bit.
W, d = 0 ( 5.25), ,
d = 1 ( 5.25)
RLF K, 1
5.25 , C,
K, RLF K, 1.
5.25 5.25.
, .
, C, .
.
W = 54 H, TMR0 = AB H C = 0.
RLF R0, 0. W,
d = 0, W = 56 H, C = 1. O TMR0
.
RRF K, d
PIC,
. , ,
.
162
163
RRF , d
0 127
.
d 0 127.
C
: C
bit.
W, d = 0 ( 5.26),
, d = 1 ( 5.26).
K
I PIC
.
RRF R0, 1.
TMR0, d = 1,
TMR0 = 55 H, C = 1. O W ,
, .
SWAPF K, d
, PIC
4 bits, , 4
. :
C
W
RRF K, 0
5.26 , C,
W, RRF K, 0.
SWAPF , d
0 127
.
d 0 127.
: bits 0 3, , bits
4 7, . W,
d = 0 ( 5.27), , d = 1 ( 5.27).
K
SWAPF K, 0
C
RRF K, 1
5.26 , C,
K, RRF K, 1.
.
, 5.26 5.26.
, , , .
, C,
.
, ,
.
W = 54 H, TMR0 = AB H C = 0,
164
5.27
W, SWAPF K, 0.
SWAPF K, 1
5.27
, SWAPF K, 1.
165
.
. .
W = 43 H TMR0 = 61 H.
SWAP R0, 1.
TMR0, d = 1,
TMR0 = 16 H, . O W
, , .
NOP
.
NOP
A
: .
,
.
5.5.5 bit
, byte,
bit,
bits . PIC (4)
bit , .
166
I PIC
BSF K, b
1 bit .
.
BSF , b
0 127
.
b 0 7.
A
: bit ,
b, 1.
. b
bit, 1, . ,
.
TMR0 = 31 H
TMR0 = 71 H
BSF TMR0, 6
0
BCF K, b
bit .
BCF , b
0 127
.
b 0 7.
167
: bit b 0.
, ,
b bit 0. ,
.
TMR0 = FD H
TMR0 = 7D H
BCF TMR0, 7
0
I PIC
b bit .
bit 1, , .
2 , 5.4.
bit 0, , .
bit .
:
1.
2.
3.
4.
MOVLW 84 H
MOVWF R0, 1
BTFSS R0, 2
BSF R0, 1
5. BSF R0, 3
, , TMR0
84 H (1000 0100 B). BTFSS R0, 2,
bit 2 ( 0 7) 1. ,
.
TMR0 = 8C H.
, , TMR0 80 H,
. , , TMR0
= 8 H.
, , 5
.
BTFSC K, b
BTFSS K, b
bit,
b, bit 1
.
BTFSS , b
0 127
.
b 0 7.
: bit,
b 1,
0, .
168
.
bit 0 1.
BTFSC , b
0 127
.
b 0 7.
: bit,
b 0,
1, .
, , ,
.
169
1. TMR0=35 H.
'BSF TMR0, 1';
2.
'BCF TMR0, 4';
3. TMR0=35 H,
:
BTFSC TMR0, 3
BSF TMR0, 1
BSF TMR0, 7
I PIC
014 H: NOP
015 H: BSF R0, 5
016 H: ADDLW 1C H
017 H: RLF R0, 0
018 H: NOP
GOTO PC 17 H. ,
, PIC 17 H,
RLF TMR0, 0 ( 5.30).
0000
...
...
...
5.5.6 ( )
0010
MOVLW 35 H
, ,
.
. , ,
. PIC .
, , ,
.
0011 H
MOVWF TMR0, 1
0012
GOTO 17 H
0013
BCF TMR0, 3
0014
NOP
0015
BSF TMR0, 5
0016 H
ADDLW 1C H
0017 H
RLF TMR0, 0
0018 H
NOP
GOTO
GOTO
.
GOTO
0 2047.
: PC .
, 2 ,
5.5.
.
, 10 H: 010 H: MOVLW
35 H
011 H: MOVWF R0, 1
012 H: GOTO 17 H
013 H: BCF R0, 3
170
PC = 17 H
...
...
...
FFFF H
5.30 12 H ,
17 H, GOTO 17 H,
PC 17 .
6 .
5.6
Assembly
PIC. ,
171
, C BASIC. ,
Assembly
.
Assembly.
.
Assembly . , ,
.
. , ,
.
,
. ,
Assembly :
-
WHILE - DO
PIC.
. ,
, . ,
,
.
, , ,
Assembly. ,
. :
..
ROUT1
MOVLW
45 H
;W = 45 H
,
';'.
172
I PIC
5.6.1 -
,
, . ,
, READ () WRITE
(),
.
Assembly, ,
,
. ,
, . ,
, , .
, PIC
. , ,
. , 30 H,
30 H. ,
:
. ,
,
. PIC
W.
W .
, 5F H
( ) 30 , :
:
MOVLW 5F H ; W 5F H
MOVWF 30 H ; 30 H W
30 H 5F H (
5.31).
173
0
1
I PIC
30 H
TMR0 ( 5.32).
0
3
5F H
...
...
...
...
...
...
MOVLW 5F H
MOVWF 30 H
W
2
MOVF TMR0, 0
3
...
...
...
...
...
...
30 H
MOVWF 30 H
31 H
...
...
...
30 H
31 H
...
...
...
FE H
FF H
FE H
5.31 5F H 30 ,
MOVLW 5F H MOVWF 30 H.
, ,
. , ,
.
, , , PIC
W. ,
,
W .
,
TMR0 ( ) 30 ,
:
:
MOVF TMR0, 0 ; W TMR0
MOVWF 30 H ; 30 H W
174
TMR0
FF H
5.32 TMR0 30 ,
MOVF TMR0, 0 MOVWF 30 H.
: .
.
5.6.2
, Assembly,
.
.
,
. RETURN,
.
, , ,
PORTA, 5,
TMR0, , ..
READ_PORTA, :
175
READ_PORTA MOVF 5, 0
MOVWF TMR0
RETURN
;
; PORTA W.
; W
; TMR0.
; .
CALL, :
1
2
k
CALL READ_PORTA
k+2
CALL READ_PORTA
CALL
, :
CALL
PIC
.
CALL
:
. PC
.
GOTO, .
, PC + 1,
. , PC
176
I PIC
, , CALL, .
, ,
.
2 . ,
:
, 10 H
READ_PORTA, ,
95 :
010 H: MOVLW 12 H
; W 12 .
011 H: MOVWF TMR0, 0 ; TMR0 0.
012 H: CALL 95 H
; READ_PORTA ( CALL READ_PORTA).
013 H: XORWF TMR0, 0 ; XOR W TMR0.
.
.
.
, PIC ,
95 H ( 5.33).
0000
...
...
...
0010
MOVLW 12 H
0011 H
MOVWF TMR0, 0
0012
CALL 95 H
0013
XORWF TMR0, 0
...
...
...
0095 H
MOVF 5, 0
0096 H
MOVF TMR0
0097 H
RETURN
FFFF H
PC = 95 H
...
...
...
5.33 , 95 , CALL 95 H,
PC 95 .
177
I PIC
, , 95 H
, READ_PORTA.
, , PIC CALL,
, XORWF TMR0, 0.
PC . , 13 H.
0000
RETURN
,
CALL .
, ,
, ,
. , .
RETURN
: ,
,
CALL
.
.
2 . ,
.
CALL.
10 H, READ_PORTA
95 H.
CALL, ,
95 H, PC 12 95 H, 13 ,
, , . PC
95 , PC + 1, 13 , .
, -. ,
RETURN PC + 1, 13 H,
PC ( 5.34). ,
PIC CALL, ,
XORWF TMR0, 0.
...
...
...
0010
MOVLW 12 H
0011 H
MOVWF TMR0, 0
0012
CALL 95 H
0013
XORWF TMR0, 0
...
...
...
PC = 13 H
0095 H
MOVF 5, 0
0096 H
MOVF TMR0
0097 H
RETURN
FFFF H
...
...
...
5.34 , , RETURN,
PC 13 .
RETFIE
, , ,
,
.
RETFIE
: ,
.
.
.
5.6.3
178
,
179
, .
Assembly
. . ,
, ,
(), 1. , ,
.
, , ,
, W 0.
:
IORLW 0
BTFSS STATUS, 2
CALL READ_PORTA
IORLW 0
BTFSS STATUS, 2
CALL READ_PORTA
; W = W OR 0
; Z = 1 .
; READ_PORTA.
; W = W OR 0
; Z = 1 .
; READ_PORTA.
,
W 0. H (R)
W 0.
W . ,
W 0. 0, ,
, 1. ,
0. ,
W,
W 0.
Assembly.
, BTFSS.
, bit 2 STATUS, Z = 1
, CALL, .
.
, GOTO CALL. ,
BTFSS,
.
180
I PIC
5.6.4
,
.
.
, ,
200sec .
PIC.
4MHz, , 5.4,
1 4/4MHz, 1sec. , 200sec
200 .
, , , DELAY.
TMR0 .
W.
:
DELAY MOVF TMR0,W
LOOP1 NOP
NOP
DECFSZ TMR0, 1
GOTO LOOP1
NOP
RETURN
; TMR0 = W (1 )
; (1 )
; (1 )
; R0 1
; 0 RETURN (1 2 )
; (2 )
; (1 )
; (2 )
MOVLW
CALL DELAY
;
; (2 )
.
:
:
181
: ( - 1) x (1 + 1 + 1 + 2) + (1 + 1 + 2)
:
NOP
NOP DECFSZ GOTO NOP
NOP DECFSZ
, 4 1 ,
MOVFW 1, 1 , NOP, 2
, RETURN. , 2
, CALL. , 6 .
5 x ( - 1) + 10 = 200,
39.
5.6.5 WHILE - DO
, , ,
.
WHILE - DO, REPEAT - UNTIL, FOR - DO, .
:
= 0;
WHILE (, .. ? 10)
1;
2;
1;
DO
; ? 10. >10
; , DO, .
= 35;
REPEAT
1;
2;
1;
UNTIL (, .. = 10)
; =10.
,
; , UNTIL, .
I PIC
. ,
. ,
.
, ,
.
, , 7
5 55 H.
:
1. .
2. 55 H.
(7 ),
.
. ,
, :
; 21 H, 7 .
MOVLW 7
;W = 7
MOVWF 21 H ; 21 H = 7.
; 0 W.
MOVLW 0
;
START ADDLW 5H
; W 5.
DECFSZ 21 H, 1 ; 21 H 1
; 0 ,
GOTO START ;
END
;
.
,
, . Assembly
182
: , , ;
183
5.7 PIC
, PIC
. .
, ,
(USART).
PIC.
PIC
, ,
.
(bits).
, ,
(flag), 1 . bits
, , IE
(interrupt enable), , IF (interrupt flag), . ,
TIMER0, ,
bits 0IE 0IF.
bits, ,
. :
INTCON
PIE1
PIR1
PIE2
PIR2
bits INTCON
, bits
, , , .
5.7.1 INTCON
5.35. bit /
bit ,
TIMER0 .
4 7. ,
bits , 0
. , bits
, ,
, .
.
184
I PIC
7
GIE
6
PEIE
5
T0IE
4
INTE
3
RBIE
2
T0IF
1
INTF
0
RBIF
5.35: INTCON
bits :
GIE: Bit .
1 = .
0 = .
PEIE: Bit
.
1 = .
0 = .
T0IE: Bit TIMER0. 1 =
TIMER0.
0 = TIMER0.
INTE: Bit RB0/INT.
1 = RB0/INT.
0 = RB0/INT.
RBIE: Bit B.
1 = B.
0 = B.
T0IF: TIMER0. 1 = TMR0
.
0 = TMR0 .
INTF: RB0/INT.
1 = RB0/INT.
0 = RB0/INT.
RBIF: B.
1 = 4 7 B
.
0 = 4 7 B .
185
4. (SSP).
5. CCP1
6. TIMER2
001A H:
001 H:
186
I PIC
0083 H:
009A H: RETFI
(polling). , .
, ,
.
.
, USART,
,
.
, ,
, , :
1. bit TXIE PIE1 0.
2.
.
3. , , ,
bit TXIF PIR1 1.
,
,
.
:
BCF PIR1, TXIF ; USART ()
START
;
GOTO START
;
187
USART,
ROUT_USART
RETIF (,
GOTO START)
6.1 /
6.2
6.3 /
/ (PWM)
6.4
6.5
6.6
:
PIC.
Assembly.
.
.
.
.
PIC
Assembly. ,
PIC .
,
PIC .
:
/
(PWM)
PIC, . ,
,
, ,
.
,
. ,
8 bits. , ,
, .
. , ,
,
.
.
,
.
.
,
. ,
, , .
6.1 /
/ , , PIC,
.
.
, (pin)
. ,
. ,
,
/ .
PIC 5 / , , , C, D E.
TRIS
PORT. 5 TRIS, TRIS, TRIS,
TRISC, TRISD, TRISE, . ,
5 PORT, PORT, PORTB, PORTC, PORTD PORTE.
TRIS 1 ,
PORT, 0. 8
/ . 6 (RA0 - RA5)
3 (R0 - R2).
,
TRIS, 1
. bit
. bit "1", ,
, "0", , . ,
0 TRISA 1, RA0
.
. ,
.
PORT, .. C PORTC ,
. ,
.
RA0
RA1
RA2
, RA0 - RA5,
. , , . ,
192
RA4
RA5
, ,
, "1" bits TRISA ,
"0"
. , TRISA
11001110 (CE H). , bits 6 7, "1",
, 6 7 .
, , , ,
. ,
,
. 6
ADCON1, 6.5,
.
7
0
6.1.1
RA3
PIC
( )
6
0
5
0
4
0
3
0
2
1
1
1
0
0
6.2: ADCON1 6,
.
193
RA0
RA1
RA2
PIC
( )
RA3
, .
BCF STATUS, RP0 ; 0
BCF STATUS, RP1 ; (RP0 = 0 RP1 = 0).
;
; 1
; (RP0 = 1).
RA4
RA5
CLRF PORTA
6.1.2
8 ,
bit TRISB 1 0. ,
R0 - R3 ,
6.3, 00001111 (0F H)
TRIS. :
BCF STATUS, RP0
BCF STATUS, RP1
; 0
; (RP0 = 0 RP1 = 0).
CLRF POTR
; 1
; (RP0 = 1).
; 00001111 (0F H) TRISB
; RB0 - RB3
MOVLW 0F H
MOVWF TRISB
MOVLW 6
;
MOVWF ADCON1 ;
RB0
MOVLW CE H
MOVWF TRISA
RB2
, , .
, , .
.
PORTA 0 . ,
, , ,
.
, ,
194
RB1
PIC
( B)
RB3
RB4
RB5
RB6
RB7
6.3 R0 - R3
R4 - R7 .
195
, R4 - R7 .
. , ,
.
, , .
,
PORTB. , ,
bit RBIE bit RBIF. bits
INTCON, 6.4.
7
4
RBIE
RC0
RC1
RC2
PIC
( C)
RC3
RC4
RC5
RC6
0
RBIF
RC7
,
. ,
PORTB.
,
. , RBIF 0.
PORTB,
1, 0.
RB0,
PIC.
,
.
, bit INTEDG OPTION_REG 1
RB0, 0
. , bit 7
OPTION_REG, 1. bits INTEDG
7, OPTION_REG, 6.5.
7
1
6
INTEDG
, RB0
, .
PIC
SLEEP, .
/ . , / ,
.
.
6.1.3 C
C 8 - . ,
, .
, RC0 - RC2
, 6.6, 00000111 (03 H)
TRISC.
:
BCF STATUS, RP0
BCF STATUS, RP1
; 0
; (RP0 = 0 RP1 = 0).
CLRF POTRC
; 1
;.
; 00000111 (03 H) TRISC
MOVLW 03 H
196
197
MOVWF TRISC
; RC0 - RC2
; RC3 - RC7
RC0
RC1
RC2
PIC
( C)
RC3
RC4
RC5
RC6
RC7
, , , 30 . ,
PORT ,
, , .
,
PORT , ,
PORT.
bits PORT,
.
, , . C RC0
RC1 RC2 - RC5 . ,
PORTC 00101110 (2 )
RC0 =1 RC1 = 0. , "BCF
PORTC, 3", 00101101 (2D H) , , bit 3.
, 00100101 (25 H), PORTC. , ,
00100110 (26 ), ,
, PORTC , , 30 .
6.7 .
PINS
READ PORTC
,
,
PIC.
. , , bits
TRISC
.
BITS 0 - 1
RC0
RC1
RC2
BITS 2 - 7
RC3
RC4
RC5
RC6
6.1.4 D E
H D 8 / E 3.
, B C ,
, .
, PIC,
PORT.
PORT
, , , ,
PORT
.
, bit,
, , ,
. "BCF 30 , 3",
30 , bit 3 ,
198
RC7
7
PORTC
6.7 PORTC C,
RC0 RC1 , RC2 RC7,
.
1.
;
2. C,
RC3 RC6
;
199
6.2
, ,
.
. .
, ,
. ,
.
PIC.
.
, PIC,
. 6.8.
5
TOCS
4
TOCE
3
0
2
PS2
1
PS1
0
PS0
6.9 OPTION_REG
Fosc / 4
PRESCALER
T0CKL
TOCS
TOCE
TMR0
T0IF
PS0 - PS2
OPTION_REG
6.10 TIMER0.
. , , bits TMR0
. , , bit
OPTION_REG .
PIC
Bits 7-6: .
TOCS:
1 = OCLK ( )
0 = ( ).
6.8 PIC .
6.2.1 TIMER0
8 bits 8
bits. TIMER0 TMR0,
2 . TIMER0
bits 0 - 5 OPTION_REG,
1 . OPTION_REG
6.9, 6.10.
200
TOSE:
1 = OCLK
0 = OCLK
Bit 3: "0".
PS2-PS0:
Bits
000
001
010
011
100
101
110
111
MR0
1:2
1:4
1:8
1:16
1:32
1:64
1:128
1:256
201
bit
TOCS = 0. . , ,
, ,
TMR0. , .
, ,
TMR0, .
, bit TOCS = 1.
, T0CLK.
. bit TOSE, .
bits 0 2.
TIMER0, TMR0
. , ,
. , bits PS2 - PS0
000 2 2
. , ,
. , ,
, , , 4.
TMR0 ,
FF 0, .
bit T0IF INTCON. 0
,
. , , bit T0IE,
INTCON, 0. , ,
6.11.
7
6
5
4
3
2
1
0
TOIE
TOIF
6.11 0IE T0IF INTCON.
,
.
( ).
TIMER0
(TOCS = 0), (TOSE = 0),
1:16 (PS2 - PS0 = 011). , OPTION_REG
( 6.9) 11000011 (C3 H). bits 6 7
"1". ,
:
202
CLRF TMR0
CLRF INTCON
; TMR0
: TOIF
; 1
MOVLW 83 H
; 83
MOVWF OPTION_REG ; , ,
; 1:16
BCF STATUS, RP0
; 0
; TMR0
;
( ).
TIMER0
T0CLK (TOCS = 1), (TOSE = 1),
1:256 (PS2 - PS0 = 111). ,
OPTION_REG 00110111 (37 H). bits 6 7
"0". ,
:
CLRF TMR0
CLRF INTCON
; TMR0
: TOIF
; 1
MOVLW 37 H
;
MOVWF OPTION_REG ; T0CLK, 1:256
BCF STATUS, RP0
; 0
; TMR0
;
, ,
. ,
, ,
OPTION_REG. , .
203
6.2.2 TIMER 2
TIMER0 / ,
TIMER2, 8 bits. O TIMER2, , ,
TIMER0. , prescaler,
, TIMER0. O , postscaler,
.
(PWM).
TMR2,
T2CON, 6.12.
0 .
7
-
6
5
4
3
2
1
0
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
6.12 T2CON
T2CON
. bits
R2 . TIMER2,
, 6.13.
bit
TIMER2.
RESET
TMR2 = PR2
TMR2IF
POSTSCALER
1:1 1:16
T2OUTPS3 - 0
PRESCALER
1:1 1:4 1:16
TMR2
F osc / 4
TMR2ON
T2CKPS1 - 0
PR2
T2CON
6.13 TIMER2.
1111 = 1:16
TMR2O: Bit TIMER2.
1 = TIMER2
0 = TIMER2
T2CKPS1 - T2CKPS0:
(prescale). 00 = 1
01 = 4
10 = 16
11 = 16
PIC,
Fosc/4. , 1, 4 16,
.
, bits T2CKPS1 - T2CKPS0
T2CON.
,
, PR2, 1 .
. TMR2
PR2 , , , , 0.
, PR2,
TMR2 .
,
, . TIMER2
TMR2IF PIR1 ( 6.14).
bit TMR2IE PIE1 (
6.15). , , , ,
, .
7
1
TMR2IF
Bit7: . "0".
TOUTPS3 - TOUTPS0:
(postscale).
0000 = 1:1
0001 = 1:2
0010 = 1:3
204
1
TMR2IE
TIMER2
:
205
TIMER2
TIMER2 1:16
(T2CKPS1 - T2CKPS0 =11) 1:15
(TOUTPS3 - TOUTPS0 = 1110).
TIMER2 (TMR2ON = 0). ,
T2CON ( 6.12) 01110011
(72 ). bit TMR2ON "1".
, TMR2IF,
TMR2 PR2. 0
, .
, ,
TIMER2, TMR2
PR2 ().
, 5.7, 5. ,
,
, , bit TMR2IF PIR1 1.
,
, 5.6, 5,
, .
:
; TIMER2, 1:1
CLRF T2CON
;
; TMR2
CLRF TMR2
;
;
CLRF INTCON
;
; 1
BSF STATUS, RP0
;
;
CLRF PIE1
;
; 0
BCF STATUS, RP0
;
;
CLRF PIR1
206
;
; Prescaler = 1:16, T2CKPS1 - T2CKPS0 =11
; Postscaler = 1:15, TOUTPS3 - TOUTPS0 = 1110
; TIMER2, TMR2ON = 0
MOVLW 72 H
MOVWF T2CON
;
; TIMER2
BSF T2CON, TMR2ON
;
;
; Timer2 .
; TMR2IF
; .
;
T2_OVFL_WAIT
; (bit TMR2IF).
; (TMR2IF = 0) .
; (TMR2IF = 1) .
BTFSS PIR1, TMR2IF
GOTO T2_OVFL_WAIT ; .
;
; . TMR2IF. BCF PIR1, TMR2IF
1. ;
2. TIMER0;
3. ;
4. ;
6.3 / /
(PWM)
PIC,
, :
207
(PWM)
CCP. PIC
, , CCP1
CCP2. .
CCP1 , 0
. , CCP1CON, 8 bits,
. , CCPR1, 16 bits
.
16 bits, 16 bits PWM 10 bits,
. 16 bits,
, CCPR1H CCPR1L,
byte , .
, CCP1,
PIC, .
TIMER1, , PWM, TIMER2. ,
CCP2 ,
.
, , bits
. 6.16.
. bits
.
7
-
6
-
5
DCIB1
4
DCIB0
3
CCPIM3
2
CCPIM2
1
CCPIM1
0
CCPIM0
6.16 CCP1CON
bits :
its 7 6: 0.
DC1B1- DC1B0: Bits PWM
bits, 1 0, 10 bits
PWM. 8 CCPR1L.
.
CCP1M3 - CCP1M0: Bits
0000 = .
(reset) . 0100 - 0111 = .
1000 - 1011 = .
208
6.3.1
, CCP CCP1,
TMR1, , , TIMER1,
CCPR1. :
.
.
4 .
16 .
.
6.3.2
, CCP1
CCPR1 TMR1.
CCP1 0 1 1 0,
bits CCP1M3 - CCP1M0 CCP1CON.
6.3.3 (PWM)
PIC
.
.
.
, duty cycle. duty cycle
. , duty cycle %. duty cycle 25%,
25%
. RC2, C.
bits CCP1M3 - CCP1M0 CCP1CON,
209
. CCP1,
TRIS. ,
TIMER2, TIMER1
. 6.17 PWM
.
(6.3)
PR2
PWM
PRESCALER
(TIMER2)
PWM
TPWM
Tosc
DCPWM
CCPR1L
PWM
(PIN RC2)
DC PWM
TMR2 = DCPWM
TMR2 = PR2
DCPWM
TMR2 = PR2
DC1B1
DC1B0
CCP1CON
CCP1M2
CCP1M3
6.17 PWM .
PWM, TPWM,
PR2. , PR2
TMR2
TIMER2. , , , :
TPWM = [(PR2) + 1] 4 TOSC (prescale TIMER2)
(6.1)
, PWM ,
:
FPWM = 1 / TPWM
(6.2)
1 - PR2
PWM, FPWM, 78,125 kHz o PIC
FOSC = 20 MHz.
prescale TIMER2 1,
2CON T2CKPS1 - T2CKPS0 = 00, , 6.1,
PR2, :
TPWM = 1/78,125 kHz = [(PR2) +1] 4 (1 / 20 MHz) 1
= [(PR2) +1] 4 0,05 s 1
12,8 s
= 63
PR2
,
PWM CCP1 . ,
,
:
1. PWM PR2.
2. duty cycle PWM DC1B (bits DC1B9 - DC1B0).
3. CCP1 bit PWM1
TRISC.
211
4. prescale T2CON
TIMER2.
5. PWM CCP1
CCP1CON.
, :
2 - PWM 20% duty cycle
PIC, 20 MHz,
duty cycle 20% FPWM = 156,3 kHz,
PWM = 6,4s.
, 1,28 s.
TIMER2, prescale 1, bits
T2CKPS1 T2CKPS2 , T2CON,
0.
, 6.1,
PR2 31, 1F H. , 6.3,
, , DC1B 26, 1 H.
DC1B 10 bits , , :
7
0
6
0
5
0
CCPR1L
4
3
0
0
2
1
1
1
0
0
CCP1CON
DC1B0
DC1B1
0
1
; CCP
; TIMER2
MOVLW 1F H
MOVWF PR2
;
; PR2 = 31 (1F H)
; PWM1 (RC2 C)
BCF TRISC, PWM1
; .
CLRF PIE1
; 0
BCF STATUS, RP0
;
CLRF PIR1
; PWM, DC1B1 = 1 DC1B0 = 0.
MOVLW 2C H
MOVWF CCP1CON
BSF T2CON, TMR2ON
; TIMER2
; CCP1.
; (bit TMR2IF).
; (TMR2IF = 0) .
; (TMR2IF = 1) .
PWM_Period_Match
BTFSS PIR1, TMR2IF
GOTO PWM_Period_Match ; .
; TMR2IF
BCF PIR1, TMR2IF
1. PWM; ;
2. , ,
;
3. bits
PWM.
6.4
. USART
213
RCIF
. ,
(full duplex).
.
, /. ,
(half duplex).
. , ,
, . ,
,
, , .
, , USART, 3 :
(full duplex)
- Master (half duplex)
- Slave (half duplex)
,
. RC6 RC7 C
PIC, TX/CK RX/DT .
bit SPEN bits 6 7 TRISC,
1. , , ,
TX/CK RX/DT .
, ,
, TXSTA RCSTA.
USART
. USART, ,
6.19, ,
6.20. , , , .
TXIF
TXREG
SPBRG
(8)
TSR
TX/CK
(PIN RC6)
RCREG
SPBRG
RSR
START 0
(8)
STOP
RX/DT
(PIN RC7)
OERR
FERR
CREN
RX9
RX9D
SPEN
RCSTA
6.20 USART .
TXSTA 6.21 ,
,
. ,
.
7
0
6
TX9
5
TXEN
4
0
3
0
2
BRGH
1
TRMT
0
TX9D
6.21 TXSTA .
bits :
Bit 7: . "0".
TX9: bits
1 = 9 bits
0 = 8 bits
TXEN: Bit
1 =
0 =
Bit 4: , "0".
BRGH
TXEN
TX9
Bit 3: . '0'.
TX9D
TXSTA
TRMT
214
6.19 USART .
215
6
RX9
5
0
4
CREN
3
0
2
FERR
1
OERR
0
RX9D
6.22 RCSTA .
, , bits :
SPEN: Bit .
1 = ( RX/DT TX/CK
)
0 =
RX9: bits
1 = 9 bits
0 = 8 bits
Bit 5: . "0".
CREN: Bit
1 =
0 =
Bit 3: . '0'.
FERR: Bit
1 = (
RCREG byte)
0 =
OERR: Bit
1 = ( , bit CREN.)
0 =
216
bits
, bits 4 7. bits 0 2 , 3 bit
.
, ,
. , ,
, ,
. , ,
.
. , , ,
, . ,
, , ,
, . ,
, ,
. , ,
.
, 2 3 bits.
. bits
1 2 .
6.23 .
1
6.23 bits .
.
,
.
Baud rate , ,
bits. :
(BRGH = 0):
Baud Rate = FOSC / (64 (X+1))
(6.4)
(BRGH = 1):
Baud Rate = FOSC / (16 (X+1))
(6.5)
, , Baud Rate ,
SPBRG.
217
bit SYNC
TXSTA, 0.
4 :
Baud Rate
.
, , .
TSR TXREG. TSR,
TXREG.
byte , TSR
TX/CK. ,
TSR
. H byte,
, TSR ,
bit . byte, TXREG TSR,
, TXREG . ,
TXIF, PIR1 ( 6.24).
bit ,
PIE1 ( 6.25). , TXIF 1
,
.
TXREG.
7
4
TXIF
4
TXIE
, ,
:
1. SPBRG baud rate.
bit BRGH = 1.
2. bits SYNC = 0 SPEN = 1.
3. , , bits TXIE = 1, GIE = 1 PEIE = 1.
4. 9 bits , , bit TX9 = 1.
5. bit TXEN = 1, bit TXIF 1.
5
RCIF
5
RCIE
, .
, bit OERR,
RCSTA. , ,
bit . ,
RCREG. , ,
, . RCREG
, . ,
RSR RCREG
219
bit OERR,
. bit CREN
1 (reset).
, bit FERR,
RCSTA. 6.23, bit
1. bit
0, ,
. , bit FERR 1. bit ,
RCSTA,
RCREG, bits FERR RX9D,
.
, ,
:
1. SPBRG baud rate.
bit BRGH = 1.
2. bits SYNC = 0 SPEN = 1.
3. , , bits RCIE = 1, GIE = 1 PEIE = 1.
4. 9 , , bit RX9 = 1.
5. bit CREN = 1.
6. RCIF 1, ,
bit RCIE = 1.
7. RCSTA 9 bit, ,
.
8. RCREG.
9. . reset
bit CREN.
. Baud rate 9600,
8 bits PIC 20z.
(BRGH = 0), 6.4,
SPBRG 31 (1F ). ,
8 bits (TX9 = 0) (TXEN = 1). ,
0100000 (40 ) TXSTA.
, 8 bits (RX 9 = 0)
(RCEN = 1). ,
TX/CK RX/DT (SPEN = 1). ,
10010000 (90 ) RCSTA. "0"
bits . ,
/ :
220
BSF STATUS,RP0 ; 1 .
; Baud rate 9600 ( 6.4)
MOVLW 1F H
MOVWF SPBRG
; .
;
; 8 .
MOVLW 40 H
MOVWF TXSTA
BSF PIE1,TXIE ;
BSF PIE1,RCIE ;
;
BCF STATUS,RP0 ; 0 .
; 8 .
MOVLW 90 H
MOVWF RCSTA
1. ;
2. ;
3.
;
6.5
(A/D)
8 (0 - 7), (RA0/0,
RA1/1, RA2/2, RA3/3 RA5/4) E (RE0/5, RE1/6 RE2/7).
10 bits.
PIC, VDD, ,
VREF+, VREF- .
A/D 6.27.
221
VDD
7
ADCS1
/
111
ADCS0
ADCS1
ADON
A/D
CHS0
GO/DONE
CHS1
CHS2
VAIN
VREF-
101
AN5
100
AN4
011
AN3
010
AN2
AN0
PCFG0 - PCFG3
ADCON1
6.27 A/D.
4 . :
A/D 0 (ADCON0)
A/D 1 (ADCON1)
A/D 8 bits (ADRES)
A/D 2 bits (ADRESL)
.
.
/ .
(ADRESH ADRESL) A/D ,
6.28.
A/D
BITS ADRESH
5
4
3
2
1
BITS ADRESL
7
6
, , , ,
. , ,
ADCON0, 0 ,
6.29.
222
3
SHS0
2
GO/DONE
1
-
0
ADON
6.29 ADCON0
AN1
000
ADRESL
4
CHS1
AN6
001
ADRESH
5
CHS2
AN7
110
ADCON0
VREF+
6
ADCS0
6
ADCS0
5
CHS2
4
CHS1
3
SHS0
2
GO/DONE
1
-
0
ADON
6.30 ADCON1
Bit 7: "0".
its 6 4: . 0.
223
A/D
BIT
A/D
PIC
:
AN7
A
PCFG3 - 0
0000
0010
0100
0110
1001
1110
AN5
A
AN6
A
AN4
A
A
AN3
A
A
A
AN2
A
A
AN1
A
A
A
AN0
A
A
A
A
A
A/D .
, ADRES ADRESL,
, , 0 1 .
bit GO/DONE ADCON0 A/D ,
ADIF PIR1 ( 6.31), 1.
7
6
ADIF
6
ADIE
.
, F,
, , :
F = 2 F
(6.6)
.
PIC
bits ADCS1 ADCS0.
:
224
2TOSC
8TOSC
32TOSC
RC
ADCS1 - 0
00
01
10
11
20 MHz
1,6s
2-6s
5 MHz
1,6s
6,4s
2-6s
1.25 MHz
1,6s
6,4s
25,6s
2-6s
333.33 kHz
6s
24s
96s
2-6s
. 10
20Hz 1,6s.
16 s
, 62,5 Kz.
,
, , ,
TRIS. , , , , A/D
.
.
, .
:
A/D
8 (PCFG3 PCFG0 = 0000). , ADCON1 0.
, A/D (ADON = 1),
RC (ADCS1 - ADCS0 = 11),
0 (CHS2 -CHS0 =000). ,
A/D (GO/DONE = 1)
(ADON = 1),
. , ADCON0
11000001 (C1 H). :
; 8
BSF STATUS, RP0 ; 1 .
MOVLW 0
MOVWF ADCON1
225
RC - A/D - 0
BCF STATUS, RP0 ; 0 .
MOVLW C1 H
MOVWF ADCON0
; -
BCF PIR1, ADIF ; bit A/D
BSF PIE1, ADIE ; A/D
BSF INTCON, PEIE ;
BSF INTCON, GIE ;
, , , ,
. ,
, .
,
, Intel, Motorola, ..
,
, .
; A/D .
BSF ADCON0, GO
(ADIF=1),
ADRESH ADRESL, , ,
.
1.
2.
3.
4.
A/D ;\
() ;
bits ;
;
6.6
. PIC Microchip,
RISC. ,
.
, PIC, ,
, , .
226
1. Microchip Technology Inc., "PICmicro Mid - Range MCU Family" Reference Manual,
1997
2. Microchip Technology Inc., "PIC 16F87X 28/40-pin 8-Bit CMOS FLASH
Microcontrollers", Reference Manual, 1999
227