PIC硬件编程技术详解
文章平均质量分 80
沈子恒
计算机视觉 自然语言处理 推荐系统 架构设计
展开
-
PIC单片机入门_框架与存储器
1.PIC16F877A单片机框架1.1 为何性能如此之高?PIC单片机之所以有很高的性能是因为其具备如下特性:内部为哈佛结构、寄存器文档、大多数单指令周期、指令流水线操作、长字型指令、指令数很少、指令实现的功能基本不重复1.2 什么是哈佛结构?冯诺依曼结构可以如下表示:从同一存储器空间取指令和取操作数据,限制了数据流量。哈佛结构可以原创 2016-11-05 11:14:10 · 3193 阅读 · 0 评论 -
PIC单片机入门_异步通讯模式详解
1.USART用于异步通讯详解1.1 USART的异步工作模式在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位、8 位或 9 位数据位和一位停止位 )。最常用的数据格式是 8 位。片内专用的 8 位波特率发生器可用于由振荡器产生标准的波特率频率。 USART 首先发送和接收最低有效位。 USART 的发送器和接收器在功能上是独立的, 但采用相同的数据原创 2016-11-12 13:32:11 · 3588 阅读 · 0 评论 -
PIC单片机入门_定时器/计数器TMR1详解与实例
1.前言前面介绍了定时器/计数器TMR0的基本概念和用途,下面介绍PIC单片机中另外一种定时器/计数器TMR1。2.TMR1的特性 TMR1为16位宽,附带一个3位的分频器,还自带一个低功耗低频的时基振荡器。TMR1的主要用途:类似于TMR0,用于定时和计数;自带一个时基振荡器,可记录年、月、日、时、分、秒,实现实时时钟RTC(real time clock);可以与原创 2016-11-10 11:17:11 · 19096 阅读 · 4 评论 -
PIC单片机精通_ADC左对齐与右对齐的数据读取问题
1.右对齐数据读取问题其转换结果可以读取的语句为: resualt=int(ADCH)*256+ADCL;右对齐的时候,10位ADC的结果表示方式为ADCH:ADCL,ADCH是10bit结果的高2位,ADCL是10bit结果的低8位,如果要将ADC的结果存储到一个int型的变量中,那就需要先将ADCH的结果左移8位,再和ADCL的相加,其原理如下图所示:左原创 2016-11-16 19:30:47 · 4776 阅读 · 0 评论 -
PIC单片机精通_串口通讯与串口调试实例
1.引子团队之所以称之为团队,就意味着多个人在一起共事。需要的是谦虚,谦逊,切勿言之偏偏。也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C、C++、Java、TCL进行过开发,至今不敢妄言哪种语言最好,只知道把事情做好,才是最成功的。耐心与细心,至关重要。最忌浮于事,遇到问题要仔细分析,千万不可抱怨。作为软件出身的傻大个,竟原创 2016-11-14 19:02:43 · 9513 阅读 · 0 评论 -
PIC单片机精通_串口通信模块C实现
1.串口通讯头/定义文件 usart.h#ifndef _SERIAL_H_#define _SERIAL_H_#define BAUD 9600 #define FOSC 9216000L#define NINE 0 /* Use 9bit communication? FALSE=8bit */#define DIVIDER ((int)(FOS原创 2016-11-15 14:33:03 · 7751 阅读 · 1 评论 -
PIC单片机入门_8位AD转换器
1.前言PIC16F876的模数转换器 (A/D) 模块有多达 8 个模拟输入通道。如果选择8位A/D 转换器,那么芯片可以将能将一个模拟输入信号转换成相应的 8 位数字信号。采样保持输出是转换器的输入,A/D 转换器采用逐次逼近法产生转换结果。通过软件设置,模拟参考电压可以选择为器件的正向电源电压 (VDD) 或 VREF 引脚上的电平。 A/D 转换器具备可在休眠状态下工作的独原创 2016-11-12 09:59:09 · 12275 阅读 · 1 评论 -
PIC单片机精通_A/D模数转换模块细节补充
1.PIC16F876a结果寄存器ADCON1状态寄存器的7bit位定义了输出结果是左对齐还是右对齐,比较迷茫,不懂在说什么,查阅了一下DataSheet,如下:从上面的示意图可以看出,结果寄存器的对齐方式是为了方便我们读取转换后的数据。示意图不是很详细,我们可以看一下AD的结果寄存器。AD的结果寄存器是16位宽的,但是有六位是不用的,所以实际上读取10位数据。原创 2016-11-15 16:51:53 · 4263 阅读 · 0 评论 -
PIC单片机精通_异步串口通讯实例与细节
1.前言PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析。这里注意集中在几个关键点上。串口中断服务程序应该注意什么?利用串口助手进行调试应该注意什么?串口助手接收不到数据的几种可能因素?2.实例分析PIC单片机与上位机握手程序如下:/*************************原创 2016-11-21 18:33:21 · 7245 阅读 · 2 评论 -
PIC单片机精通_A/D转换&异步串口通讯实例与详解
1.前言串口通信这个话题对于很多做机电一体化、机器人控制等系统协调的同学,根本不陌生。计算机软件(编程技术),近些年飞速发展。尤其是以机器学习、仿生控制、大数据为代表的AI行业。但是,软件及算法永远不会停留在“数学”这个圈圈里,我们需要把它推向工程,推向实践。这样作为软硬件交流的“握手协议”的重要性就不言自明。这一片主要介绍比较完整的串口通信代码,具体为PIC16F876a与上位机原创 2016-11-21 19:50:49 · 3125 阅读 · 0 评论 -
PIC单片机入门_同步/异步通信技术基础
1.前言通用同步 / 异步收发器 (Universal Synchronous/Asynchronous Receiver/Transmitter, USART) 模块是两个串行 I/O 模块之一 ( 另一个是 Synchronous Serial,SSP 模块 )。 USART也称为串行通讯接口(Serial Communication Interface,SCI)。 USART 可以配原创 2016-11-12 11:23:52 · 2574 阅读 · 0 评论 -
PIC单片机入门_中断系统详解
1.中断的基本概念当单片机正在执行程序时,出现了某些特殊状况,例如定时时间到、有键盘信号输入等,此时CPU须要暂时停止当前的程序,而转去执行处理这些事件的程序,待执行完这些特定的程序之后,再返回到原先的程序去执行,这就形成了一次“中断”。“中断”加强了单片机处理突发事件的能力,如果没有中断功能,对可能发生的特殊状况的处理就必须采用定时查询,这样就会浪费大量的CPU时间。因此,中断是原创 2016-11-10 17:05:31 · 19216 阅读 · 4 评论 -
PIC单片机入门_指令系统
1.前文回顾前面学习了PIC单片机的系统框架,也介绍了程序存储器、数据存储器的组织形式。这里需要补充一点的就是寻址方式,之前仅仅提到了立即数寻址、直接寻址。其实还有几个比较重要的寻址方式,PC相对寻址&间接寻址!1.1 PC相对寻址1.2 间接寻址用FSR寄存器作为8位地址指针;另外1位在STATUS中描述。例如:清除 0x20 to 0x7F的RA原创 2016-11-05 13:59:29 · 8371 阅读 · 0 评论 -
PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
1.七大汇编指令1.1 #INCLUDE语法: #include “文件名.*” 或 或无括号 或 引号示例: #INCLUDEp12f675.inc1.2 #DEFINE用于定义变量和分配初始值;用户友好的名字被分配给常数,寄存器 ,管脚名等. 使程序易读;例: #DEFINE MYCONSTANTH’5A’1.3 _ _CONFIG原创 2016-11-05 14:34:16 · 5715 阅读 · 1 评论 -
PIC单片机入门_C语言编程技术
1.为什么也是C语言?用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高等,因此C 语言编程在单片机系统设计中越来越广泛的运用。PIC 单片机的软件开发,同样可以用C 语言实现。Microchip 公司没有自行开发PIC单片机的C 语言编译器,但其他公司有开发众多支持PIC 单片机的C 语言编译器,常见的有Hitech、CCS、原创 2016-11-05 18:27:24 · 15861 阅读 · 0 评论 -
PIC单片机入门_PICC头文件介绍
PICC支持下的C程序代码中一定要包含pic.h头文件,该文件安装在HT-PIC\include目录下。它是很多头文件的集合,C编译器在pic.h中根据用户选择的芯片自动载入相应的其它头文件,例如用户选择的芯片是PIC16F877,则pic.h会把pic1687x.h载入;例如用户选择的芯片是PIC16F877A,则pic.h会把pic168xa.h载入。载入的头文件中其实是声明芯片的寄存器和一些原创 2016-11-05 19:04:28 · 9281 阅读 · 0 评论 -
PIC单片机入门_汇编/混编/C编比较
1.问题描述:对RAM中从30h开始的50个单元清零。2.汇编方法COUNT EQU 20H ;指定20H寄存器为循环变量FSR EQU 04H ;指定FSR为04HINDF EQU 00H ;指定INDF为00H MOVLW D’50原创 2016-11-05 20:30:14 · 4393 阅读 · 0 评论 -
PIC单片机入门_PICC的指向RAM的指针
问题:将30h,31h,32h单元中最大的数放入40h。利用指向RAM的指针进行编程如下:#include static volatile unsigned char add1 @0x30;static volatile unsigned char add2 @0x31;static volatile unsigned char add3 @0x32;s原创 2016-11-05 20:58:06 · 2054 阅读 · 0 评论 -
PIC单片机入门_输入输出端口详解
1.引言:PIC单片机引脚图:在PIC16F87X 单片机中,28引脚型号的单片机有3 个I/O端口,分别是RA、RB和RC;40引脚型号单片机有5个 I/O端口,分别是RA、RB、RC、RD和RE。其中RA有6条口线,RE有3条口线,其余都有 8条口线。PIC16F87X端口口线既可作普通I/O引脚,又可作某些部件或外围模块的外接引脚,比如端口引脚RC.4既可原创 2016-11-10 09:33:53 · 26189 阅读 · 2 评论 -
PIC单片机入门_定时器/计数器TMR0详解与实例
1.前言:PIC 系列单片机内部配备有数量不等的定时器/计数器模块:例如PIC17CX系列和PIC18CX系列都都配置了4个定时器/计数器模块;而PIC16F87X系列都配置了3个定时器/计数器模块,分别记为TMR0、TMR1和TMR2。TMR0、TMR1和TMR2在电路上均不相同,而且用途也各有所异,但是三者也存在许多共同之处。这里主要介绍的是TMR0,TMRl和TMR2将在后面介绍原创 2016-11-10 10:36:08 · 22299 阅读 · 2 评论 -
PIC单片机入门_定时器TMR2详解与实例
1.前言这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为“定时器TMR2”。 2.TMR2的特性TMR2为8位宽,附带二个4位宽的分频器:一个“预分频器”和一个“后分频器”,一个可编程的8位周期寄存器PR2。其主要用途:1. 可以用作时间定时器,但是不能作为计数器;2. 可以为同步串行端口原创 2016-11-10 14:51:01 · 9014 阅读 · 0 评论 -
串行通信的波特率高速和低速区别
注意,这里说的高速、低速不是通常说的速度快就是高速,速度慢就是低速。这里所谓的高速、低速,指的是同一个波特率因子下的波特率的快慢。得看一下式子:高速:波特率=fosc/16*(x+1) (fosc代表外部晶振)低速:波特率=fosc/64*(x+1) 从上面的公式可以看到,对同一个X,显然用“fosc/16*(x+1) ”计算得到的波特率比用“fosc/64*(x+1)原创 2016-12-18 20:04:16 · 7056 阅读 · 0 评论