返回首页

pic单片机开发板(pic单片机编程)

来源:www.haichao.net  时间:2022-12-15 19:45   点击:199  编辑:admin   手机版

1. pic单片机编程

PIC单片机可以用PLC,也可以用C语言编程。应该说用C语言来开发更多。在实际应用中,用C编程有极大的优点。能否用C语言来开发,就看有否相应有C编译器,Microchip公司的所有单片机都有相应的C编译器,有些要收费,但网站上也可以下载到破解版的。建议都用C编程,可参阅"PIC16系列单片机C程序设计与PROTEUS仿真"一书,北航出的。

谢谢!

2. pic单片机编程软件有哪些

目前能找到的20脚的有如下的26个型号:

PIC24F32KA301

PIC24F16KA301

PIC24F16KA101

PIC18F14K22

PIC18F14K50

PIC16F1829

PIC16F1509

dsPIC33FJ12MC201

PIC24F08KA101

PIC18F13K22

PIC18F13K50

PIC16F685

PIC16F689

PIC16F690

PIC16F1508

PIC16F721

PIC16F1828

PIC24F04KA201

PIC16F677

PIC16F687

PIC16F785

PIC16HV785

PIC16F1507

PIC16F720

PIC16F639

PIC16F631

3. pic单片机编程入门视频教程

KEIL不支持这两种芯片。

PIC用的工具是MPLAB

AVR用的是WINAVR,ICCAVR等

以上工具都支持C语言

4. pic单片机编程实例

汇编的有《PIC单片机原理及应用》、《PIC单片机控制技术》,李荣正编著 C的有《PIC16F87X单片机实用软件与接口技术——C语言及其应用》,刘和平编著、《PIC单片机C语言教程》,张明峰编著 《PIC系列单片机C语言编程与应用实例》。 这些我都看过了,既有基础的规则介绍又有正确的实例代码,对你应该很有帮助

5. pic单片机编程论坛

找到你用的编程软件的include文件夹,在哪里应该有很多的.h文件。

将你要用的文件粘到哪里,就可以掉用了。

6. pic单片机编程软件下载

android project是一款功能强大的pic单片机编程的软件,android project这款软件可快速建立工程,配置工程,烧写程序,需要根据用户所选择的pic单片机型号来选择驱动芯片,软件使用内置编辑器创建和编辑源代码,汇编,编译和链接源代码等等。

7. pic单片机编程软件

keil不能给pic单片机编程。pic有专用的编译软件,mplab和c语言编译软件picc。

1、MPLABX目前还不是很成熟,如果用来做项目的话,建议用MPLAB8.86版本即可,到MICROCHIP额官网下载即可。

2、一般不会无缘无故的死机的,可能是你PC上某个软件和MPLAB有冲突导致的,我常年使用这个软件,没见啥软件死机。

3、ICD3下程序不成功,可能是你用的还不熟练,有些地方没注意造成的,建议仔细检查那个5个引脚的连接以及其上各种电气参数的要求,如果吃不准,就将这个5个引脚上的所有外加电路全部去掉,只需要ICD3额5根线直接连到芯片5个脚即可。

4、在MPLAB中设置的芯片的型号必须和实际目标板的芯片型号一致。

5、请注意给目标板芯片供电,如果目标板消耗电流不大,则使用ICD3直接给目标板供电即可。

6、在调试菜单模式下请务必关闭看门狗、低压检测、代码保护等配置字,在编程菜单模式下,则无所谓。

7、个人认为MPLAB当前是最好的PIC集成开发环境了,由官方支持,资料也比较齐全,各项调试功能齐全,最大的缺陷就是编辑功能相对那些专用文本编辑软件来说稍微弱一点,你当前最大的问题应该是对PIC和PIC的集成开发环境不熟悉,如果熟悉的话,不会有啥问题的。

8. pic单片机编程接口

简单地说,1.传感器输出的电压信号,如果很弱,首先要放大,如果变化范围满足精度要求,可以不用放大。

2.传感器电压信号连接单片机的ADC,编程采集AD信号量。

3.采集的AD信号量以串行通信传送到PC机中,PC机用VC或CB或VB或Delphin或JAVA编串行通信程序,接收单片机传送来的串行数据。

4.简单具体的实现方法是,采集下位机采用Arduino工具来开发,选用Arduino UNO板,用C语言开发。

上位机PC侧用CB语言开发,用VB更简单,都可以用MACOMM32通信组件。实际上,还要考虑很多其它因素。

