您的位置 首页 电子

看完这篇文章,PIC单片机就能入门了(续)

下面贴出LED闪灯的源码,并逐语句进行讲解。#include "p30f6014A.h" //包含头文件_FOSC(CSW_FSCM_OFF & X

  下面贴出LED闪灯的源码,并逐句子进行解说。

  #include "p30f6014A.h" //包括头文件

  _FOSC(CSW_FSCM_OFF & XT_PLL16); //装备时钟

  _FWDT(WDT_OFF); //封闭看门狗

  假定运用的外部晶振为5Mhz,体系指令周期的计算方法为:

  5M*16/4=20MIPS

  16为16倍频,每履行一条指令要4个时钟周期,因而要除四,就得到了实践的体系时钟。

  IO端口的装备

  IO端口运用很简单,和51比较仅仅多了一个方向操控,在运用端口之前 ,先设置好方向。假定咱们运用的端口A的第十位作为LED的操控位,首要设置该管脚的方向,

  TRISAbits.TRISA10 = 0;//该方位零为输出,置1位输入

  操控端口实践输出凹凸电平的寄存器位LATAbits,将该寄存器的LATA10位进行置1置0操作,即可输出高、低电平。

  #define LED LATAbits.LATA10

  值得注意的是,当进行读引脚操作时,要读PORTAbits寄存器,而不是LATAbits寄存器。

  咱们是选用守时500ms中止的方法来进行LED的亮灭操控,因而需求进行守时器的装备,这儿运用的是16位守时器timer1。涉及到两个函数。

  ConfigIntTimer1(5);//初始化守时器1,中止优先级为5

  OpenTimer1(39062);//进行相关装备并翻开守时器1

  void ConfigIntTimer1(unsigned char priority)

  {

  IFS0bits.T1IF = 0 //铲除中止标志

  IPC0bits.T1IP = priority; //设置中止优先级

  IEC0bits.T1IE = 1; //使能中止

  }

  void OpenTimer1(unsigned int period)

  {

  TMR1 = 0; /* Reset Timer1 to 0x0000 */

  PR1 = period; //中止周期

  T1CONbits.TCS = 0; //挑选时钟源

  T1CONbits.TSYNC =1;

  T1CONbits.TCKPS =3; //256分频

  T1CONbits.TGATE =0;

  T1CONbits.TSIDL =0;

  T1CONbits.TON = 1; //发动守时器

  }

  挑选体系时钟(20MIPS),并进行256分频,20M/256=78125,阐明守时器计时到78125要用1秒钟,守时到500ms需求39062个周期,因而需求设置计时周期为39062,并且因为守时器1为16位守时器,无法计时到一秒,假如需求计时1s能够运用32位守时器timer23和timer45。

  守时器1中止函数

  void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)

  {

  IFS0bits.T1IF = 0;//清零中止标志

  LED = !LED;//对LED循环取反,进行亮灭操控

  }

  如此便可完成LED闪耀功用。

  附上完好的工程源码,请下载检查:

  http://forum.eepw.com.cn/thread/276018/1

  在运用该款单片机的时分还需求注意几个问题:

  1、 因为单片机的管脚有复用功用,在运用端口B的时分,假如想将端口B的第7位用作数字IO,需求这样来设置,(其它端口无需这样操作)

  ADCON1bits.ADON = 0;//封闭AD转换器

  ADPCFGbits.PCFG7 = 1;//该位有必要置位,不然PORTB_7无法用作数字IO管脚

  2、 在体系的装置目录下,自带了单片机各个资源的运用例程,运用者能够参阅。我的目录是:C:\Program Files (x86)\Microchip\MPLAB C30\src\peripheral_30F_24H_33F\src\ pmc (供参阅)

  3、 在运用串口资源时,需求精确设定串口波特率,以设置UART1, 9600波特率为例,波特率计算方法为:20MIPS/((9600+1)*16)=130。将130赋给U1BRG寄存器即可。

  4、 该单片机具有内部EEPROM,假如需求存储的数据量不大的话,一些需求掉电存储的参数能够存储在单片机内部,可简化外部电路设计。

  有了以上的根底,信任学习这款单片机就轻松多了,能够使初学者少走弯路,集中精力处理本质性问题,以上是自己个人的一点经历,如有遗漏之处,欢迎纠正。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/115979.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部