PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886

发布者:WanderlustGlow最新更新时间:2020-01-22 来源: eefocus关键字:PIC单片机  入门笔记  PIC16F886 手机看文章 扫描二维码
随时随地手机看文章

学习PIC单片机的目的是打算做一款433M无线开关,之前学习过51与AVR单片机,对8位单片机有一些基础,不过PIC单片机还是第一次接触,先从入门开始吧!入门实验最经典的是点亮一只LED了,这次也它为例走一遍PIC开发的整个流程。虽然C语言已成主流,由于PIC单片机汇编指令只有35条,记忆容易,这次就从非主流开始!

一、准备工作
1. 在二手市场买来一本【PIC单片机原理与应用】第4版。
2. 在淘宝买来一个PIC的下载仿真器【PICkit3】。
3. 从废旧设备上面拆下一片PIC16F886的28脚单片机,用覆铜板制作了一个简单的PIC最小系统板,可以用来下载仿真、按键输入、LED指示灯、AD输入。
4. PIC开发环境MPLAB X IDE V3.6。
5. 连接好硬件,如下图



PIC仿真下载器的引脚说明如下图



1脚连接到单片机的1脚;4脚连接到单片机的28脚;5脚连接到单片机的27脚;6脚空。

二、新建项目












三、配置位
PIC单片机配置位很重要,相当于AVR单片机的熔丝位,以下是官方文档对于配置位的说明,如下图



因为最小系统板没有外接晶振,所以要选择使用内部晶振,看门狗也关闭,还有一个是LVP这个要设置为OFF,否则下载后不运行,下面贴设置方法






四、编写程序
这里有几点需要注意的
1. 使用的IO口是否有上拉电阻功能,因为有的IO口没有,在设计电路时需要的话就要加上拉电阻
2. 操作相应的寄存器时可能需要先选择该寄存器所在的存储体,设置由状态寄存器【STATUS】的RP0和RP1位控制,或IRP(间接寻址)来进行选择。

以下是控制LED间隔1秒闪烁的程序
---------------------------------------------------------------------------------------------------------------------------------
#include"p16f886.inc"

; CONFIG1
;__config 0x2FE4
__CONFIG _CONFIG1, _FOSC_INTRC_NOCLKOUT &_WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _CPD_OFF &_BOREN_ON & _IESO_ON & _FCMEN_ON & _LVP_OFF
; CONFIG2
;__config 0x3FFF
__CONFIG _CONFIG2, _BOR4V_BOR40V &_WRT_OFF
; 使用配置位生成器在这里插入配置代码

RES_VECT CODE 0x0000 ; 处理器复位向量
GOTO START ; 转到程序的开始

; 在这里添加中断如果使用

MAIN_PROGCODE ; 让连接器放置主程序

START BSF STATUS,RP0 ;选择体1
BSF OSCCON,SCS
MOVLW H'EF' ;向TRISC写入0x0F
MOVWF TRISC
BCF STATUS,RP0 ;返回体0
LOOP BCF PORTC,RC4 ;将PORTC的RC4位清零
CALL DELAY_1S ;调用延时1秒子程序
BSF PORTC,RC4 ;将PORTC的RC4位置位
CALL DELAY_1S
CALL LOOP ;循环执行

;-------------------------------------------------------------------------------
;延时1S子程序
;-------------------------------------------------------------------------------
DELAY_1S MOVLW H'06' ;向20H写入0x06
MOVWF 20H
LOOP1 MOVLW H'EB' ;向21H写入0xEB
MOVWF 21H
LOOP2 MOVLW H'EC' ;向22H写入0xEC
MOVWF 22H
LOOP3 DECFSZ 22H ;22H自减一,不为0则继续循环,为0则间跳
GOTO LOOP3
DECFSZ 21H ;21H自减一,不为0则继续循环,为0则间跳
GOTO LOOP2
DECFSZ 20H ;20H自减一,不为0则继续循环,为0则间跳
GOTO LOOP1

RETURN ;子程序返回

END

下图是PIC16F886特殊功能寄存器,每个型号的特殊功能寄存器不太一样,需要查看芯片数据手册


总结:学单片机,不只需要时间,还需要资金的投入,应该控制好资金和时间的投入,信心要满满的,我入门PIC的过程中遇到很多问题,有想买个现成的开发板的冲动,后来问题解决了,也学到了不少,开发板虽然是现成的,但是对于硬件开发相当不利,技术应该更多的去尝试,别人的理论要通过实验来验证正确性,技术更是积累,时间久了,自然感到懂得多了,开发项目才能得心应手。关于单片机的选择,可以选择你手上拥有的任何一款PIC的芯片来学习,因为功能在强的芯片,和功能在差的芯片,基本的架构和程序编写逻辑是相同的,学好一款,其它大同小异。

关键字:PIC单片机  入门笔记  PIC16F886 引用地址:PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886

上一篇:PIC单片机入门教程(一)—— 准备工作
下一篇:基于RS232串口实现PIC单片机下位机与QT上位机通信

推荐阅读最新更新时间:2024-11-10 15:17

