单片机C语言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机C语言相关的知识,希望对你有一定的参考价值。

DAT=num&0x80;
num=num<<1;
是什么意思啊?特别是第一句!

DAT = num&0x80;
num = num<<1;

//DAT = num&0x80 相当于num & 10000000b 就是保留num的最高位,其他位都清零,结果给DAT
//num = num<<1; 首先<<运算符 就相当乘法,因为单片机里面没有硬件的乘法器,所以一般都是通过这个符号来做乘法。<< 1 相当于 *2 同理可以 <<2 相当于 *4 即是2^n 所以这句话的意思就是num * 2 在赋值给num,相当于本身*2
参考技术A 把num的数值和十六进制80进行按位与 也就是说把两个数的二进制进行与运算
num=num<<1; 这个是像左移一位 也是在二进制的下进行移位
参考技术B DAT和num都是字节型变量,把num 和 0x80 进行位与,即取出num的第7位数据也就是符号位,结果存入DAT变量中
num=num<<1 就是把num左移一位然后再存入num中,这两条语句的目的应该是想得到num的符号位送CF
参考技术C 楼上的讲的不错!

单片机入门必知 | C与单片机C不一样?

许多小伙伴在学完C语言后想入门单片机,但学着学着发现明明都是C语言,为什么单片机C语言和我当初学的C语言有差异呢?今天小编就来梳理我们平时所学的C语言与单片机C语言的有什么样的不同。


 

单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:

 

1.单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。

 

2.C是一门语言,由对应平台的编译器编译成对应平台汇编的程序,各平台的汇编不一样,当然编译器也不一样 DOS上的TC2 TC3   WINDOWS上的VC 8051C51都有自已的编译器 。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。

 

3.单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短运行速度高存储空间小符合C语言的ANSI标准,生成的代码遵循Intel目标文件格式,而且可与A51汇编语言PL/M51语言目标代码混合使用。

 

C51本质就是C,是为在单片机上使用C而出来的,如果C不牢固,还是多掌握一点C再学C51,不过新增的知识也不少,而且基本上跟C无关。

 

4.C只是一种高级语言。它除具有一般高级语言的功能特性外,它可以很好的操作底层的硬件接口。在C语言的基础上,如果你把一些单片机的端口或特殊功能寄存器加于定义,使之方便于在 写语句的时候,直接直观的编写。这样就差不多是单片机C语言。

 

结语C语言是我们入门编程所学习的一门语言,也是IOS开发、单片机开发等应用上具有重要应用的一门语言,虽然C语言与单片机C语言、C++C#等有或小或大的差异,但他们的编译机理、表达形式都是一样的!

 



以上是关于单片机C语言的主要内容,如果未能解决你的问题,请参考以下文章

单片机C语言

单片机入门必知 | C与单片机C不一样?

bit用法——单片机C语言

51单片机中断 C语言?请教!

求一个51单片机简单的中断C语言程序

51单片机c语言问题,麻烦各位大哥大姐帮帮忙。。。