|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机原理% q: I! }, u' I* E4 \0 F2 l
7 i2 @# ~6 `3 t B, \# s
随着大规模集成电路的出现及其发展,将计算机的 CPU 、 RAM 、 ROM 、定时 / 计数器和多种 I/O 接口集成在一片芯片上,形成芯片级的计算机,因此单片机早期的含义称为单片微型计算机,直译为 单片机 。 . }( O: K1 i0 N$ \2 R
8 @: ^* C. s( d: P, z0 \单片机的特点 9 l4 [4 Z1 z+ \ j5 P9 y
# h) ?* ^) S M5 d6 J1 、具有优异的性能价格比
" j1 E3 w7 H' z! O5 y) g& A8 L! O* |) c$ F6 T
2 、集成度高、体积小、可靠性高
( ?9 K2 t+ r6 C! U$ W! h( Z( T9 u6 b) e
3 、控制功能强 % d; S/ L% G. C4 g
; z2 g+ E, b0 h- ~4 、低电压、低功耗 4 ~4 Y" o# ?8 v" N9 g9 G
- g3 I% j! i( N& t# y0 N9 A8 d# q7 K
单片机的应用 & T0 ~, E9 ], A7 U5 J3 w ]' B
5 k: {& W" g4 X7 }( b Z( D
1 、在智能仪器仪表中的应用:在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。
* {, f Y# c: ^8 z2 [/ W, q- w) k- w/ J
2 、在机电一体化中的应用:机电一体化产品是指集机械、微电子技术、计算机技术于一本,具有智能化特征的电子产品。 9 q1 J- y1 q; B0 W
" A' a) N( c' m1 \4 }. x
3 、在实时过程控制中的应用:用单片机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作效率和产品的质量。 / L4 w c. U) h9 N+ \
# s4 E" @7 J/ W9 |, b4 、在人类生活中的应用:目前国外各种家用电器已普通采用单片机代替传统的控制电路。 4 ^1 p& `2 R. _% c
! T+ K$ {0 A* m& F5 、在其它方面的应用:单片机除以上各方面的应用,它还广泛应用于办公自动化领域、商业营销领域、汽车及通信、计算机外部设备、模糊控制等各领域中。
, g; @) E# ]" ?. H& q! M5 P% h9 D7 ~
单片机的基本组成 它由 CPU 、存储器(包括 RAM 和 ROM )、 I/O 接口、定时 / 计数器、中断控制功能等均集成在一块芯片上,片内各功能通过内部总线相互连接起来。
; d& @! K) s* d* w( D: j6 k
. C" _; b E j/ a. a输入 / 输出引脚 P0 、 P1 、 P2 、 P3 的功能 . t, e x, r& m; U% b. L% _8 X
& x5 M/ ?. {4 ]( i0 N* c
P0.0~P0 。 7 P0 口是一个 8 位漏极开路型双向 I/O 端口。在访问片外存储器时,它分时作低 8 位地址和 8 位双向数据总线用。在 EPROM 编程时,由 P0 输入指令字节,而在验证程序时,则输出指令字节。验证程序时,要求外接上拉电阻。 P0 能以吸收电流的方式驱动 8 个 LSTTL 负载。 * C' \& ?4 _ j' y
0 ?' k- ^& y4 F+ m5 z) l, U0 d% HP1. 0 ~P1. 7 ( 1~8 脚): P1 是一上带内部上拉电阻的 8 位双向 I/O 口。在 EPROM 编程和验证程序时,由它输入低 8 位地址。 P1 能驱动 4 个 LSTTL 负载。
) ]& K$ Q8 p4 A( m# ~5 {/ D7 t2 h) f" e$ L5 w1 c5 @8 Y
在 8032/8052 中, P1. 0 还相当于专用功能端 T2 即定时器的计数触发输入端; P1. 1 还相当于专用功能端 T2EX 即定时器 T2 的外部控制端。
J( y5 X" R: I5 H I+ A
$ }7 u7 g+ Q" X7 ]8 q YP2.0~P2.7 ( 21~28 脚): P2 也是一上带内部上拉电阻的 8 位双向 I/O 口。在访问外部存储器时,由它输出高 8 位地址。在对 EPROM 编程和程序验证时,由它输入高 8 位地址。 P2 可以驱动 4 个 LSTTL 负载。
$ K- G( H7 ~/ e' G7 ~1 ?2 G2 n) F8 G2 A4 n
P3. 0 ~P3. 7 ( 10~17 脚): P3 也是一上带内部上拉电阻的双向 I/O 口。在 MCS-51 中,这 8 个引脚还用于专门的第二功能。 P3 能驱动 4 个 LSTTL 负载。
; d8 }4 p2 M3 R! l/ x! |2 C! B: }0 T, Y" C4 F" v; D2 N7 A
P3. 0 RXD (串行口输入) 1 T% ^3 j2 k5 s! s3 _
" l2 D. L9 N& l! a$ `- x
P3. 1 TXD (串行口输出)
$ k9 D& E K4 ?5 j6 h0 q' I4 G$ l! y |2 h
P3. 2 INT0 (外部中断 0 输入)
8 |/ j v( _6 t: h. N, x2 Y
- O, ^2 K7 p p6 M8 X2 V$ YP3. 3 INT1 (外部中断 1 输入) # x+ ~. P+ y0 ]
/ a. R: M9 `$ g% r& V; A
P3. 4 T0 (定时器 0 的外部输入)
4 D- m9 k% y) u3 ?/ x6 x p( {
/ d; W S- |, JP3. 5 T1 (定时器 1 的外部输入)
/ w& j2 k3 k( p
) g0 [7 p0 p( F8 MP3. 6 WR (片外数据存储器写选通) ! Q, B7 V; \# |: a: q6 y( P( n) \
1 Z4 q1 D l U4 U7 eP3. 7 RD (片外数据存储器读选通)
X2 @6 e; [: v6 g# s& k2 T8 H g+ c
MCS-51 的寻址方式:
. n( o5 o1 m& @( x" E% @7 `7 x z) Y/ k
1 、立即寻址 如: MOV A #40H 5 w! M9 Y& z; ?9 h% y5 }
0 Q) o- e( o- c; P4 g6 r2 、直接寻址 如: MOV A 3AH
" W4 T8 O! A/ F' l. H( P# M6 M
4 o2 Z B( V) h, U, H3 、寄存器寻址 如: MOV A Rn % d4 K. G. q/ y% w
3 Z& V+ d5 [- O, g; \4 、寄存器间接寻址 如: MOV A @Rn
6 ?3 C1 i3 N$ v" F$ {; H) H. d* _5 F* ~0 D* c: h1 R9 z+ b
5 、基址加变址寻址 如: MOVC A @A+DPTR
) d, p l; O# \3 Q, A( d) c
# }0 M$ S5 G' K E6 、相对寻址 如: SJMP 08H
% d r$ m5 d! _. |# v& `
3 o; J) a( r) W2 Y7 a7 、位寻址 MOV 20H C
) G- D3 e% j( T2 W5 C% N+ p3 Z5 a2 R! e) \; W+ l/ N
指令:
7 F9 E4 a) J# t4 D" w
! d4 d% S- Q$ H. yMOV 片内 RAM 传送 / k; W0 w3 M% |: n" G
- Q6 Z' n$ i" R2 V: I e5 ^8 ]
MOVX 片外 RAM 传送 , v$ [# s M% J8 ^, ^, a. V! p
* {" n# _5 h9 M, s0 J) U: q+ M
MOVC ROM 传送
1 K2 j9 x8 O* H' J1 q o, T) v
+ r" C' J7 G1 M& ^. Z* xXCH 交换(和 A 交换)
4 h4 i: R3 [- y( ?4 W5 r. k
4 J* ?& L( w' Z0 VSWAP A 内半字节交换
& S- _* v# i; i, d% ~8 d5 X* Y6 P: v7 a# G5 v
ADD 不带进位加 / Y, v- m1 {0 C, N% K
4 k" i# [; n1 q: X, P" x3 z6 W# h/ KADDC 带进位加 6 v( A% p0 C7 x7 F/ k
- D2 V0 d& K- I8 `
SUBB 带进位减 ! k+ S8 d5 F) R4 N+ K
& F" q' l. f3 W3 I7 K& O
INC 加 1
4 E) I3 t3 f: ^
% k' z5 J3 J8 `( k4 N- WDEC 减 1
0 A7 K6 l# Q/ w, a1 B }
- ^+ |: Q# Z V& eMUL 乘法
3 B0 A' e$ g" |5 i
/ B0 B) D& S6 N' a( ` BDIV 除法
, ~4 C; B3 o/ z1 O' y6 J5 i) X0 X% T; d1 F8 K: B- U/ G- N/ ]# }* f
DAA 调整
, p4 J- x& c/ y6 e7 y3 M/ b' t& p) ?: a0 G9 f; y( c2 @( N
计数初值的计算
$ i/ w1 {2 A) D( y* S/ \
1 ~7 [( n, P) ^% k) e定时或计数方式下计数初值如何确定,定时器选择不同的工作方式,不同的操作模式其计数值均不相同。若设最大计数值为 M 各操作模式下的 M 值为: : K4 x) m0 L" Y q
* ~. v! S/ F8 R4 [. t( J8 R. Q模式 0 M=2 13 =8192
% T. X% N* r3 f, N& H$ ? |1 t4 D5 N2 k" \* R4 c
模式 1 M=2 16 =65536
) @; _: }3 g' O& @3 `
2 `/ Q% k/ y& M3 R' F. c9 F8 o模式 2 M=2 8 =256 / y" p& {4 k! o. G3 e+ [) M
6 Q( a6 f; v, Z3 o. C( |' ` S! ?% q5 v模式 3 M=256 定时器 T0 分成 2 个独立的 8 位计数器,所以 TH0 、 TL0 的 M 均为 256 。
( e3 s0 }' H+ O' y; H3 o" O& M) @# ]& b. T
因为 MCS-51 的两个定时器均为加 1 计数器,当初到最大值( 00H 或 0000H )时产生溢出,将 TF 位置 1 可发出溢出中断,因此计数器初值 X 的计算式为: X=M- 计数值 0 R9 L: c. @7 v' n9 r! R- z& j
+ `/ l, T5 O- y; y+ x8 _; |式中的 M 由操作模式确定,不同的操作模式计数器的长不相同,故 M 值也不相同。而式中的计数值与定时器的工作方式有关。 5 E4 b3 h5 J0 k$ S7 U
7 V/ P8 R! f0 Z
1 、计数工作方式时 ; W3 s: b5 r: ?) d; D. C
3 X7 I/ }( r1 c计数工作方式时,计数脉冲由外部引入,是对外部冲进行计数,因此计数值根据要求确定。其计数初值: X=M- 计数值
$ a$ W2 K$ p4 R8 D
, n0 O5 ~5 I% f* N7 S0 |例如:某工序要求对外部脉冲信号计 100 次, X=M-100 / o, ^' L1 b# E. U; L
6 d- B/ O& T8 ]8 i- ?( n2 、定时工作方式时 0 }4 p, s, G( x# v4 A+ M# p1 l
! [6 \" c* O3 O
定时工作方式时,因为计数脉冲由内部供给,是对机器周期进行计数,故计数脉冲频率为 f cont =f osc × 1/12 、计数周期 T=1/f cont =12/f osc 定时工作方式的计数初值 X 等于:
6 j" ?7 w8 [8 F+ j7 v6 J2 G- L. d
% F: |7 p+ n, D6 P/ YX=M- 计数值 =M-t/T=M- ( f osc × t ) /12 0 Y, V& ^9 E; p
6 @/ T. t4 P: \* w6 w5 o式中: f osc 为振荡器的振荡频率, t 为要求定时的时间。 $ y% ?' U, c T
- l% J3 [* n3 c. D, E
定时器有两种工作方式 即定时和计数工作方式。由 TMOD 的 D6 位和 D2 位选择,其中 D6 位选择 T1 的工作方式, D2 位选择 T0 的工作方式。 =0 工作在定时方式, =1 工作在计数方式。并有四种操作模式:
$ L* f7 I2 Q6 ^) R% r$ z, I" a9 A
1 、模式 0 13 位计数器, TLi 只用低 5 位。
8 e1 O- y/ {9 J0 \
$ j- a1 Q5 ]5 i& Y2 、模式 1 16 位计数器。 % P( P! H) v8 H0 H: ?% X2 Z
& d- W2 d, \$ S: w" x: z. h- u6 c
3 、模式 2 8 位自动重装计数器, THi 的值在计数中不变, TLi 溢出时, THi 中的值自动装入 TLi 中。 8 F/ i$ M/ H: y$ E# ]' j
4 R& P4 }4 E! ]& C4 h9 ~
4 、模式 3 T0 分成 2 个独立的 8 位计数器, T1 停止计数。
* `& Y3 }8 Z2 a8 J: }! P- S& L1 i' g9 Q/ ^7 ]" p% {. D% j+ p- Y" Q
MCS-51 有 5 个中断源,可分为 2 个中断优先级,即高优先级和低优先级,
) B; k! {" D" m" T: t' e% b* D. h9 w* }( o5 H4 Y' J, D z! ~) W! D
中断自然优先级:
, c r6 ^0 ^8 O' o m& }
4 L7 N) c2 G/ y( G- C, _/ |* A外部中断 0
+ G: y5 f9 i2 d! |9 P5 t3 Q. J4 t% l9 Z$ E- P
定时器 0 中断
/ U. s# |5 w" S; P
& ]6 d( T8 ?* T: l0 f1 r外部中断 1 9 F; e6 j: a8 d) `
4 |) y7 [9 Q! `& L* l$ N+ u定时器 1 中断 ) t" e* ]( k' D" _4 C' f
$ \% A: J3 d. t& C& `0 k
串行口中断
6 m# Q8 a2 K3 [2 E# g. f1 f: ]# y! B; `: c4 x
定时器 2 中断 5 x* a7 ^; z3 [+ z& ~
; T) h/ v- A4 A
( 1 )同级或高优先级的中断正在进行中;
( B/ Y: u5 K* t' D, L$ o( g& V+ P3 m1 R* i. c; d% w; g) t/ P
( 2 )现在的机器周期还不是执行指令的最后一上机器周期,即正在执行的指令还没完成前不响应任何中断;
( {; J9 ^& P, N$ {/ v/ c, X* D0 O: Y# o0 I8 _* Y+ M
( 3 )正在执行的是中断返回指令 RET1 或是访问专用寄存器 IE 或 IP 的指令,换而言之,在 RETI 或者读写 IE 或 IP 之后,不会马上响应中断请求,至少要在执行其它一要指令之扣才会响应。
1 l# z" E" L2 V% P0 C
; x- G! v0 I0 F. r) k(一)中断响应条件 , F% P, k5 p( R' h3 N8 N( F
1 j. l, W0 m) b+ F( \
CPU 响应中断的条件有: 1 G- ~4 ?1 P1 g) v- L( ]: T
. f7 H* [' x- r7 n1 A% W A( 1 )有中断源发出中断请求;
1 ]+ {# k }8 W5 f* c: m- |! f& N. e( B: Y
( 2 )中断总允许位 EA=1 即 CPU 开中断;
8 y0 q, O9 W0 }" K
* q0 [5 W$ ~! j2 p( 3 )申请中断的中断源的中断允许位为 1 即没有被屏蔽。 / C+ \. e+ F/ E3 J9 r
2 X O% }4 z: t$ c: y串行口工作方式及帧格式 1 N d) Z0 a; Z% P8 k! i
( m" D/ g- z4 o8 ?/ J. n4 X
MCS-51 单片机串行口可以通过软件设置四种工作方式:
2 ?/ W5 }6 O; q8 u" i2 I3 I5 [/ Q1 R8 I4 e! l) t
方式 0 |
 手机扫码浏览
|