是什么传感器?

传感器输出范围多少?

需要放大吗?

精度要求多少?

采样时间多少?

实时要求是多少?

通信速率要求多少才能满足实时性?

选用哪个单片机?

用内部有ADC的单片机吗?

精度够不够?

选用外部ADC吗?

笔记本没有串口怎么办?

用USB连接透传串口数据?

需要无线传输吗?

wifi或蓝牙?

LORA通信?

NBIOT通信?

需要考虑抗干扰吗?

需要考虑低功耗吗?

...你的需求太不明确了!

9. pic单片机编程电压

  不同厂商、不同系列的单片机,下载程序的方法也不一样。   STC的单片机下载程序最简单,把单片机的串口两根线和地线连接到电脑的串口上,运行STCISP软件可以下载程序。   Atmel的单片机,早期一般是并行下载,比如AT89C系列,使用的IO口很多,并且可能还需要12V的编程电压,一般使用专业的编程器来下载程序。新的产品一般是使用一种10针的ISP接口下载,比如AT89S系列、Atmega系列等等,ISP下载也需要使用专门的装置。   PIC单片机也是使用专业的编程器来下载程序。   STM8、STM32可以使用串口下载,或者J-Link、ST-Link等专业下载工具来编程。

10. pic单片机编程语言

单片机编程用c语言开发,因为单片机需要非常底层开发语言,用c语言开发效率非常高,而且c语言可以非常灵活,对于控制硬件非常合适。

c语言最大的好处是可以利用指针控制内存中的各种变量,所以对于单片机开发非常合适。

当然如果是带操作系统的硬件也可以用cpp开发 。

11. pic单片机编程入门

