㈠ 8051 扩展内存
8051 单片机的内存最大的只有 256 B 而扩展内存却可以很大。
我们可以通过关键字 __xdata 将数据放到扩展内存上面。
要让内存正常的使用我们需要自动堆栈,编译器加上 —stack-auto 即可。
我们初步使用的时候,误以为内存可以很大,所以就去研究 sdcc 编译器的源码,发现 8051 单片机的内存被限制在 128 ~ 256,这么限制必然有它的道理,也就是 8051 CPU 只能用到 256 B 的内存。
当我们意识到问题的所在时,就去研究 扩展内存的使用,在查找资料后,发现了正确的使用方法,但是编译编译上还是有问题,乱加编译参数后,有一个刚好成功编译。
事后我们知道了是怎么回事,这也使得我们对 8051 的使用进一步加深。
㈡ linux下怎么编译单片机c代码,怎么下载到51单片机上呢
1.编译软件用sdcc
2.sdcc不支持keil51c 的一些语法。要做以下修改:
sbitled1=P1^0; 改为 #define led1 P1_0
中断函数interrupt改为__interrupt
单个位 P1^0 改为P1_0
若vim安装插件YCM的话,要在.ycm_extra_conf.py加入以下两个路径
/usr/share/sdcc/include
/usr/share/sdcc/include/mcs51
没创建一个工程都要拷贝一份.ycm_extra_conf.py到该工程的目录下。
3.编译用命令
` sdcc 目标文件
4.烧录软件用stcflash.py,该软件只能支持stc89c52rc,不支持stc89c52。我自己亲自试过。
sudo python ./stcflash.py 目标文件
㈢ 51单片机中 C语言 P2^3与P2.3的区别
P2^3表示的就是P2.3,但在KeilC中P2.3的表述是不合法的。其实这只是编译器的语法而已。
㈣ SDCC编译器警告问题,怎么解决
编译器的警告要认真对待,应该尽量编写没有警告的代码,除非你确切的知道编译器为什么产生警告,以及后果
㈤ gcc编译器可以用于单片机的开发吗
可以的,需要交叉编译。我们公司就在做这个。原来使用sdcc做的编译器,现在改为gcc了。
㈥ dev C++和codeblocks有什么区别
两者在是否可以跨平台和是否可以支持codefolder两方面存在区别。
一、是否可以跨平台
dev C++:Dev C++不能跨平台,只能在Windows下用。
codeblocks:CodeBlocks是跨平台的,在Windows、Linux、Mac OS等多个平台下都可以使用。
二、是否可以支持codefolder
dev C++:不能支持codefolder。
codeblocks:可以支持codefolder。
(6)sdcc编译器对比扩展阅读
Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了着名的图形界面库wxWidgets(2.6.2 unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。
主要特点
1、从06年3月21日版本:1.0 revision 2220开始,Code::Blocks在它的每日构建中正式提供GNU/Linux版本,这样 Code::Blocks在1.0发布时就成为了跨越平台的C/C++IDE,支持Windows和GNU/Linux。
由于其开放源码的特点,Windows用户可以不依赖于VS. NET,编写跨平台C++应用。
2、Code::Blocks提供了许多工程模板。
这包括:控制台应用、DirectX应用、动态连接库、FLTK应用、GLFW应用、Irrlicht工程、OGRE应用、OpenGL应用、QT应用、SDCC应用、SDL应用、SmartWin应用、静态库、Win32 GUI应用、wxWidgets应用、wxSmith工程。
另外还支持用户自定义工程模板。在wxWidgets应用中选择UNICODE支持中文。
3、Code::Blocks支持语法彩色醒目显示,支持代码完成,支持工程管理、项目构建、调试。
Code::Blocks支持插件,包括代码格式化工具AStyle;代码分析器;类向导;代码补全;代码统计;编译器选择;复制字符串到剪贴板;调试器;文件扩展处理器;Dev-C++DevPak更新/安装器。
DragScroll,源码导出器,帮助插件,键盘快捷键配置,插件向导;To-Do列表;wxSmith;wxSmith MIME插件;wsSmith工程向导插件;Windows7外观。
㈦ 51单片机用什么软件编程
开源软件mcu8051ide 功能不是一般的强,用c语言编程,界面不输给商业软件,而且提供多种模拟器件如:led 数码管,矩阵数码管(8×8)按键,矩阵按键,甚至温度传感器。开源的没有任何限制,完全免费,自动生成多种烧录文件(我们一般就用.HEX的)感觉keil c弱爆了。
安装方法,下载sdcc(mcu8051ide是基于sdcc的)和mcu 8051 ide都安装好就可以啦,头文件在sdcc的安装文件夹内(include)有些关键字要加两个连在一起的下划线比如 __interrup, __code.
头文件与keil的不通用,比如定义P0口
在keil下是: sfr P0=0x80; 在sdcc下是: __sfr __at P0 0x80; 这个P0^1的不行,但sdcc里面有很多头文件8051.h 80c51.h 80c52.h等等 基本满足要求,给stc单片机编程不用改,加一点特殊的就可以。这样优秀的开源软件不用真的是白不用啊。
㈧ 在51单片机中怎样使用C语言预留一片存储区,使得变量自动分配内存时避开这片区域
看你用的什么编译器。
我自学51单片机用的编译器是SDCC,里面有一个修饰叫做__at
用sdcc的话可以写
__at(0x20) char reversed[16];
然后这一块内存就分配给此全局变量了
㈨ 想学ARM,不知该如何下手,请高手指点一下!
多看一下求职招聘网站 招聘嵌入式工程师的一些招聘信息
按照企业人才需求来学习。
软件或者硬件选一个方向主攻,然后也了解下另一个方向的一些基本知识,计算机专业建议从软件学起,大学时的C语言、微机原理、单片机课程要重点学好,没学好的话自己找时间去重拾。C语言基础、单片机基础搞好了后,再学习linux基本知识、嵌入式linux操作系统、ARM处理器等。。看书是一方面,实践非常非常重要,C语言编程能力、单片机开发能力都只能是在实践中慢慢提升的,只是看书毫无意义。没有硬件基础,不建议刚开始就学习硬件。
arm学习,你看看cpu的资料,然后有个软件好像是ADS1.2,你去下载个看看
基于ARM处理器的MVB 2类设备研究
基于ARM的ADSL2+测试仪的设计与实现
基于ARM的嵌入式系统中从串配置FPGA的实现
基于ARM Linux的图像采集与蓝牙传输
基于ARM7的新型嵌入式心电监护仪的研制
ARM嵌入式平台的VGA接口设计
ARM7启动过程
基于ARM核的AT75C220及其在指纹识别系统中
ARM7系统中实现CF卡存储的文件系统设计
基于ARM9的多功能硬盘MP3播放器的设计
个典型的嵌入式系统设计和实现
基于ARM核的Intel XScale嵌入式系统
使用免费的SDCC C编译器开发DS89C420/430/4
ARM的三种中断调试方法的探讨
SSD1906显示控制器与AT91RM9200的接口技术
ARM核微处理器芯片PUC3030A及其应用
ARM构架在32位微控制器领域的应用
QFN封装的PCB焊盘和网板设计
手持式系统无线局域网解决方案的选择
GPS接收器入门
基于ARM的MPEG4视频解码器
Windows CE 编程的十点忠告
ARM简介及编程
ARM7&ARM9双核平台的技术分析
浮点数判零--MCS-51单片机实用子程序
ARM基础知识连载之一
选择ARM CPU的操作系统
Linux驱动入门
ARM的希望:两种嵌入式操作系统的比较
ARM处理器及物理IP超过750MHz