PIC单片机

PIC单片机(PIC microcontroller),是一种使用哈佛结构精简指令集单片机,由Microchip公司研发而成。

PIC microcontrollers

PIC的架构是明显的最低限度。它具有以下特点:

  • 分离式的和(哈佛结构)
  • 少量的固定长度指令
  • 指令是单周期运行(4时钟周期),仅流程转移指令(call, goto, return, 成立时的条件跳跃)需两个指令周期
  • 所有 RAM 位置均可当作作为算数或其他运算的源寄存器或目的寄存器使用
  • 一个用于存放的返回地址
  • 较小的寻址空间,但使用多个 bank 的方式(每个 bank 通常为 128 字节),来访问较大的 RAM
  • 寄存器、等均映射在空间中
  • 进程计数器也是映射到空间和写入(这是用来运行间接跳跃)

历史

GI 的 PIC1655A, 于台湾封装

PIC 单片机源自于 1980 年代由通用仪器所推出的 PIC1650 系列,当时的 PIC 是周边接口控制器(Peripheral Interface Controller)的简称。

GI 的微电子部门于 1987 年分拆成为 Microchip Technology (微芯) 公司。

PIC 产品系列

PIC 的产品线宽广,型号众多,现有数百种,各主要系列如下:

8-bit(数据宽度)单片机

使用哈佛结构,脚本与数据的比特宽度可以不同。但各指令的脚本长度均相同。

  • Baseline 系列 (12-bit 脚本)
  • PIC10F : 6 接脚
  • PIC12C5 , PIC12F5 : 8 接脚
  • PIC16C5 , PIC16F5 : 14 以上接脚
  • Midrange (中阶) 系列 (14-bit 脚本)
  • PIC12C6 , PIC12F6 : 8 接脚
  • PIC16 : 14 以上接脚
  • PIC16F1 : 新推出的 Enhanced Midrange (强化中阶) 系列
  • PIC18 (8-bit 里的高端) 系列 (16-bit 脚本)
  • PIC18 : PIC18C , PIC18Fxxx , 少数早期的 PIC18Fxxxx
  • PIC18 Extended : 目前绝大多数的 PIC18Fxxxx, PIC18FxxJxx, PIC18FxxKxx
  • flash 产品:
  • microchip 收购SST,拥有flash 产品

16-bit(数据宽度)单片机

相当于不具 DSP 相关功能的 dsPIC 单片机

  • PIC24 系列
  • PIC24F
  • PIC24H

32-bit(数据宽度)单片机

  • PIC32 : 采用 MIPS 的 M4K 内核,与其他 PIC 不同。

dsPIC 单片机(16-bit 数据宽度)

  • dsPIC30F
  • dsPIC33F

8-bit PIC 的指令集

PIC的指令十分精简,只有35个,简单易学,故运行速度比8051快。其指令集又分成12-bit PIC instruction set,和14-bit PIC instruction set.

12-bit PIC instruction set
Opcode(二进制)助记体说明
0000 0000 0000NOPNo operation
0000 0000 0010OPTIONLoad OPTION register with contents of W
0000 0000 0011SLEEPGo into standby mode
0000 0000 0100CLRWDTReset watchdog timer
0000 0000 01ffTRIS fMove W to port control register (f=1..3)
0000 001 fffffMOVWF fMove W to f
0000 010 xxxxxCLRWClear W to 0 (a.k.a CLR x,W)
0000 011 fffffCLRF fClear f to 0 (a.k.a. CLR f,F)
0000 10d fffffSUBWF f,dSubtract W from f (d = f − W)
0000 11d fffffDECF f,dDecrement f (d = f − 1)
0001 00d fffffIORWF f,dInclusive OR W with F (d = f OR W)
0001 01d fffffANDWF f,dAND W with F (d = f AND W)
0001 10d fffffXORWF f,dExclusive OR W with F (d = f XOR W)
0001 11d fffffADDWF f,dAdd W with F (d = f + W)
0010 00d fffffMOVF f,dMove F (d = f)
0010 01d fffffCOMF f,dComplement f (d = NOT f)
0010 10d fffffINCF f,dIncrement f (d = f + 1)
0010 11d fffffDECFSZ f,dDecrement f (d = f − 1) and skip if zero
0011 00d fffffRRF f,dRotate right F (rotate right through carry)
0011 01d fffffRLF f,dRotate left F (rotate left through carry)
0011 10d fffffSWAPF f,dSwap 4-bit halves of f (d = f<<4 | f>>4)
0011 11d fffffINCFSZ f,dIncrement f (d = f + 1) and skip if zero
0100 bbb fffffBCF f,bBit clear f (Clear bit b of f)
0101 bbb fffffBSF f,bBit set f (Set bit b of f)
0110 bbb fffffBTFSC f,bBit test f, skip if clear (Test bit b of f)
0111 bbb fffffBTFSS f,bBit test f, skip if set (Test bit b of f)
1000 kkkkkkkkRETLW kSet W to k and return
1001 kkkkkkkkCALL kSave return address, load PC with k
101 kkkkkkkkkGOTO kJump to address k (9 bits!)
1100 kkkkkkkkMOVLW kMove literal to W (W = k)
1101 kkkkkkkkIORLW kInclusive or literal with W (W = k OR W)
1110 kkkkkkkkANDLW kAND literal with W (W = k AND W)
1111 kkkkkkkkXORLW kExclusive or literal with W (W = k XOR W)


