资料介绍
本文档的主要内容详细介绍的是C51的一些误区和注意事项和51单片机的寻址方式10 个你可能没用过的Linux命令等资料免费下载。
C51的一些误区和注意事项:
1) C 忌讳绝对定位。常看见初学者要求使用_at_,这是一种谬误,把C 当作ASM 看待了。在C 中变量的定位是编译器的事情,初学者只要定义变量和变量的作用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。比如unsigned char data x;后,x 的地址就是&x, 你只要查看这个参数,就可以在程序中知道具体的地址了。所以俺一看见要使用绝对定位的人,第一印象就是:这大概是个初学者。
2) 设置SP 的问题。原因和1差不对,编译器在把所有变量和缓冲区赋予地址后,自动把最后一个字节开始的地方,作为SP 的开始位置,所以初学者是不必要去理会的。这体现C 的优越性,很多事情C 编译时候做了。
3) 用C 的主程序结构:#include void main(void) { while(1); } 这是个最小的成功的C 程序,包括头部文件和程序主体。头部文件的名词解释:引用的外部资源文件,这个文件包括了硬件信息和外部模块提供的可使用的函数和变量的说明。可以用文本方式打开reg52.h,仔细研究下,会有一些写程序的体会。
4) 这样构成一个C 项目在C 中,常用项目来管理。项目一般分为两大块:C 文件块和头部文件块。我们常把不同功能写在不同的C 文件中,依*项目的管理,最后把所有文件连接起来,这样就可以得到可以烧录的HEX 文件或BIN 文件。这些C 文件中,有且只有唯一一个包括main()函数,和3)中一样的C 文件。用头部文件把各个不同的C 互相连接起来。一个C 文件基本上要对应有一个H 头部文件,这个H 文件就包含本C 文件中可以提供给外面使用的变量和函数,没有在H 文件中列出的募??梢运闶歉肅文件的内部函数和变量,外部C 不能使用。例子: a.C: unsigned char i; unsigned char mWork; void Test1(void) { mWork++; } voidTest2(void) { i++; } a.h 文件中: extern unsigned char i; extern void Test1(void); 这样主程序M.c 中: #include /*C 编译器内部自带的H 文件,使用《》*/ #i nclude “a.h” /*自定义的H 文件,一般用“”*/ void main(void) { Test1(); /*使用a.c 模块文件中的函数*/ while(1){ i++; /*使用a.c 模块文件中的变量*/ } }
5) 51家族核心都是基于8031的,有很多在此核心上进行扩展,有的把程序存储器放在内部:89c(S)51.。,有的增加了RAM:89c(S)52.。,有的增加了一些专用硬件80C552.。.,有的改变时钟时序W77E58.。.。市面上现在常用的主要有ATMEL 公司的AT89X 系列,PHILIPS 的P87(89)x,台湾WINBOND 的w77(78)x 系列,Cygnal 的C8051Fx 系列。
6) 51单片机结构的C 描述这里不讲51的具体结构,只是引导初学者快速理解51单片机的物理结构。寄存器和IO 及其它硬件设备的地址名称,在相应的C 头部文件中可以找到。51为reg51.h,52为reg52.h,以次类推,比如winbond 的78E58就为w78e58.h 这些H 文件中的描述:srf,定义一个8位的设备。srf16,定义一个16位的设备。sbit,定义一个位的设备。用这些语句定义后,就可以在C 中象汇编一样使用这些硬件设备,这是单片机应用比标准C 特殊的地方,其它差别很少。
7) 在51系列中data,idata,xdata,pdata 的区别data:固定指前面0x00-0x7f 的128个RAM,可以用acc 直接读写的,速度最快,生成的代码也最小。idata:固定指前面0x00-0xff 的256个RAM,其中前128和data 的128完全相同,只是因为访问的方式不同。idata 是用类似C 中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c 中idata 做指针式的访问效果很好) xdata:外部扩展RAM,一般指外部0x0000-0xffff 空间,用DPTR 访问。pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rx 读写。这个比较特殊,而且C51好象有对此BUG, 建议少用。但也有他的优点,具体用法属于中级问题,这里不提。
8) startup.a51的作用和汇编一样,在C 中定义的那些变量和数组的初始化就在startup.a51中进行,如果你在定义全局变量时带有数值,如unsigned char data xxx=100;,那startup.a51中就会有相关的赋值。如果没有=100,startup.a51就会把他清0。(startup.a51==变量的初始化)。这些初始化完毕后,还会设置SP 指针。对非变量区域,如堆栈区,将不会有赋值或清零动作。有人喜欢改startup.a51,为了满足自己一些想当然的爱好,这是不必要的,有可能错误的。比如掉电保护的时候想保存一些变量, 但改startup.a51来实现是很笨的方法,实际只要利用非变量区域的特性,定义一个指针变量指向堆栈低部:0xff 处就可实现。为什么还要去改? 可以这么说:任何时候都可以不需要改startup.a51,如果你明白它的特性。
- C51单片机与C52单片机内部的资源区别
- Keil C51与单片机开发入门(第一个程序)
- 51单片机(一)—— 51单片机简介
- C51单片机流水灯C代码
- 8051单片机C51编程电子版书籍 0次下载
- 单片机C51程序设计的学习课件免费下载 63次下载
- 使用51单片机进行寻址的方式详细说明
- 单片机C51编程的警告提示说明
- 51单片机的一些特殊寄存器资料说明
- 51单片机汇编语言的寻址方式详细资料说明
- 51单片机如何读写AT29C040?51单片机读写AT29C040的c51程序免费下载 23次下载
- 51单片机c51语言入门教程C语言入门教程 31次下载
- 51单片机汇编语言教程_单片机寻址方式与指令系统 0次下载
- 单片机C51语言设计视频演示
- 学51单片机之C51基础知识
- C51单片机的IO口介绍(下) 1373次阅读
- 51单片机读写AT29C040的C51程序 4738次阅读
- HD44780读写单片机C51程序免费下载 4146次阅读
- 使用HD44780读写单片机的C51程序详细概述 3112次阅读
- 80C51单片机实现专用寄存器位寻址的设计方案 3036次阅读
- 初次学习C51的一些误区和注意事项详细概述 2452次阅读
- 单片机C语言有哪些优越性?如何建立一个Keil C51项目 1.2w次阅读
- 基于 C51单片机控制GSM模块实现短信收发、打电话的功能 1.5w次阅读
- 51、stm32单片机入门的一些经验 3181次阅读
- 51单片机编程环境的搭建及代码编写的方法 2.2w次阅读
- 探讨单片机的寻址方式 7947次阅读
- Keil C51单片机变量的使用方法详细介绍 4528次阅读
- 基于80C51单片机位寻址编程 3313次阅读
- ADC0834模块的C51源程序 4077次阅读
- C51单片机矩阵键盘扫描去抖程序 1.3w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多