一、PIC汇编语言指令格式

  PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:

  标号 操作码助记符 操作数1,操作数2;注释

  指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

  1标号 与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

  书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。

  2操作码助记符 该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

  3操作数 由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。

  指令的操作数项也是可选项

  PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。

  4注释 用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。

  二、清零指令(共4条)

  1寄存器清零指令

  实例:CLRW;寄存器W被清零

  说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。

  2?看门狗定时器清零指令。

  实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

  说明:WDT是英语Watchdog Timer的缩写字母。CLR见上述说明。注意该两条指令无操作数。

  3寄存器f清零指令。指令格式:CLRF f

  实例:CLRF TMRO;对TMRO清零

  说明:在PIC系列8位单片机中,常用符号F(或f)代表片内的各种寄程器和F的序号地址。F取值按PIC系列不同型号而不同,一般为Ox00~Ox1F/7F/FF。TMRO代表定时器/计数器TMRO,所以CLRF对寄程器清零,采用了直接寻址方式直接给出要访问的寄存器TMRO。

  4位清零指令。指令格式 BCF f,b

  实例:BCF REG1,2;把寄存器REG1的D2位清零

  说明:BCF是英语Bit Clear F的缩写。指令格式中的F,同上说明;符号b是表示PIC片内某个8位数据寄存器F的位号(或位地址),所以b的取值为0~7或D0~D7。实例中REG是Register的缩写。实例中的2代表指令格式中的b=2即寄存器REG1的D2位。

  通过上述四条清零指令格式和实例,可以说明,学习PIC系列8位单片机的指令时应首先了解指令的助记符意义(功能),再有就是它的表达方式。初学者没有必要死记指令,重要是理解和实践。

  三、面向字节、常数与控制操作的指令

  1传送立即数至工作寄存器W指令

  指令格式:MOVLW k;k表示常数、立即数和标号

  说明:MOVLW是Move Literal to w的缩写

  实例:MOVL 0x1E;常数30送W

  2I/O口控制寄存器TRIS设置指令

  指令格式;TRIS f

  说明;TRIS f是Load TRIS Register的缩写。其功能是把工作寄存器W的内容送入I/O口控制寄存器f。当W=0时,置对应I/O口为输出;W=1,置I/O口为输入。

  实例:MOVLW 0x00 ;把00H送入W

  TRIS RA ;置PIC RA口为输出

  MOVLW 0xFF ;把FFH送入W

  TRIS RB ;置PIC RB口为输入

  说明:这是PIC汇编语言中常用的几条指令,即设置某个I/O口(这里是RA口和RB口)为输入或输出的语句。可见,识读指令时,一应充分理解语句格式的功能,二应前后联系阅读。

  3?W寄存器内容送寄存器f(W内容保持不变)指令

  指令格式:MOVWF f

  说明:MOVWF是Move W to f的缩写

  实例:MOVLW 0x0B;送0BH送W

  MOVWF 6 ;送W内容到RB口

  说明:第一条指令0x0B(常数11)送工作寄存器W,第二条指令,把W内容常数11送到寄存器F6中,查表F6即为RB口,所以PORT_B(B口)=0BH=D11

  4寄存器f传送指令

  指令格式:MOVF f,d

  说明:MOVF是Move f的缩写。F代表PIC中的某个寄存器。指令中的d规定:d=0时,f内容送W;d=1时,f内容送寄存器。

  实例:MOVF 6,0 ;RB口内容送W

  MOVWF 8  ;RB口内容送f8

  说明:第一条指令中的6代表寄存器f=6,查寄存器表f=6为RB口;0代表d=0,代表选择的目标为寄存器W。第二条指令中的8代表寄存器f=8。所以两条指令结果是把RB口的内容送f8。至于f8内容是多少?还应在汇编语言开始时附加指令,这里从略。

  5空操作指令

  指令格式:NOP

  说明:NOP是英语No Operation的缩写。NOP无操作数,所以称为空操作。执行NOP指令只使程序计数器PC加1,所以占用一个机器周期。

  实例:MOVLW 0xOF   ;送OFH到W

  MOVWF PORT_B ;W内容写入B口

  NOP      ;空操作

  MOVF PORT_B,W ;读操作

  说明:该三条指令是一种对I/O口的B口连续操作的实例,其目的达到写入B口的内容要读出时,应保证写、读之间有个稳定时间,因此加入了空操作指令NOP。

  6无条件跳转指令

  指令格式:GOTO k

  说明:执行该条指令时,将指令转移到指定的地址(跳转)。指令中的k,常与程序中的标号联系起来。

  实例:见第9条指令中

  7寄存器内容减1,结果为零的间跳指令

  指令格式:DECFSZ f,d

  说明:DECFSZ是英语Decrement f,Skip of not 0的缩写。符号f,d代表的意义,前述已作说明。该条指令是指寄存器的内容减1存入W(d=0)或f(d=1)中。若指令执行结果减1不为零,指令顺序执行;为零时,就间跳下一条指令后再执行(等效顺序执行一条空指令NOP),实际指令中,当d=1时,该项常被略去。

  8寄存器内容加1,结果为零间跳指令

  指令格式:INCFSZ f,d

  说明:INCFSZ是英语Increment f,Skip of 0的缩写。该条指令与上一条(7)指令差别仅在于“1”上,即执行这条指令时,寄存器f内容加1,若结果不为零,则指令顺序执行;为零则指令间跳执行。执行这条指令的其它逻辑关系与上条相同。

  9子程序返回指令

  指令格式:RETLW k

  说明:RETLW是Return Literal to W的缩写。该指令代表子程序返回,返回前先把8位立即数送W。

  实例:PIC某个汇编语言的延时子程序(摘要):

  (1)BELY MOVLW 0xC5 ;送延时常数0C5H入W

  (2)   MOVWF COUNT2;0C5H送入计数器2

  (3)   CLRF COUNT1;对计数器1清零

  (4)LOOP INCFSZ COUNT1;计数器1加1计数器1加

  1结果不为零,跳转循环

  (5)   GOTO LOOP ;

  (6)   DECTSZ CPUNT2 ;计数2减1计数器2减1

  结果不为零,跳转循环重

  复执行第4条指令

  (7)   GOTO LOOP ;

  (8)   RETLW 0   ;子程序执行结束返回

  说明:程序中的注释已分别对每条指令的功能作了说明,补充说明1?当执行第(4)条加1指令结果为零时,就间跳转到执行第(6)条指令。2?当执行第(6)条减1指令结果为零时,就间跳转到第(8)条子程序返回,整个延时指令才算完成。3?计数器1或2代表PIC中某个寄存器,该寄存器由程序开始的伪指令赋值决定(关于伪指令今后将作专门介绍)。

  本文关于指令的注释将与前述指令中的略有不同。前述指令注释时是对指令具体完成的功能给以说明,这种注释方法对初学者确实易于接受和理解,但是实际应用中的PIC产品汇编语言的注释通常是以程序要做什么(或指令的作用)而不是说指令的直接功能。鉴于上述原因,下述的指令注释将改变过去的注释方法,用程序应起的作用作注释。

  10寄程器半字节交换指令

  指令格式:SWAPF f,d

  说明:SWAPF是Swap f的合写。符号f、d的意义与前述的相同。该条指令的功能是寄存器f的高4位与低4位交换,即指令执行前,若寄存器f的8位状态为D7、D6、D5、D4、D3、D2、D1、D0,执行后的8位状态变为D3、D2、D1、D0、D7、D6、D5、D4,其结果存入W(d=0)或f(d=1)中。

  实例:中断现场保护是中断技术中重要部分。由于PIC16C××指令系统中没有进栈PUSH和出栈POP指令,所以只能用其它指令来实现。因为在主程序中常常用到工作寄存器W和状态寄存器STATUS,所以中断现场保护常要保护寄存器W和STATUS。

  下面是对PIC16C7×系列芯片中断现场保护的实例程序。

  MOVWF W_TEMP   ;将W内容存入到临时寄存器

  W_TEMP中

  SWAPF STATUS,W  ;交换STATUS与W内容

  MOVWF STATUS_TEMP ;将STATUS的内容存入到临

  …           时寄存器STATUS_TEMP中

  中断服务程序

  …

  SWAPF STATUS_TEMP,W;交换STATUS_TEMP与W

  的内容

  MOVWF STATUS    ;STATUS复原成原来的状态

  SWAPF W_TEMP,F   ;交换内容

  SWAPF W_TEMP,W  ;W复原成原来的状态

  说明:上述程序中各条指令的注释基本上都是以程序应达到的目的而注释的,对每条指令的功能几乎未涉及。这是初学者应特别注意的。

  11子程序调用指令(Subroutine Call)

  指令格式:CALL k;k为立即地址

  说明:子程序调用,不同型号芯片的实现方法不尽相同,其共同点是首先将返回地址((PC)+1)压栈保护,再转入所调用的子程序入口地址执行(与MCS-51指令功能相似)。

  指令格式模式:HERE CALL DELAY;调用延时子程序

  …

  DELAY MOVLW 0x80 ;延时子程序

  RETLW 0

  说明:调用指令执行前,PC=地址HERE

  调用指令执行后,PC=地址DELAY(标号),堆栈指针TOS=HERE+1(返回地址)。

  实例:见下条指令的实例

  12寄存器内容取反指令

  指令格式:COMF f,d

  说明:COMF是Complement f的缩写。其中d=1时,操作(f)→f;d=0时,操作(f)→w。

  功能:寄存器f内容取反后送入W(d=0)或f自身(d=1)。

  实例:  ORG   0x1FF

  GOTO MAIN

  ORG   0

  DELAY …

  MAIN MOVLW 0 ;主程序开始

  TRTS 5 ;设置RA口为输出

  BCF 5,0  ;置RA口0位为0

  LOOP   CALL DELAY;闪动延时

  COMF 5? ;RA口求反(亮—灭—

  亮……控制)

  GOTO LOOP ;循环

  …

  说明:上述指令是一种PIC16C54 LED发光控制实验部分程序。其中延时子程序DELY未列出,但不影响本条指令的识读。程序中的主程序开始的三条指令,均已介绍过,紧跟着的CALL指令是调用执行子程序,其入口地址为标号DELAY。子程序执行结束后,又执行COMF 5的LED发光亮—灭…亮—灭……控制指令。后面一条GOTO LOOP指令是达到LED循环点亮目的。

  13面向位的操作指令(共4条,PIC高级产品多增一条)

  该类指令除一条位清零外,另有一条寄存器f位b的置1指令和另外两条位跳步指令(PIC高级产品多增一条f的b位触发转换指令)。

  (1)位置1指令。指令格式 BSF f,b

  说明:BSF是Bit Set f的缩写。F和b的意义与前述相同,该条指令的功能是将寄存器f的b位置1。

  (2)位测试、为零间跳指令。指令格式 BTFSC f,b

  说明:BTFSC是Bit Test,Skip if Clear的缩写。指令功能是测试寄存器f位“b”,如为0,跳过下一条指令;为1顺序执行,即当f(b)=0时,就不执行当前指令而执行下一条指令(间跳),即用一条空指令NOP代替它,所以该条指令占用2个指令周期。

  (3)位测试、为1间跳指令。指令格式 BTFSS f,b

  说明:BTFSS是Bit Test,Skip if Set的缩写。其指令的逻辑功能与上条相反,位测试f(b)=1就间跳执行,f(b)=0顺序执行。

顶一下
(0)
0%
踩一下
(0)
0%