pic单片机怎么在MPLAB设定初始EEPROM
单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:
1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。
2、C是一门语言,由对应平台的编译器编译成对应平台汇编的程序,各平台的汇编不一样,当然编译器也不一样 DOS上的TC2 TC3 WINDOWS上的VC 8051的C51都有自已的编译器 。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。
3、单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。
C51本质就是C,是为在单片机上使用C而出来的,如果C不牢固,还是多掌握一点C再学C51,不过新增的知识也不少,而且基本上跟C无关。
4、C只是一种高级语言。它除具有一般高级语言的功能特性外,它可以很好的操作底层的硬件接口。在C语言的基础上,如果你把一些单片机的端口或特殊功能寄存器加于定义,使之方便于在 写语句的时候,直接直观的编写。这样就差不多是单片机C语言。
C语言的特性差不多都可以用于单片机C语言,因为它们的编译机理都是一样的。
扩展资料:
C语言:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
单片机的C语言:
单片机软件设计使用C语言作为编程开发软件,采用模块化的程序结构,设计了按键模块程序、RFID模块程序、日历时钟模块程序、GPRS模块程序、显示存储模块程序等,并编写系统主程序,将五个程序模块组合在一起,实现单片机控制系统的整体功能。
51单片机支持三种高级语言,即PL/M,C和BASIC。C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是目前使用较广的单片机编程语言。
单片机的C语言采用C51编译器(简称C51)。有C51产生的目标代码短,运行速度高,所需存储空间小,符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言或PL/M51语言目标代码混合使用
参考资料:
C语言-百度百科
单片机C语言-百度百科
单片机编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。
1.单片机的汇编语言
汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响川可语言效率的特殊规定。例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。
2.单片机的C语言
单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算谏磨快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中栗用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点:
对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。程序有规范的结构,可分为不同的函数。这种方式可便程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。
编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。
功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。
单片机C语言作为一种非常方便的语言而得到广泛的支持,(语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片翻U均不同较快地移植过来。
用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。
拓展资料
单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。
举例:
ORG 0x2100 ;这是PIC16F628A的EEPROM虚拟地址,当然
;不同的芯片是不同的
DE 0x00, 0x01, 0x02, 0x03 ;初始化EEPROM数据
picc编译器
EEPROM 数据
有些PIC单片机支持用外部编程器对内部的EEPROM进行编程。
__EEPROM_DATA()可以将用于初始化的数据放入HEX文件中,如:
__EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7)
可将0-7八个数放入HEX文件中,在用外部的编程器进行编程时将 这八个数写入PIC单片机中。
__EEPROM_DATA不是用于运行时写入EEPROM数据的,在运行时请用 EEPROM_READ(), EEPROM_WRITE()。
//初始化EEPROM的数据,它们是8个一组合(如果不够8个将它补全8个字节,),
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0xF2,0x7F,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0xF2,0x7F,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
__EEPROM_DATA(0x00,0x00,0x00,0x00,0x4F,0xFE,0x03,0x00);
__EEPROM_DATA(0xDD,0xDD,0x13,0x00,0xE0,0x4C,0x00,0x00);
__EEPROM_DATA(0x68,0x5B,0x00,0x00,0x18,0x60,0x00,0x00);
__EEPROM_DATA(0x55,0x5A,0xBE,0xFF,0x65,0xC8,0x21,0x00);
__EEPROM_DATA(0x03,0x50,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF);
__EEPROM_DATA(0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0x00,0xFF);
__EEPROM_DATA(0x02,0xFF,0xC5,0xFF,0x06,0xFF,0x01,0xFF);
__EEPROM_DATA(0x0F,0xFF,0x14,0xFF,0xff,0xff,0xff,0xff);
如果你用C语言编程的话,可以用如下的程序:
__EEPROM_DATA(0x1e,0x50,0x01,0x1d,0x01,0xb8,0x18,0xa6);
注意,前面是双下划线。它的意思是从EEPROM的单元0=7分别用0x1e,0x50,0x01,0x1d,0x01,0xb8,0x18,0xa6填充。如果还有数据,接着写这个语句。
这个可看北航的《PIC16系列单片机C程序设计与PROTEUS仿真》一书的P62。
你是不是想烧写EEPROM的初始值上去?在烧写程序时先选择View-EEPORM.就可以修改烧进去的值了。
如何用单片机实现正反转控制?
1、首先在【程序段1】中建立一个互锁加自锁的回路,I0.0是正转启动。I0.1是停止,M0.0是正转启动线圈,M0.1是反转启动线圈。2、然后在【程序段2】中建立一个反转的互锁加自锁的回路,I0.1是反转启动信号。I0.1是停止,M0.0是正转启动线圈,M0.1是反转启动线圈。3、接着在【程序段3...
单片机c语言中m=m|0x01啥意思
按位或,0与任何数或都是都是任何数,1与任何数或都是1,m = m | 0x01的意思就是给m的第零位置1,其他位不变。
单片机mq-2连接方式
请参考以下方式:①基于温湿度和烟雾传感器的火灾检测系统设计,顾名思义,需要温湿度传感器——选用DHT11,烟雾传感器——选用MQ-2,核心为STM32单片机。M32F103ZET6 STM32F103ZET6是一种嵌入式—微控制器的集成电路(IC),是由ST(STMicroelectronics,意法半导体)公司开发的 STM32 F1系列的其中一种...
单片机各个中断的入口地址和各个中断在interrupt中m的值
m=1 外部中断INT1,m=2 定时器T1,m=3 串行口UART,m=4 对于STC单片机,又增加了多个中断源,m参数就按中断顺序号来确定。
怎么利用51单片机计时器计时500m in?
步骤如下:1、每隔50ms定时器中断溢出,计数+1。2、当计数达到10次时,便产生了500ms的定时啦,然后,你自己根据你的设计,需要让单片机做什么就自己写些什么(比如让某个io口取反)3、计数达到10次后,不要忘了初始化计数。最后给点建议:1、要让定时器计数50ms,只能在定时器的工作方式1下进行...
怎么把.txt文件写入到m430g2553单片机中啊,新手,求指导,详细,急!急...
回答:ls时候的是啥啊,那个软件是给stc单片机烧程序的。 lz的txt文件时什么内容?写入单片机是为了什么
单片机ORG00HAJMPM3102ORG03HAJMPLPORG08H的意思?
00H代表复位向量,指向的是从00H地址开始的指令,这些指令通常用于系统初始化的子程序。03H是指外部中断0的向量,从03H地址开始的指令会跳转到标号LP,这通常是外部中断0的中断服务例程。
怎么在单片机中时钟延时两秒
可以根据单片机的时钟和指令执行时间延时 void delay (int m){ while(m--){_NOP();} } 也可以用单片机的定时器延时,设置timer的时钟源,设置溢出计数,然后再中断里处理。如果延迟2秒,最好用定时中断。
关于用51单片机做一个电子时钟的问题
秒加一 if(s>59){s=0;m++;}\/\/如果达到一分,分加一 if(m>59){m=0;h++;}\/\/如果达到一小时,小时加一 if(h>23){h=0;}\/\/如果达到24小时,小时清零 } \/***\/
什么是单片机
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I\/O口和中断系统、定时器\/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A\/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机介绍 单片机也...
东方战奥复: #include <p16f877A.inc>;****************************************;实现逐个来点亮8个LED灯;***************************************** add equ 20h delay1 equ 02h delay2 equ 0ffh delay3 equ 0ffh K0 equ 21H K1 equ 22H K2 equ 23H org 00h main nop...
贞丰县13224554098: PIC单片机如何在线调试 - ?
东方战奥复: 要有在线调试器,如PICKIT3,ICD2,ICD3等.加上你的硬件,适当的联线. 这里只能讲这个大概,详细见北航《PIC16系列单片机C程序设计与PROTEUS仿真》一书.
贞丰县13224554098: MPLAB IDE v7.50编译C程序,用的单片机是PIC 16F877 ,怎样设置,请名位大虾赐教!!谢谢, - ?
东方战奥复: 最简单的你 点project》project Wizard 选下一步 选你的芯片16F877 下一步 Active toolsuite 选你的编译器 ccsc 就是C语言编译器的一种)主要下面如果显示红X 就表示不能用或没有安装或路径不对
贞丰县13224554098: pic的配置位是什么意思? - ?
东方战奥复: 设置PIC单片机运行时的一些状态信息,例如晶体类型(XT,HS,LP),是否使用看门狗,低电平复位等相关的信息.配置位只能是在烧写时改好,程序运行时就不能更改了.
贞丰县13224554098: MPLAB X IDE怎么创建汇编工程 - ?
东方战奥复: 打开MPLAB IDE软件,然后按图示操作 点下一步 选择PIC单片机器件型号 选择编译器,如果安装了编译器
贞丰县13224554098: 怎样使用PIC单片机的内部振荡方式 - ?
东方战奥复: 如果用某些PIC专用的烧录工具也可以再烧录界面来设置.看来你还没学好PIC单片机.因为内部振荡器的设置时在配置位里设置的.学PIC的单片机首先就必须要学CONFIG配置位等内部寄存器.下面是各种设置配置位的方法:1:在汇编程序里...
贞丰县13224554098: PIC单片机 写了最简单的程序,调试的时候正常,但是程序烧录进去之后,运行不正常. - ?
东方战奥复: 改成:DELAYMS(2000); RC5 = 1; DELAYMS(2000); RC5 = 0; 养成好的习惯 !!
贞丰县13224554098: 手头上就一个PM3和一块PIC单片机.如何用PM3烧录PIC单片机呢.具体怎么连线.本人菜鸟,越具体越好. - ?
东方战奥复: 我想你应该有一个可用于仿真调试的,含有PIC单片机的硬件线路板吧?同时这个板还得有仿真烧写座,通过PM3相应的连接线与线路板相连.如果你用PM3进行调试,则在MPLAB IDE的界面中的DEBUGGER中选择PM3为调试工具.如果想只进行烧写(脱机运行用),在PROGRAMMER菜单中选择PM3做为烧写器.
贞丰县13224554098: PIC单片机config配置问题 - ?
东方战奥复: 当你不熟悉的时候,最好在MPLAB的界面配置 Cofigure>>Configuration Bits..>>去掉"Configuration Bits set in code"前面的勾>>查看器件手册上的说明,根据你的要求,选择各项的指标,如一般默认是开看门狗的,你如果不要的话在配置中关掉,PIC16F1823是有两个配置寄存器的,如果在代码里面做配置的话,需要使用 __CONFIG(1,0Xuuuu);//uuuu根据你的配置来定 __CONFIG(2,0Xuuuu);
贞丰县13224554098: mplab ide 是否必须连接上pic以后才能使用 - ?
东方战奥复: 你是说MPLAB这个软件么?如果只是编译PIC程序或者软件仿真PIC程序,是不需要连接PIC单片机的.如果是做硬件仿真,那就必须把电脑连接上PIC专用仿真器再连接PIC,然后MPLAB才能对其进行硬件仿真.