PIC单片机与PIC单片机C语言编程简介
对于计算机学院与电子学院相关的同学来说,单片机一定不是一个陌生的概念。在大学的学习生涯中,经常用于教学的是MCS-51系列单片机。其实,除了MCS-51单片机外,还有一类单片机——PIC单片机。
PIC单片机,英文名为Peripheral Interface Controller,翻译为“开发和控制外围设备用集成电路”,可以看作是一种高度集成化的小型计算机,拥有CPU、寄存器、内存单元、串口并口等一系列计算机运行时需要依赖的硬件设备。
二、PIC单片机与MCS-51单片机的区别
相较于51系列单片机,PIC单片机的区别主要有3点:
1.总线结构。51系列单片机采用的是经典的“冯诺依曼体系结构”,而PIC单片机则是采用“哈佛体系结构”。这里简单介绍一下两种体系结构的不同:冯诺依曼体系结构是单总线结构,即数据传输与指令传输共用一条总线;而哈佛体系结构则是双总线结构,即数据传输与指令传输分别使用一条总线。由于采用哈佛体系结构,所以PIC单片机的数据总线和指令总线位数(宽度)可能不同。
2.流水线结构。51系列单片机采用的是单流水线结构,即在一条指令完全执行完毕后才会执行。而PIC单片机则有二级流水结构,可以在一定程度上实现指令并发(虽然不如x86/64系列CPU或者ARM系列CPU)。
3.汇编指令。51系列单片机大约有一百多条汇编指令,基本包含了在程序运行中需要用到的绝大多数汇编指令。而PIC的汇编只有35条,功能较少(例如没有常用的乘除功能,需要使用循环加/减实现乘除功能)。但是PIC的指令执行较快,PIC单片机一个指令的执行只需一个指令周期,而51系列单片机则需要2至4个指令周期。
除了以上区别,在保密性方面,PIC单片机不如51系列单片机,PIC单片机比较不能抗干扰,也很容易被解密。
三、PIC单片机环境C语言编程简介(pic单片机c语言)
相较于其他编程语言,使用C语言开发PIC单片机程序有许多优点:
1.相较于汇编语言来说,使用C语言这类高级编程语言进行编程比较简单方便。使用汇编语言编程需要掌握一定的CPU运行知识,而且对寄存器、运算器、指令集等都需要有一定的了解,编程时也需要时刻思考汇编指令的运行流程。而使用C语言编程时则只需将精力放在程序运行逻辑即可。
2.相较于C++、Java等面向对象编程语言来说,C语言更加贴近底层运行逻辑,没有封装、继承等更加高级的语法,更加纯粹地关注程序的执行流程。
PIC单片机环境下的C语言编程与我们平时使用的C语言在语法上大致类似,不过仍有些许不同。下面对PIC单片机的C语言编程做简要介绍。
1.编译器配置。由于PIC单片机有独特的CPU架构,因此不同于传统的gcc或者vc++编译器进行编译,PIC单片机环境下的C语言有专门的C语言编译器PICC Compiler。
2.PIC单片机C语言同样支持常见的short、int、long、float等基本数据类型。不过需要注意的是,PIC单片机C语言的int类型为16位存储,long类型为32位存储,float类型为24位存储。
3.除了基本数据类型外,PIC单片机C语言也同样支持数组、结构体和联合体等复合数据类型。
4.PIC单片机C语言有一个特殊的数据寄存器bank,该寄存器由程序员管理,在定义变量时必须指定变量存储位置,若不指定则默认存储在bank0中。
若定义存储于其他bank寄存器的变量,则需要在定义变量时指定bank寄存器编号。例如:
bank1 unsigned char buffer[32];
bank2 int flag1, flag2;
5.PIC单片机C语言保留volatile关键字,用于告知某些特殊的值可能会发生改变。(pic单片机c语言)
6.使用PIC单片机C语言编程时,虽然也可调用标准库函数,不过由于PIC单片机性能有限,由于诸如scanf()/printf()等库函数的代码比较繁杂,因此在调用这些库函数时需要额外谨慎,可能会造成程序运行时间大幅度增加甚至宕机。
7.PIC单片机C语言支持C语言与汇编语言混合编程。若在C语言内插入汇编语言代码,则需要使用asm关键字标识。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。加微信领取资料
单片机C语言编程之:keil使用printf函数输出方法详解
在大学里学C语言的时候经常用到printf函数,用该函数打印输出计算结果非常的方便。但是在学了单片机之后,在keil环境中也想使用该函数打印输出该怎么办呢?下面来讲解一下keil中如何使用printf函数输出结果。
1. 关于头文件
C语言编程要包含头文件,所用到的函数或者变量在哪个头文件里就把该头文件包含进去,要使用printf函数就要知道它包含在哪个头文件中。printf函数在“stdio.h” 头文件中,所以该头文件要被包含。以下语句必不可少:
#include <stdio.h>
2. 输出实例
本例简单以求余为例介绍,求余即取余数,在C语言中有“%”来表示,其运算结果返回余数。如:
8%3,其运算结果为2,即8/3 = 2,余数为2。编程如下图所示:
3. 编译和调试
程序编好后,需要进行编译。编译完毕没有错误后,进入调试模式,如下图所示:
进入调试模式后,点击Peripherals→Serial,弹出对话框如下:
选中TI和RI。
4. 查看结果
点击view→Serial Windows→UART #1
5. 点击全速运行即可看见运行结果。
赶快试一下吧。
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。
公众号:micropoint8。网址:www.picmcu.com
大家有什么要讨论的欢迎留言评论啊。
相关问答
pic单片机 是什么内核?PIC单片机采用的是RISC(ReducedInstructionSetComputer)指令集架构,其内核主要基于哈佛结构,具有高性能、低功耗、易于编程等特点。PIC单片机内置了多种功...
如何读出 pic单片机的 程序?如果没有加密,可以用MPLAB用ICD2或者其他编程器读到汇编指令。但所有伪指令和宏指令都没有了,这个看起来很难懂得。如果已经加密了,拷出来也看不了,黑客一不...
pic单片机 如何开启连续的AD转换?在单片机上面开启一个连续转换的模式就可以在单片机上面开启一个连续转换的模式就可以
怎样才能成为 单片机 工程师?一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。如果想更好的从...
这个 pic编程 器怎么样烧写 pic 16f877?照着这个图可以做出PIC16F877的编程器的,这种是JDM编程器,要用IC-PROG烧写软件,网上可以免费下个。图是的是18引脚的PIC编程器,但PIC16877编程也同样只用到M...
pic单片机 pid控制算法参数整定?我这有51的#include#include"global_varible.h"/*********************************************...
汽车ecu的 编程语言 是什么?[最佳回答]汽车ecu是汽车电脑的总称。目前90%的汽车ecu编程语言基本都是用C语言写的,汽车ecu中也可能会用到一些汇编语言和一些C语言。目前汽车ecu的关键只有1...
pic单片机 中tris和port是什么意思,怎么理解,怎么用,是走能做输出又能做输入,屏蔽高四位是?PORT是端口I/O寄存器(如PORTA、PORTB…)写PORTx寄存器就是将数据值写入该端口锁存器。读PORTx寄存器就是读取I/O引脚上的数据值。TRIS是端口I/O控制寄存...
带以太网功能的 pic单片机 ,可以推荐一款不?个人建议,做以太网的话,不要使用PIC系列的。因为貌似现在只有PIC32系列的才带以太网模块,而PIC32是microchip推出和ARM架构竞争的(但基本拼不过ARM)。所以...
PIC 16 C 73 单片机 ?这款芯片没有在线编程的功能,要用编程器。你可以将你的程序编译成HEX码后,到电子市场买芯片的地方他们有编程器能帮你写进去。否则你得买或借编程器。PIC16C73...