原创 PIC单片机入门-确定IC,基本操作

2012-12-9 21:01 1990 13 15 分类: MCU/ 嵌入式
这2周效率比较低,什么都没做,之前纠结是不是买块板子学习下,因为公司项目我的责任要搞下PIC,本一周内可以入门的事情,被自己的纠结给拖延了很久,在之,本周又去产线学习,学习产品的组装,熟悉产品的构架,并实际拆装了机器,发现对很多问题不是很多,只有把这疑问带到实际的产品调试中去学习。总之,踏实学习,认真工作,调整心态,积极生活。

       进入正题吧!PIC单片机是一种高级的单片机,内部资源比较丰富,而且产品系列还说比较多的,有10-18系列的,在网上寻找了些资源后比较多的都是PIC16f887a的资料,包括网上的开发板,想必都是资料复制一片,索性没买板子,节约钱。

       学习PIC单片机,你必须先选好一款单片机型号,然后针对数据手册进行学习。我这次应用到的是PIC18F45K22系列,在网上找不到相关资料,唯一有效的是官方的数据手册,还有官方中文版的哦!

       看了数据手册后基本了解它的pin信息,然后学习编译软件的使用。官方的MPLAB编译软件加上MPLAB c18编译器,我选择的是MPLAB 8.7版本的(**软件需要的请邮件联系),话说装这个要有耐心,基本操作见博文MPLAB初步认识,我装好后设置编译器好几次才能正确编译c。

      如果有个51单片机学习经验的新手来说,暂且把PIC单片机当51处理,按照51的流程学会基本的I/O操作,没学过也不要紧,重要是你感兴趣,才能学好,用好。

      下面我们用我们的知识点亮PIC的第一个发光二极管吧!发光管二极管的发光原理:当发光二极管中流过的电流达到一定值时,二极管便会发光,一般情况下,这个电流值是3~10mA(稍微大于10mA也可以,不过最好不要大于20mA,否则二极管会被烧坏),所以我们要点亮发光二极管就是让他流过的电流在这个范围内。

led电路
led电路

 在此,我用RA0-RA5这6个I/O控制led的亮灭,当RA端口为高电平(1)的时候,LED灯有电流流过,当RA端口为低电平(0)的时候,LED灯不发光。程序中只需要控制RA端口的电平即可控制LED灯的亮灭。

通过查询数据手册,可以知道PORTA口是一个8位的双向端口,有控制数据方向的方向数据寄存器TRIS,读取器件引脚电平的PORT寄存器,输出锁存功能的LATA寄存器,控制模拟还说数字口的ANSELA寄存器。控制一个I/O需要控制这么多寄存器,因为它引脚功能比较多,所以麻烦。具体使用的时候一定要看手册,对着手册应用才不会出错,或者出错的可能性比较小。

    点亮LED灯程序:

#include <p18f45k22.h>//头文件,对单片机引脚的功能定义,必须加入正确才有效工作。
//#pragma config FOSC = INTIO67, FCMEN = OFF, IESO = OFF  //    CONFIG1H #pragma config FOSC = XT, FCMEN = OFF, IESO = OFF
#pragma config FOSC = HSMP, FCMEN = OFF, IESO = OFF
#pragma config PWRTEN = OFF, BOREN = SBORDIS, BORV = 285         //CONFIG2L
#pragma config WDTEN = OFF, WDTPS = 32768                                    // CONFIG2H
#pragma config MCLRE = INTMCLR, LVP = OFF                               // CONFIG3H
//#pragma config STVREN = ON, LVP = OFF, XINST = OFF       // CONFIG4L
#pragma config CP0 = OFF, CP1 = OFF , CP2 = OFF,CP3 = OFF          // CONFIG5L
#pragma config CPB = OFF, CPD = OFF                      // CONFIG5H
#pragma config WRT0 = OFF, WRT1 = OFF,WRT2 = OFF, WRT3 = OFF   // CONFIG6L
#pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF         // CONFIG6H
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF,EBTR3 = OFF    // CONFIG7L
#pragma config EBTRB = OFF     

//以上信息为配置位信息,根据你的需求配置正确才可以工作。

void main()
{

ANSELA=0×00;//控制I/O口是模拟端口还还是数字端口,ANSELAx=0,为数字端口,为1是模拟端口。                                                                                                      TRISA=0×00;//数据方向寄存器,为0是输出,为1是输入
LATA=0xFF;//输出控制,将输出值控制锁存器输出设定的值。还有一个PORT它是读取引脚电平的,但是在pic16系列却可以输出引脚电平,在此,希望大家可以看清手册操作。
while(1);//
}

  以上就是针对led的操作,下次我将详细介绍下PIC单片机的配置位信息,并补充PORTA端口的知识。

文章评论2条评论)

登录后参与讨论

用户412065 2012-12-15 00:15

国外都是pic

用户1676786 2012-12-14 11:56

PIC比51单片机的优势在哪里?
相关推荐阅读
wxg1988 2014-04-22 17:50
全球创客马拉松武汉站已经开始报名啦
星星之火,可以燎原! 全球创客马拉松在深圳、上海、北京、南京、成都等地相继点燃中国的创客之火,下一站:武汉! 改变世界,抑或改变自己,全球创客马拉松也许可以是梦想启航的地方。 英雄不问...
wxg1988 2013-10-24 13:15
液晶显示器原理LCD驱动基础
LCD显示器概述   ——》液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像。  ...
wxg1988 2013-08-13 10:20
Arduino mini 亲手打造
Arduino,满足您创新创意的需要! Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计...
wxg1988 2013-07-30 20:44
【博客大赛】STM32中断小结
  STM32中断EXTI STM32中断支持15个异常中断和240个外部中断,有256个中断优先级,其中I/O可配置为EXTI中断,捕捉外部信号,可配置为上升沿,下降沿,上升下降沿三种中...
wxg1988 2013-07-16 21:09
关注创客与开源电子,可以订阅
   http://list.qq.com/cgi-bin/qf_invite?id=04a0d177cb5a2dd6a4da786f024011139e353139950c4411 关注创客...
我要评论
2
13
关闭 站长推荐上一条 /2 下一条