14-bit PIC instruction set
Opcode(二进制)助记元说明
00 0000 0000 0000NOPNo operation
00 0000 0000 1000RETURNReturn from subroutine, W unchanged
00 0000 0000 1001RETFIEReturn from interrupt
00 0000 0110 0010OPTIONWrite W to OPTION register
00 0000 0110 0011SLEEPGo into standby mode
00 0000 0110 0100CLRWDTReset watchdog timer
00 0000 0110 01ffTRIS fWrite W to tristate register f
00 0000 1 fffffffMOVWF fMove W to f
00 0001 0 xxxxxxxCLRWClear W to 0 (W = 0)
00 0001 1 fffffffCLRF fClear f to 0 (f = 0)
00 0010 d fffffffSUBWF f,dSubtract W from f (d = f − W)
00 0011 d fffffffDECF f,dDecrement f (d = f − 1)
00 0100 d fffffffIORWF f,dInclusive OR W with F (d = f OR W)
00 0101 d fffffffANDWF f,dAND W with F (d = f AND W)
00 0110 d fffffffXORWF f,dExclusive OR W with F (d = f XOR W)
00 0111 d fffffffADDWF f,dAdd W with F (d = f + W)
00 1000 d fffffffMOVF f,dMove F (d = f)
00 1001 d fffffffCOMF f,dComplement f (d = NOT f)
00 1010 d fffffffINCF f,dIncrement f (d = f + 1)
00 1011 d fffffffDECFSZ f,dDecrement f (d = f − 1) and skip if zero
00 1100 d fffffffRRF f,dRotate right F (rotate right through carry)
00 1101 d fffffffRLF f,dRotate left F (rotate left through carry)
00 1110 d fffffffSWAPF f,dSwap 4-bit halves of f (d = f<<4 | f>>4)
00 1111 d fffffffINCFSZ f,dIncrement f (d = f + 1) and skip if zero
01 00 bbb fffffffBCF f,bBit clear f (Clear bit b of f)
01 01 bbb fffffffBSF f,bBit set f (Set bit b of f)
01 10 bbb fffffffBTFSC f,bBit test f, skip if clear (Test bit b of f)
01 11 bbb fffffffBTFSS f,bBit test f, skip if set (Test bit b of f)
10 0 kkkkkkkkkkkCALL kSave return address, load PC with k
10 1 kkkkkkkkkkkGOTO kJump to address k (11 bits)
11 00xx kkkkkkkkMOVLW kMove literal to W (W = k)
11 01xx kkkkkkkkRETLW kSet W to k and return
11 1000 kkkkkkkkIORLW kInclusive or literal with W (W = k OR W)
11 1001 kkkkkkkkANDLW kAND literal with W (W = k AND W)
11 1010 kkkkkkkkXORLW kExclusive or literal with W (W = k XOR W)
11 110x kkkkkkkkSUBLW kSubtract W from literal (W = k − W)
11 111x kkkkkkkkADDLW kAdd literal to W (W = k + W)

PIC刻录器

刻录芯片的方式有两种:普通刻录和在线刻录。

早期的 PIC16C 系列需使用平行刻录。 程序内存为 Flash 的版本使用方便的串行刻录方式,称为 ICSP。

开发环境

Microchip 公司提供免费的开发环境 (MPLAB IDE) 与汇编器,也出售付费与提供有条件免费版本的 C 语言编译器。另有第三方软件商开发各式 C, BASIC 等编译器与开发环境可以选用。

MPLAB 的下一代多平台开发环境 MPLAB-X (基于 Java 技术) 目前尚处于 beta 阶段。

外部链接

维基共享资源上的相关多媒体资源:PIC单片机
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.