找回密码
 注册
关于网站域名变更的通知
查看: 364|回复: 1
打印 上一主题 下一主题

PIC单片机快速入门

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-23 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
PIC单片机快速入门
; s$ g" m* n! h3 D

5 {; ~* I& c4 Y' x* p4 o( }
  PIC16F616是一款14引脚、8位的CMOS单片机。采用精简指令集,仅有35条指令,由于采用了数据总线和指令总线分离的哈佛总线结构,使得除少量指令不是单周期之外,大部分的指令都是单周期指令。这样有利于提高单片机的运行速度和执行效率。
" J. }( R# u, m, o8 l
+ M7 r8 H& ?1 G  I6 g* A  |& @# ~+ ?  3.PIC的输入输出端口
7 d4 t0 _% C3 S6 e/ o7 d  在学习这个部分的时候,曾经遇到过一些问题.PIC单片机的引脚不多,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要讲的是通用IO口的设置问题。! c; o& S# Y+ N& i0 u9 |" j3 s& T
  PIC16F616有12个IO口,但是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,另外,A口具有电平变化中断的功能,而C口没有,在设计的时候要注意。1 _# K0 V0 ^0 t9 {: b; O
  在设置的时候,一般要进行以下几项设置:9 \+ O# O9 `+ V5 ^, D: N* n( C
  (1)设置端口是模拟端口还是数字端口,可以通过寄存器ANSEL来设置.例如你想用AD,就要将相应的引脚设置为模拟输入端口。
/ g. x' ~0 a7 f2 K( {) z1 T0 m6 s* |  。  J0 e$ I9 l& ?9 \; T8 ?4 m4 B& p
  (2)如果你选择的是数字端口,接下来就要设置端口的方向,是输入还是输出(RA3除外),可通过寄存器TRISA(A口)或TRISC(C口)来设置。
& K5 O! L$ a' F  (3)设置端口的输出电平,可以通过寄存器PORTA(A口)或PORTC(C口)来设置。
( ]( D" z) u3 N  这是对IO口的通用设置,但是这不是全部的设置,接下来的设置要看时A口还是C口了。对于A口,它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT引脚的沿中断。如果想要这些功能,就要对相应的寄存器进行设置。% _/ Q6 R& B- Q  `
  弱上拉的设置:只有当引脚为输出的时候弱上拉才有效,可以通过寄存器WPUA来设置相应引脚的弱上拉,值得一提的如果开启了弱上拉,会有多余的电流浪费,这样对于低功耗的设计是不可取的,但是如果在进行一些例如键盘电路设计的候,可以开启弱上拉功能,这样就不需要在键盘电路中加上拉电阻了。/ k: ^* Y9 `+ Q# c' \. d& w
  电平变化中断的设置:可以通过寄存器IOCA来设置,但是首先要将相应引脚设置为数字端口且为输入状态。同时要将寄存器INTCON的REIE位设置为1,总中断要允许(置寄存器INTCON的GIE位),如果设置相应引脚有这个功能,当此引脚电平发生的时候,就会产生一个中断,同时一些中断标志位被置上(INTCON的RAIF位被置1),且总中断GIE被置为0。在中断服务程序中,要软件清除RAIF位和重新置GIE位才能继续开启此中断。2 W$ Z9 Y2 r& {  |3 a
  RA2/INT脚的沿中断设置:同样首先要将相应引脚设置为数字端口且为输入状态,设置INTCON的INTF位为1,表示允许int引脚外部中断,寄存器OPTION_REG的INTEGD位可以设置是上升沿中断还是下降沿中断.当发生中断时,INTCON的INTF位被置为1,GIE被清零,在中断服务程序中,要软件清除INTF位和重新置GIE位才能继续开启此中断。
6 d& n" T" u0 }' J* ~' r, N& e8 S' @  3.PIC的输入输出端口5 n1 s* i/ U& t& f  C1 V
  在学习这个部分的时候,曾经遇到过一些问题.PIC单片机的引脚不多,大多都是复用引脚,例如AD、IO、比较器、外接晶振等等,所以在配置端口的时候,一定要知道每个功能怎样设置才能实现的,在这一小节中,我要讲的是通用IO口的设置问题。. W) v# d2 R: S5 Q* l, g7 n0 \2 W
  PIC16F616有12个IO口,但是有一个引脚(RA3)只能作为输入引脚用,不能用作输出,另外,A口具有电平变化中断的功能,而C口没有,在设计的时候要注意。
* D8 [$ `$ f  S  在设置的时候,一般要进行以下几项设置:) Z  W; c/ T3 x" x
  (1)设置端口是模拟端口还是数字端口,可以通过寄存器ANSEL来设置.例如你想用AD,就要将相应的引脚设置为模拟输入端口。% O8 I" W$ p/ r# m/ Q7 j# i
  。
; n, f& G2 ~9 G  (2)如果你选择的是数字端口,接下来就要设置端口的方向,是输入还是输出(RA3除外),可通过寄存器TRISA(A口)或TRISC(C口)来设置。
, S3 g' A  B$ v3 `  (3)设置端口的输出电平,可以通过寄存器PORTA(A口)或PORTC(C口)来设置。
- ?! H1 m) \+ ~  这是对IO口的通用设置,但是这不是全部的设置,接下来的设置要看时A口还是C口了。对于A口,它有几个特殊的功能:内部弱上拉、电平变化中断、RA2/INT引脚的沿中断。如果想要这些功能,就要对相应的寄存器进行设置。
# ~4 c4 V9 _8 c' c* Z3 _4 s0 v  弱上拉的设置:只有当引脚为输出的时候弱上拉才有效,可以通过寄存器WPUA来设置相应引脚的弱上拉,值得一提的如果开启了弱上拉,会有多余的电流浪费,这样对于低功耗的设计是不可取的,但是如果在进行一些例如键盘电路设计的候,可以开启弱上拉功能,这样就不需要在键盘电路中加上拉电阻了。6 O% p+ F, L6 J  p& c. Y' e# S% \; `
  电平变化中断的设置:可以通过寄存器IOCA来设置,但是首先要将相应引脚设置为数字端口且为输入状态。同时要将寄存器INTCON的REIE位设置为1,总中断要允许(置寄存器INTCON的GIE位),如果设置相应引脚有这个功能,当此引脚电平发生的时候,就会产生一个中断,同时一些中断标志位被置上(INTCON的RAIF位被置1),且总中断GIE被置为0。在中断服务程序中,要软件清除RAIF位和重新置GIE位才能继续开启此中断。
0 h7 g) n* G" x( |! S3 V/ B, l) ~  RA2/INT脚的沿中断设置:同样首先要将相应引脚设置为数字端口且为输入状态,设置INTCON的INTF位为1,表示允许int引脚外部中断,寄存器OPTION_REG的INTEGD位可以设置是上升沿中断还是下降沿中断.当发生中断时,INTCON的INTF位被置为1,GIE被清零,在中断服务程序中,要软件清除INTF位和重新置GIE位才能继续开启此中断。
. B" c4 J" u1 C+ s
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-22 02:26 , Processed in 0.109375 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表