如何在PIC单片机的GPIO引脚上生成PWM信号
PWM信号生成是每个嵌入式工程师工具库中的重要工具,它们非常适用于控制伺服电机位置,在转换器/逆变器中切换少量电源电子集成电路等许多应用,甚至用于简单的LED亮度控制。在pic 微控制器中, pwm 信号可以通过设置所需的寄存器使用比较、捕获和 pwm (ccp) 模块生成。 如果我们使用CCP模块,PIC16F877A 只能在引脚RC1和RC2产生PWM信号,由此我们可能会遇到需要更多引脚来实现PWM功能的情况。例如,我想控制6个RC伺服电机,CCP模块是不行的。于是在这种情况下,我们可以使用定时器模块对GPIO引脚进行编程以产生PWM信号,这样我们就可以产生尽可能多的PWM信号。还可以考虑其他硬件技术,比如使用多路复用器
[单片机]
如何在<font color='red'>PIC单片机</font>的GPIO引脚上生成PWM信号
基于PIC单片机厨房控制器的设计
随着智能家电控制技术的不断发展,具有多功能和智能化的厨房控制器成为厨房电器设备发展主流。和传统单一厨房设备控制器相比,多功能厨房控制器具有占用空间小、成本低、功能多、便于设备统一管理,使用安全、方便等优点。 系统以PIC单片机作为主控制芯片,选用VFD(Vacuum Fluorescent Display)真空荧光屏为显示器,结合气敏传感器、热敏电阻、高压点火器、继电器等受控对象,通过检测外部信号以及内部定时时间状态可以控制各种受控对象工作状态之间的相互转换,实现对厨房电器设备的智能控制。系统结构框图如图1所示。 1 各单元电路硬件设计 1.1 电源电路设计 设计所需的6组工作电源均由如图2所示的电路提供。6组电
[单片机]
基于<font color='red'>PIC单片机</font>厨房控制器的设计
PIC单片机和51单片机谁更容易于学习
pic单片机是当前最实用工具之一,而对于pic单片机的探讨往往与其他类型单片机相联系。 51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。 再说说PIC相比与51单片机有哪些优点: 1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。 2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,
[单片机]
<font color='red'>PIC单片机</font>和51单片机谁更容易于学习
PIC单片机CCS之C语言(#UNDEF的用法)
#UNDEF 语法:#undef id id是通过#define定义的预处理机id 目的:指定预处理机id对预处理机来说不再有意义. 例子:#if MAXSIZE 100 //若MAXSIZE 100,则执行下面的语句 #undef MAXSIZE // MAXSIZE对预处理机来说不再有意义. #define MAXSIZE 100 //将用MAXSIZE代替100 endif //结束if
[单片机]
PIC单片机AD通道转换函数问题解析
  AD转换   D转换就是模数转换。顾名思义,就是把模拟信号转换成数字信号。主要包括积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。   A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。   AD转换分类   1)积分型(如TLC7135)   积分型AD工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率, 但缺点是由于转换精度
[单片机]
<font color='red'>PIC单片机</font>AD通道转换函数问题解析
STM32入门学习笔记之文件系统FatFs的移植3
21.2.2 ffsystem.c文件的修改 (1)内存分配ff_memalloc void* ff_memalloc( UINT msize ) { return ( void* )mymalloc( SRAMIN, msize ) ; } (2)内存释放ff_memfree void ff_memfree( void* mblock ) { myfree( SRAMIN, mblock ) ; } 21.2.3 exfuns.c与exfuns.h文件的创建 (1)创建exfuns.h文件,并输入以下代码。 #ifndef _EXFUNS_H #define _EXFUNS_H #i
[单片机]
STM32<font color='red'>入门</font>学习<font color='red'>笔记</font>之文件系统FatFs的移植3
ARM学习笔记入门
一、嵌入式系统组成: 嵌入式系统 = 嵌入式硬件系统 + 嵌入式软件系统; 嵌入式硬件系统 = 嵌入式处理器(CPU) + 嵌入式外围器件(ROM + RAM + I / O设备 + ...); 嵌入式软件系统 = 嵌入式操作系统 + 嵌入式应用程序; 二、嵌入式硬件系统结构图示: 嵌入式微处理器: (1)嵌入式处理器 = { 处理器内核,三大总线(数据,地址,控制), 辅助电路(时钟,复位电路...), 片上 I / O }; (2)嵌入式处理器 分为三种: 嵌入式微处理器 / 嵌入式微控制器 / 嵌入式DSP; a)嵌入式微处理器 :CPU (与通用计算机微处理器CPU相对
[单片机]
ARM学习<font color='red'>笔记</font>一 <font color='red'>入门</font>篇
PIC单片机编程格式和风格
首先我们来看一段程序: ittle ‘Input.asm’ ;标题 这是一个简单的输入实验 include COUNT EQU 20H ;定义20H寄存器名为COUNT ORG 0 ;程序区将从0000H开始装载 GOTO START ORG 4 ;中断入口 GOTO INTEN ;中断发生时跳转到INTEN ORG 10 ;START将从第10行开始 START …… MAIN …… GOTO MAIN INTSEVER …… RETFIE ;中断返回 END ;程序结束伪指令,不能少! 事实上汇编程序并没有固定的格式,但是它的各部分是有一定的位置安排的,习惯上依次为: ①程序标题:用Tittle伪指令定义,可缺省; ②程序
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved