嵌入式系统专区 首页 / 论坛 / 自由讨论 / 嵌入式系统专区
嵌入式系统已经深人到我们生活的方方面面,未来是嵌入式系统的天下!性能、可靠性、成本、体积和功耗,一个都不能少,有困难吗?赶紧加入嵌入式系统讨论区吧,和高手们分享设计经验和技巧!
发表新主题  收藏 打印 关注  推荐  推荐到我的小组 
楼主 问题: c51的问题 发布时间: 2006-5-8 上午11:22

作者: sugar0991

等级: 遁门入道

积分: 213 分

发帖数: 27 次

网站总积分: 213 分

发送消息

加为好友

查看用户的所有发言

以前单片机开发都是用的汇编语言,现在想用C来编程,我想请教一下这两种语言在单片机编程方面有什么区别呢?是不是用C编程的时候不用去考虑内存单元如何分配吗?谢谢指教!
引用 回复 鲜花 ( 0) 臭鸡蛋 ( 0)
第 1 楼 回复主题:c51的问题 发布时间: 2006-5-10 下午12:04

作者: nsr

等级: 遁门入道

积分: 240 分

发帖数: 67 次

网站总积分: 240 分

发送消息

加为好友

查看用户的所有发言

Franklin c51 to ANSI c 的特点和用法
 1 数据类型 增加的数据类型: Bit 由编译器定位的位变量 Sbit 由程序员定位的位变量 Sfr 由程序员定位的特殊功能寄存器名(1byte) sfr16 由程序员定位的特殊功能寄存器名(2byte) 特殊功能寄存器的定义格式: sfr 特殊功能寄存器名=地址常数; sbit 位变量名=特殊功能寄存器名^位位置; sbit 位变量名=字节地址^位位置; 特别提示:特殊功能寄存器定义语句应放在程序的开始位置,函数体之外,即应作为全局变量。 定义sfr举例: sfr PSW=0xd0 定义sbit举例: sbit C=PSW^7; 定义可位寻址变量举例: char bdata cbase; 定义sbit举例: sbit bit3= cbase^3; /*作这个定义时,要先定义变量cbase */ 2 变量定义 变量定义格式: [存储种类] 数据类型 [存储器类型] 变量名表; 存储种类: Auto 自动 extern 外部 static 静态 register 寄存器 存储器种类: Data 访问128字节内部数据存储器 bdata 访问16字节可位寻址的内部数据存储器,允许位与字节混合访问 idata 访问256字节内部数据存储器 pdata 分页访问256字节外部数据存储器,用MOVX @Ri指令 xdata 访问64k字节内部数据存储器,用MOVX @DPTR访问 code 访问64k字节程序存储器,用MOVC A+@DPTR访问 特别提示:使用存储器种类code,将在程序存储器中产生数据表,它的用途类似于汇编语言的db,dw伪指令。例如:uchar code a[5]={0xcc,0x12,0x7a,0xb5,0xfd};float code b[3]={3.345,2.474,3.248};。 C51编译器的3种存储器模式默认的存储器类型是: SMALL data COMPACT pdata LARGE xdata 3 中断服务函数 fun_type fun_name( formal_parameter ) interrupt interrupt_no using registergroup_no 其中: interrupt_no --中断号,0-31 , registergroup_no—寄存器组号,0-3 4 C51的库文件 C51S.LIB , C51FPS.LIB 小模式库 C51C.LIB , C51FPC.LIB 紧凑模式库 C51L.LIB , C51FPL.LIB 大模式库 5 混合编程 如果某一个子程序需要用汇编语言编写,可以按如下步骤进行: ① 将这一个子程序用C51编写并单独列为一个文件例如名字叫c_asm.c,在程序的开头用#pragma引用编译控制命令src,其它控制命令如果需要也可加入。 ② 单独编译c_asm.c,生成c_asm.src。 ③ 从项目中移去文件c_asm.c,同时添加文件c_asm.src,然后对c_asm.src进行修改。对c_asm.src进行修改的工作肯定要做的,不然就没有必要将c语言转变成汇编语言了。 ④ 如果需要,在项目中加入库文件 a. c51s.lib 或者 a. c51c.lib 或者 a. c51l.lib b. c51fps.lib b. c51fpc.lib, b. c51fpl.lib。 ⑤ 创建目标文件 ⑥ 按①-③编写汇编语言程序,可以可以不必记忆参数传递规则和其它一些格式方面的细节。
这是从我写的一分资料中复制过来的,如果你看起来不方便,可以给我发一个EMAIL,我将WORD文稿发给你
引用 回复
鲜花 ( 1) 臭鸡蛋 ( 0)
第 2 楼 回复主题:c51的问题 发布时间: 2006-5-11 下午6:02

作者: sugar0991

等级: 遁门入道

积分: 213 分

发帖数: 27 次

网站总积分: 213 分

发送消息

加为好友

查看用户的所有发言

谢谢,我用的是KEIL,不过Franklin也偶尔会用。我的信箱是sugang1031@163.com 不甚感谢!!
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 3 楼 回复主题:c51的问题 发布时间: 2006-5-15 下午1:12

作者: SMS

等级: 学有小成

积分: 449 分

发帖数: 80 次

网站总积分: 449 分

发送消息

加为好友

查看用户的所有发言

你的第一个问题很复杂,一时间难以说清,第二个问题不用考虑内存,C51自动分配.
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 4 楼 回复主题:c51的问题 发布时间: 2006-5-24 上午10:34

作者: Mickeyan

等级: 初入江湖

积分: 123 分

发帖数: 5 次

网站总积分: 123 分

发送消息

加为好友

查看用户的所有发言

小弟也想学习单片机,可是不知道如何下手呀!请教高手们指点一下怎么样开始比较好呢
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 5 楼 回复主题:c51的问题 发布时间: 2006-5-24 上午11:43

作者: zhw5162

等级: 初入江湖

积分: 145 分

发帖数: 18 次

网站总积分: 145 分

发送消息

加为好友

查看用户的所有发言

主要区别是:汇编是直接针对硬件编程,效率高,C语言是没有汇编那么直接,效率相对低,但可写和可读,可移植性较好。
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 6 楼 回复主题:c51的问题 发布时间: 2006-5-25 上午10:08

作者: AK-47海盗

等级: 青铜少侠

积分: 859 分

发帖数: 308 次

网站总积分: 863 分

发送消息

加为好友

查看用户的所有发言

用C51写程序也要考虑内存的管理与分配,否则在以后的运行中会出现问题.例如:
void*pvNew:
pvNew=realloc(pv,sizeNew)
if(pvNew!=NULL)
{
   pv=pvNew;
}
else
void realloc(void*pv, size-t size)
你认为这个程序有问题吗?
    
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 7 楼 回复主题:c51的问题 发布时间: 2006-5-25 下午6:41

作者: Skyhero

等级: 遁门入道

积分: 283 分

发帖数: 21 次

网站总积分: 283 分

发送消息

加为好友

查看用户的所有发言

我的e-mail
software10@163.com
请给我也发一份,谢谢!!!!
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 8 楼 回复主题:c51的问题 发布时间: 2006-5-27 上午8:17

作者: 小朋友

等级: 初入江湖

积分: 154 分

发帖数: 15 次

网站总积分: 154 分

发送消息

加为好友

查看用户的所有发言

也给我一份咯。我的邮箱是henengwei123@163.com 
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 9 楼 回复主题:c51的问题 发布时间: 2006-5-28 上午9:38

作者: fangar112

等级: 初入江湖

积分: 141 分

发帖数: 18 次

网站总积分: 141 分

发送消息

加为好友

查看用户的所有发言

可义给我发一份么?
谢谢!fangar◎163.com
fangar112 编辑于 2006-5-28 上午9:39
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 10 楼 回复主题:c51的问题 发布时间: 2006-5-30 下午6:32

作者: heu2005

等级: 遁门入道

积分: 210 分

发帖数: 35 次

网站总积分: 210 分

发送消息

加为好友

查看用户的所有发言

我也想要一份,heu2005@163.com.谢谢!!
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 11 楼 回复主题:c51的问题 发布时间: 2006-5-30 下午9:38

作者: zqandgod

等级: 初入江湖

积分: 176 分

发帖数: 24 次

网站总积分: 176 分

发送消息

加为好友

查看用户的所有发言

大家好,我也想多学点单片机设计的实战经验,也给我来一份~~
谢谢!
zqandgod@126.com
互相学习!
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 12 楼 回复主题:c51的问题 发布时间: 2006-6-14 下午4:02

作者: aker1981

等级: 初入江湖

积分: 102 分

发帖数: 1 次

网站总积分: 102 分

发送消息

加为好友

查看用户的所有发言

麻烦发给我一份,万分感谢
sharman@vip.sina.com
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 13 楼 回复主题:c51的问题 发布时间: 2006-6-23 下午9:12

作者: McuPlayer

等级: 黄金少侠

积分: 1996 分

发帖数: 263 次

网站总积分: 1996 分

发送消息

加为好友

查看用户的所有发言

汇编和C结合,才能写出最好的程序。
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 14 楼 回复主题:c51的问题 发布时间: 2006-8-25 下午5:25

作者: GONG

等级: 初入江湖

积分: 102 分

发帖数: 1 次

网站总积分: 102 分

发送消息

加为好友

查看用户的所有发言

能不能发一个C51FPS.LIB给我啊,大哥.GONG217@126.COM.
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 15 楼 回复主题:c51的问题 发布时间: 2006-9-13 下午5:41

作者: ALBERT

等级: 初入江湖

积分: 106 分

发帖数: 3 次

网站总积分: 106 分

发送消息

加为好友

查看用户的所有发言

gei wo fa yi fen
wangxiao4117@163.com
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 16 楼 回复主题:c51的问题 发布时间: 2006-9-21 下午7:46

作者: 竹林漂泊

等级: 初入江湖

积分: 179 分

发帖数: 38 次

网站总积分: 179 分

发送消息

加为好友

查看用户的所有发言

请给我也发一份,谢谢。 bamv2005@gmail.com
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 1)
第 17 楼 回复主题:c51的问题 发布时间: 2006-9-27 下午3:39

作者: 小李飞刀的刀

等级: 遁门入道

积分: 334 分

发帖数: 107 次

网站总积分: 334 分

发送消息

加为好友

查看用户的所有发言

汇编相对来说效率要高一点,,但是可移植性差,而且维护起来很不方便。我用的是KEIL C。效率其实也不低,而且更符合一般人的逻辑习惯,维护起来方便多了。但是在RAM方面还是要考虑一下的,必须考虑静态变量,自由分配的变量大小。毕竟单片机的RAM也就那么大。。
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 18 楼 回复主题:c51的问题 发布时间: 2006-11-19 下午6:56

作者: 超匡壹箩筐

等级: 青铜少侠

积分: 919 分

发帖数: 177 次

网站总积分: 920 分

发送消息

加为好友

查看用户的所有发言

做控制用汇编好,做运算用高级语言好.不过用高级语言控制单片机时,写起程序来虽然方便一些,但是效率就没汇编那么高了.至于寄存器的分配,要看你的编译器的效率了.一般好象不用象汇编那样要考虑那么细致.有一点可以肯定,用高级语言编程时,不用考虑换体的问题.
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 19 楼 回复主题:c51的问题 发布时间: 2007-9-29 上午1:30

作者: peater

等级: 初入江湖

积分: 136 分

发帖数: 20 次

网站总积分: 136 分

发送消息

加为好友

查看用户的所有发言

1楼的,请也发给我一份,谢过了先
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)
第 20 楼 回复主题:c51的问题 发布时间: 2007-10-10 上午11:38

作者: wanfee

等级: 初入江湖

积分: 102 分

发帖数: 2 次

网站总积分: 102 分

发送消息

加为好友

查看用户的所有发言

c51在声明变量时候也可以指定存储地址 用idata,xdata等 如 const char * xdata str={'...'};
引用 回复
鲜花 ( 0) 臭鸡蛋 ( 0)



快速回复
用户名:
游客null (您目前以游客身份发表,请登陆 | 注册)
标题: *
评论: *
验证码:  * 
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回嵌入式系统专区 | 返回自由讨论
本论坛仅陈述专家或个人观点,并不代表电子工程专辑网站立场。
返回论坛页首