单片机C语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机C语言相关的知识,希望对你有一定的参考价值。
DAT=num&0x80;
num=num<<1;
是什么意思啊?特别是第一句!
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 8051的C51都有自已的编译器 。具体区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对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语言的主要内容,如果未能解决你的问题,请参考以下文章