C语言和单片机语言

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:56:13
我想问下,这么用C语言表示单片机语言,就是说这么确定单片机里的位运算用C语言来实现,本人还在学习中,希望各位大虾说的明白点,谢谢,给10分
我就是想知道这么用C语言来编辑单片机的位运算 ,这么定义,这么确定,这么运算,就要这些,要明白点的呢,谢谢

晕,首先建议你将问题中所有"这么"改成"怎么"

问题1,不需要用C语言表示单片机语言(机器语言),在用相应软件编译你编写的程序时,编译软件会将你的程序"翻译"成"机器语言"(就是你所说的单片机语言),用来烧录到单片机中.C语言就是C语言,只不过相对于机器语言他更容易读懂,方便编写.
在很多年以前,单片机开发用的是汇编语言,在烧写单片机之前要自己对照"单片机机器语言表"将自己的程序翻译成"机器语言",全是数字串,那是钟痛苦,现在都有编译软件搞定了,比如你用KEIL,编译之后,点仿真,就能看见对应的汇编语句和机器语句,机器语句在单片机数据手册上有对应的码.
问题2.不是所有的单片机都支持位运算,比如51支持位运算,在C语言中如果你定义了有关位的运算,编译器在"翻译"的时候就会翻译成对应的机器语言,这时由于51支持为运算,生成的代码就少.如果使用了不支持位运算的单片机,那么编译器就会使用其他方法实现你定义的运算,相对之下代码要多一些,可能要用很多条语句才能完成.

标准的C语言本来是不支持位定义的,只能用位域的方式定义,像"bit"这样的定义是Keil中扩展出来专门为像51这样的支持位定义的单片机使用的,这样的C语言叫做非标准C,Keil中使用的C语言叫做 Keil C语言,

之所以使用C来开发是为了方便,之所以在开发中允许使用位定义,是因为兼容(因为51支持)

使用C语言来开发,就去尽情的发挥C语言的优点,这些语言是怎么转化到单片机中的,就是编译器的事情了.

记住"只要支持就去用,这就是优化"
但这种优化的程序不方便移植.

看不懂给我留言

^_^,你可以定义bit
例如你定义一个位变量 bit flag1;
那个这个定义等效于在汇编里面定义了一个 FLAG EUQ 20H.0 等,当然这个20H.0是由C编译自动分频的,你可以不管,你只要知道这个flag1等效与汇编中的FLAG 一样使用就可以了<