MPLAB 简介及 PIC 点亮的第一个流水灯:PIC16F87X 系列单片机引脚详解

PORTB总共有8位(RB0~RB7),可以编写程序规划输入输出方向、状态,其中,要进行烧录时,使用到三个引脚,分别是引脚36(RB3/PGM)、引脚39(RB6/PGC)与引脚40(RB7/PGD)。4.2流水灯程序例子

MPLAB 简介及 PIC 点亮的第一盏流水灯

1.PIC16F87X系列单片机引脚介绍

PIC16F87X系列单片机的引脚分为两种:一种是40脚(包括871、874、877),如图所示;另一种是28脚(包括870、872、873、876)。

MPLAB 简介及 PIC 点亮的第一个流水灯:PIC16F87X 系列单片机引脚详解

PIC16F877除基本电路占用的7个引脚外,其余33个引脚均可作为输出和输入引脚使用。输入输出端口是单片机的基本元件,可以控制电路并与外围电路进行信号传输和检测。PIC是8位单片机,按引脚特性分组,每组尽可能用8个引脚填充,I/O命名为PORTA(RA0~RA5)、PORTB(RB0~RB7)、PORTC(RC0~RC7)、PORTD(RD0~RD7)和PORTE(RE0~RE2)等。

各组特征描述如下:

波塔

PIC16F877的PORTA共有6位(RA0~RA5),PORTA的引脚可以作为数据输入输出端口,系统复位后PORTA自动变为模拟输入状态,可以读取模拟输入信号。

端口B

PORTB共有8位(RB0~RB7),可以用来写入程序规划输入输出方向及状态。其中烧录时用到3个引脚,分别是第36脚(RB3/PGM)、第39脚(RB6/PGC)和第40脚(RB7/PGD)。

港口贸易中心

PORTC 共有 8 位(RC0~RC7),除了作为数据 I/O 外,还与一些有特殊功能的外围电路共享引脚,如 CCP(直流电机控制)、I2C、SPI(同步串行通信电路)、UART(异步串行传输电路)等。PORTD

PORTD 共有 8 位(RD0~RD7),可作为一般数据 I/O,与 PSP(Parallel Slave Port)并行传输区共享,当整体系统需要多台机器时,可通过并行传输区快速传输数据。

波特

PORTE共有3位(RE0~RE2),PORTE引脚8、9、10具有三种功能,除了基本的I/O功能外,还具备模拟输入功能。上述PORTD的并行传输区域设定所需的控制引脚如/RD、/WR、/CS等也属于PORTE引脚。

2.PIC开发工具介绍

第一个需要的编辑工具是MPLAB,安装完MPLAB之后还需要安装PICC编译器,因为MPLAB只能编译汇编语言,不能编译C语言。不过PICC是收费软件,网上有破解版,可以学习用。要把程序烧录到PIC,需要用到PC端软件,安装完之后打开状态如下图:

MPLAB 简介及 PIC 点亮的第一个流水灯:PIC16F87X 系列单片机引脚详解

错误原因是串口没有连接好,注意使用有些下载工具时要先连接目标板加电,再打开软件,另外下载完成后要先关闭软件再关闭实验板,否则会出现问题。

第一次使用MPLAB,需要进行设置,具体方法是:Project——选择Language Toolsuite…——选择HI-TECH路径。

3. 新建建筑

Project——ProjectWizard——Next——选择芯片型号——Next——ActiveToolsuit——HI-TECH——选择工具正确的完整路径——Next——工程名称及存放路径——Next——添加或Next——完成。

创建一个新的文本文件并将其保存为.c文件,然后就可以在这里编辑程序了。

(看来要把项目建立在MPLABMPLABIDECore目录下才可以起作用,如果建立在其他地方就会出错。)

4. 点亮第一个 LED

4.1 设置端口I/O状态

※ 复位后,I/O端口的寄存器默认为输入(输出高阻态)

※方向控制寄存器:TRISA~E

※数据寄存器:PORTA~E

为了实现 I/O 端口的功能,必须对端口进行初始化。方向控制寄存器和数据寄存器都是 8 位;方向控制寄存器中的每一位与数据寄存器中的每一位一一对应;对应关系如下图所示:

TRISn 复位值为 0xff

方向控制寄存器相应位设置为1为输入,0为输出;

端口控制寄存器相应位设置为1表示输出高电平,设置为0表示输出低电平。

※I/O口编程要点:

端口驱动能力

每个I/O端口允许最大灌电流25mA、拉电流20mA,可直接驱动LED、继电器等。由于各端口结构不同,RB端口提供的总灌电流和拉电流可达150mA、100mA;其他端口分别为80mA、50mA;

5个端口的驱动电流之和不超过200mA,TRISn始终控制PORTn的输入输出方向。

4.2 流光程序示例

#包括

#defineucharunsignedchar

#定义 UINTunSignedInt

__CONFIG(0x3B31);

无效延迟(uintx)

尤因塔,b;

对于(a = x; a> 0; a–)

对于(b=110;b>0;b–);

空主()

乌查里;

TRISD=0x00;

while(1)

PORTD=0x01;

对于(i=8;i>0;i–)

延迟(200);

端口D=端口D

单片机

电子工程系开展教师队伍建设活动,推进思政课程改革

2024-5-31 10:06:23

单片机

单片机原理及应用:从家用电器到工业控制的广泛应用

2024-5-31 11:05:49

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索