怎么在51单片机中读取文件 如何在Keil C51使用fopen函数 也就是如何在C51中编写 能打开文件程序
单片机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,但是目前在中国大陆仍多沿用“单片机”的称呼。
其次,用单片机来读取文件是需要文件系统(比如FAT)来支持的,你不能“想当然”的认为计算机上的标准C函数中有文件打开函数,所以单片机中也有。更何况是51单片机!
像51单片机一般直接使用二进制存储,这样最简单快捷,文件存储反而成本高,速度慢,不适合使用。所以你可以用ROM来保存这个文本文件的内容,然后单片机读取ROM。
用普通的51单片机有点强人所难了。
按照你所说的,必须具备:
1.可以存放txt文件的空间,用51单片机放不了多少东西。极可能要外扩存储芯片或设备
2.需要在液晶显示,必须有字符集(这个倒好找)。
3.如何放入?如果按常规方法,就是用USB大容量存储设备方式了。这样需要USB接口。而且要用到文件系统,用FAT的比较多。
4.如何显示?这个倒简单,txt文件直接从头读取到尾,然后转换为字符(中文是双字节,英文是单字节)。至于怎么读靠自己编程了。
所以,如果做这个的话,硬件要有:
USB接口,足够的存储空间,液晶显示功能
个人能力上需要:
1.USB编程能力
2.液晶驱动编程能力
3.FAT文件系统的了解(可使用现成的东东,如ELM的FAT,但也要了解。)
好像51单片机无法放入TXT文件啊。我一同学也弄了个电子书,但他是把英文文章放在程序中的。想弄个你说的那样的功能的话估计要弄个片外存储器。然后读取数据的方式。但你TXT文件放入外存储器时还是需要转换的。
GB2312字符集在C51中应该有库文件吧。弄个可显示GB2312字符的显示器应该就可以了。
要在单片机中读取文件首先要有文件系统,现在一般在低端单片机中使用fat文件系统,文件系统中自带文件读写的函数,直接调用就可以了。
怎么放进去的怎么读出来,汇编的话就是查表了,还能怎么样。
51单片机系统读外部ROM由什么信号选通?在外部ROM中取数只能采用什么方式...
由PSEN来控制外部ROM片选信号,该信号是硬件自动产生的。当超过内部的地址范围回自动寻址外部ROM
如何读出51单片机片内ROM中的程序
呵呵,要干嘛,抄芯片啊,不行,加过密的,除非找专业人员破解。。可以保证cobychina的说法错误,直接去读要么是0xff,要么就是乱码,想读到单片机加密的程序,只能去解密单片机。
51单片机在读取数据前为什么要置高?
电路中存在的一个普遍的现象:高电平很容易被低电平拉低,而低电平一般不可能被高电平拉高。所以在读数据之前将单片机IO口拉高才不会影响原来数据线上的数据!
51单片机的总线是什么,分别有什么用途呢?
1、数据总线 51 单片机的数据总线为P0 口,P0 口为双向数据通道,CPU 从P0 口送出和读回数据。2、地址总线 51 系列单片机的地址总线为16 位。为了节约芯片引脚,采用P0 口复用方式,除了作为数据总线外,在ALE 信号时序匹配下,通过外置的数据锁存器,在总线访问前半周期从P0口送出低8位地址,后...
51单片机指令的机器代码在软件中的表示
51单片机指令的机器代码在软件中通常以十六进制数的形式表示。详细 单片机(Microcontroller Unit, MCU)是一种集成了处理器、内存和各种外设接口的微型计算机系统。51单片机是指基于Intel 8051架构的单片机,它是一种8位单片机,广泛应用于各种嵌入式系统中。在51单片机中,指令是控制单片机执行特定操作的基本...
51单片机 ,读写stc 内部EEPROM 中的数据,所谓 IAP 方法是怎么个原理...
以下是我曾经做过的东东中的有关EEPROM读写的一段程序,供参考。;---写参数到EEROM--- PARAPUT:MOV DPTR,#0000H LCALL IAP_Erase MOV DPTR,#0000H MOV R0,#60H MOV R1,#16 PARAPUT1:MOV A,@R0 LCALL IAP_WRITE INC R0 INC DPTR DJNZ R1,PARAPUT1 RET ;---从EEROM中读出参数--- ...
怎样用51单片机读写片内EEPROM
看你用那种51的单片机了,STC系列的单片机它的数据手册上就有读写EEPROM的样例程序,去宏晶公司的主页找去。其他公司的51单片机,因厂商设置的结构不一样,所以程序也不一样。
在51单片机的汇编语言中的双周期指令说第二个周期读入操作码并丢弃...
第一个问题:双周期指令,第二周期读的是操作数,只有在第一周期读操作码的,而有几条指令是单字节的,也需要两个周期,这不是浪费时间,是因一个周期是不能完成的,这不是你想像的那样。第二个问题:要做计时,不管是倒计时还是正常计时,用延迟函数来做,这种方法计时是不准确的,只有用定时器才...
最近在学51单片机的温度传感器DS18B20,其中有读字节和写字节函数,我想...
就是用DQ这条总线上读或者写入数据8次 这样就一个DQ控制口代替了8个 懂么 简单的说给DS18b20发送相应的一个字节命令(8位) 然后18b20读出2字节的数据 然后这个数据转换下 就是温度 这个懂了吧
在MCS-51单片机中,指令MOVX与MOVC有什么不同?
MOVX是访问外部数据存储器,读\/写的,读时,RD=0,写时,WR=0。与MOVC是只读外部程序存储器的,读时,PSEN=0。两条指令在访问时,产生的外部控制信号是不同的。现在多数51单片机的程序存储器都在内部了,外部的PSEN引脚就不会输出信号了。这两条指令只有在用汇编语言写程序时,才会用的。要是用C...
褒阳鲜竹: 下面分步给你介绍如何用EASY 51 PRO对51单片机进行编程: 第一步是硬件连接: 1.通讯电缆与编程器连接好, 2.将串口插头插入电脑串口, 3.USB插头插入电脑任一个USB口,此时编程器上LED点亮,表明电源接通. 4.接着安装软件,直接...
房山区18438812634: 如何利用51单片机串口读取数据 - ?
褒阳鲜竹: 先研究怎么发送的,然后,再读取... 发送、接收,是同时进行的. 双方的波特率要相同,协议要一致... 楼主采纳的答案,只是讨论接收? 很显然,收到的,可不一定是对方发送的数据.
房山区18438812634: 如何读出一般单片机内的代码 ?
褒阳鲜竹: 没有其它如何读出一般单片机内的代码,只有以下答案.第一步:连接编程器,打开编程器电源,在编程器的计算机端软件环境中,将器件选择MCU类型,型号列表中如...
房山区18438812634: 如何从单片机寄存器中读取数据,相应的C程序怎么写? - ?
褒阳鲜竹: 51单片机的话,直接写:a=P1;b=TH0; 其中a b是你自己定义的变量,P1 TH0就是单片机内的特殊功能寄存器
房山区18438812634: 如何用51单片机和U盘直接读写文件? - ?
褒阳鲜竹: 推荐用PB375A,单芯片的,我用在数据采集上.根本就没去了解过USB HOST底层协议和文件系统这些东西,这颗芯片里面都集成了.只需要单片机通过spi或者uart来发命令创建读写U盘中的文件就可以了.而且价格相当便宜!
房山区18438812634: 如何打开hex文件/从单片机里读程序 - ?
褒阳鲜竹: 1、下载线和下载软件只用于将PC机上生成的HEX文件下载写入到单片机的程序存储器中,常用的这类软件一般都是单向的,从单片机读回程序代码的软件印象里好像见过,不过和单片机厂家有关,有的提供:印象里SST的好像有;有的就没见...
房山区18438812634: 51单片机如何读取SD卡中的txt文件? - ?
褒阳鲜竹: 首先你要看你的sd卡是什么文件系统! fat16 fat32,要用相应能够解读文件系统的程序来读取sd卡.
房山区18438812634: 51单片机C语言如何全部读取和写入堆栈,不要问为什么要这样操作,只要告诉怎么操作就可以. - ?
褒阳鲜竹: 事实上是不可以的.对堆栈进行操作是破坏性的,弹出来里面就没有了.如果非要这么做,只能弹出来,再压回去.事实上,在嵌入式的操作系统里面经常使用堆栈,不过大部分是模拟,申请一个数组,然后最这个数组进行先入后出模拟,比如大名鼎鼎的uCOS系统.
房山区18438812634: 怎样把单片机内的程序读取出来 - ?
褒阳鲜竹: 如果单片机未加密的话,那么用编程器可以读出来,如果已加密,那么需要解密后才能读出来.
房山区18438812634: 51单片机向片外存储器写入与读取大量数据(比如60KB)的方法 - ?
褒阳鲜竹: 如果是64K程序如下:如果不是64k,只要比较处改一下就可以. MOVDS:MOV DPTR,#0000H LOOP:CLR AMOVX @DPTR,AINC DPTRMOV A,DPHADD A,DPLJNZ LOOPRET