第1个回答 2020-02-27
晕,首先建议你将问题中所有"这么"改成"怎么"
问题1,不需要用c语言表示单片机语言(机器语言),在用相应软件编译你编写的程序时,编译软件会将你的程序"翻译"成"机器语言"(就是你所说的单片机语言),用来烧录到单片机中.c语言就是c语言,只不过相对于机器语言他更容易读懂,方便编写.
在很多年以前,单片机开发用的是汇编语言,在烧写单片机之前要自己对照"单片机机器语言表"将自己的程序翻译成"机器语言",全是数字串,那是钟痛苦,现在都有编译软件搞定了,比如你用keil,编译之后,点仿真,就能看见对应的汇编语句和机器语句,机器语句在单片机数据手册上有对应的码.
问题2.不是所有的单片机都支持位运算,比如51支持位运算,在c语言中如果你定义了有关位的运算,编译器在"翻译"的时候就会翻译成对应的机器语言,这时由于51支持为运算,生成的代码就少.如果使用了不支持位运算的单片机,那么编译器就会使用其他方法实现你定义的运算,相对之下代码要多一些,可能要用很多条语句才能完成.
标准的c语言本来是不支持位定义的,只能用位域的方式定义,像"bit"这样的定义是keil中扩展出来专门为像51这样的支持位定义的单片机使用的,这样的c语言叫做非标准c,keil中使用的c语言叫做
keil
c语言,
之所以使用c来开发是为了方便,之所以在开发中允许使用位定义,是因为兼容(因为51支持)
使用c语言来开发,就去尽情的发挥c语言的优点,这些语言是怎么转化到单片机中的,就是编译器的事情了.
记住"只要支持就去用,这就是优化"
但这种优化的程序不方便移植.
看不懂给我留言