① keil编译51单片机 c程序采用不同存储器模式生成的hex文件在同一个单片机上运行的效果不一样
你把数组unsigned char data1[][16]设成unsigned char code data1[][16]就可以了,
② 不同型号的单片机二进制指令一样吗
单片机的区分主要是IP核。其实就是内核。
目前有,51,PIC,ARM等。他们的内核不同,也就是指令不同。这是基于硬件电路的层次。
如果从编程角度讲,汇编语句可能类似,C语句更是绝似。
③ 不同单片机的指令系统不一样吗
1.型号不同,但是核心一样的话,这样的单片机指令系统是一样的。比如基于MCS-51核心的单片机AT89C51、AT89S52、SST89C58、W77E058、C8051F020等,都是一样的指令系统。
但是有点例外,比如AVR核心单片机,对于AT90、Attiny和Atmega系列都有基础的79条指令,后面随着单片机的发展而出现扩展指令集,比如Attiny单片机为79条指令,AT90系列为118条指令、Atmega8有130条指令,而Atmega128以上的扩展为133条指令。即相同的核心,但是因为结构越来越高级而增加的指令就越多。
2.“有没有一种不同型号单片机通用的统一指令系统,从而只需要学一种语言然后经过编译后就可以对它们进行操作?”——这问题已经回答了,如果型号不同,但是核心相同,那指令就一样,不用重复学习;但是核心和型号都不相同,那就没办法了,只有老老实实的学习。
3。C语言可以越过汇编语言的问题,但是你要注意C程序移植和编写时仍需要注意单片机构架,比如电脑使用的C语言的printf()函数是在屏幕上显示内容,但是在单片机中的这个函数就会是别的情况,这点是非常需要注意的。
④ 不同的单片机如(stc AT PIC) 他们的编译器是否一样,还是要到生产厂家要的编译器才可以把程序编进单片机里
用VC++6.0肯定不行的,用KEILC可以,基本上所有的单片机都可以用KEILC编译。至于下载到单片机那就不一样了,PIC有厂家提供的MPLAB ICD,STC也有厂家提供的专用下载软件。还有部分芯片可用通用编程器写入芯片的。
⑤ 51单片机的编译 从繁从简的区别
从繁从简对最后的编译结果运行结果没有影响,希望再确认下自己两个程序表达的意思是否真的一样。建议以后能用简单语句表示的,就用简单表示,不同的程序,虽然表达的意思一样,当程序大了,最后系统运行的速度就会有大差别。
⑥ 单片机编程和"一般编程"区别
如果你是想学计算机软件开发的话,就不要去理会什么单片机编程了。
但如果你是想学电子产品开发(嵌入式系统开发),那么单片机编程就是基础了。
电脑和单片机的区别是:电脑属于通用计算机,而单片机是嵌入式微机。
通用计算机上的C语言和汇编编写出来的程序是在本台计算机上运行的,当然你也可以让它在其他电脑上运行。而单片机编程就不同了,单片机编程有专门的编译器,不同的单片机编程软件是不同的,而不像电脑上的c++6.0、TC或其他什么编程软件写出来的程序就在本台电脑上运行,单片机的编程是在电脑上编写程序并生成可执行文件。让后把可执行文件下载到单片机里面,也就是说单片机编程是面向单片机的,而通用计算机编程时面向通用计算机的。这就说明了为什么不同的单片机需要不同的编程软件,因为编程生成的可执行代码都需要硬件的支持,通用机的硬件是“通用的”“兼容的”,而单片机型号不同硬件就会有差别
,所以需要不同的编译器来支持了。
你会发现单片机编程的C语言和标准C会有差别,很多单片机C语言在标准C里是不被承认的,这个也能说明单片机和电脑的区别吧。
⑦ 主流C51单片机编译器比对
int short 的大小是因机器而异嘛(准确点应该是编译器)。你都说了人家规定的是“最小”为16位,又不是只能是16位,也没有说两者应该相等(事实上是short不超过int就OK啦)。所以当然可以short类型为半个机器字长,而int类型则为一个机器字长的啦。
“C++标准规定了每个算术类型的最小存储空间,但他并不自知编译器使用更大的存储空间 ”
说简单点就是C++规定了个最小的值,但是将你的代码编译成机器码的编译器则确定了你这个长度值为多少。因为C++是一种语言,一个规范,或者说只是一种规定,然后要将你按这种规范写的代码编译成能在机器上运行的代码的是编译器。而在不同的机器上运行的程序的实际结构是不一样的,比如单片机与PC相差就很大。要将按相同规范写的程序在各种各样乱七八糟的机器上运行,就需要相应的编译器了。所以实际的大小是由你编译代码的编译器确定的。
PS:当然当前一般的PC上int都是32位,short16位的。因为现在32位的机子是主流嘛。如果你不写什么单片机的程序可以不用太在意这个问题。但是写单片机程序时就要注意了,因为一般一个单片机的编译器可以编译很多种型号芯片的代码,而这些型号有可能从8位到32位都有……
⑧ 51单片机的程序其他单片机可以用吗
只要是51单片机,基本上应该都可以用。但是有的程序需要做修改才能用!不是说一点不改就能用。例如18B20,或者用到定时器的。
⑨ 求助不同的单片机,编程的方式都不一样吗
这个要看“不同”是什么了,如果是不同类的单片机,编程方式肯定相差很大,比如51、AVR、PIC,结构、
指令系统
都不同,编程的方式肯定不同。但在同类下的“不同”,那么编程方式基本上差不多,比如同在51类别下的STC、AT、Winbond等。
⑩ C语言与单片机C语言的区别 急求
单片机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语言,因为它们的编译机理都是一样的。
(10)不同的单片机编译一样吗扩展阅读:
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语言-网络