51单片机bit、sbin、sfr、sfr_16有什么区别
1.bit和sbit都是C51扩展的变量类型。
bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。
sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。
2.bit位标量
bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。
3.sfr特殊功能寄存器
sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
sfr P1 = 0x90; //定义P1 I/O 口,其地址90H
sfr 关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1 口可以用P1 为名,这样程序会变的好读好多.等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表.
sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器,
如8052 的T2 定时器,可以定义为:
sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH
用sfr16 定义16 位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物
理低位地址之上.注意的是不能用于定时器0 和1 的定义.
sbit 可定义可位寻址对象.如访问特殊功能寄存器中的某位.其实这样应用是经常要
用的如要访问P1 口中的第2 个引脚P1.1.我们可以照以下的方法去定义:
(1) sbit 位变量名=位地址
sbit P1_1 = Ox91;
这样是把位的绝对地址赋给位变量.同sfr 一样sbit 的位地址必须位于80H-FFH 之间.
(2) sbit 位变量名=特殊功能寄存器名^位位置
sft P1 = 0x90;
sbit P1_1 = P1 ^ 1; //先定义一个特殊功能寄存器名再指定位变量名所在的位置,当可
寻址位位于特殊功能寄存器中时可采用这种方法
(3) sbit 位变量名=字节地址^位位置
sbit P1_1 = 0x90 ^ 1;
这种方法其实和2 是一样的,只是把特殊功能寄存器的位址直接用常数表示. 在C51
存储器类型中提供有一个bdata 的存储器类型,这个是指可位寻址的数据存储器,位于单
片机的可位寻址区中,可以将要求可位录址的数据定义为bdata,如:
unsigned char bdata ib; //在可位录址区定义ucsigned char 类型的变量ib
int bdata ab[2]; //在可位寻址区定义数组ab[2],这些也称为可寻址位对象
sbit ib7=ib^7 //用关键字sbit 定义位变量来独立访问可寻址位对象的其中一位
sbit ab12=ab[1]^12;
操作符"^"后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31.
sfr 并标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新
的关键词,其用法是:
sfrt 变量名=地址值。
单片机、Arduino、Microbit有什么不同?
一.单片机
1.定义
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
这是百度百科的内容,简单来说就是一块芯片,上面有像计算机电脑一样的CPU(当然性能很弱)、RAM(内存)、ROM(硬盘)等等,同时芯片上还集成了各种各样的模块,包括AD转换、PWM输出、CAN总线通讯等模块。
经典的51单片机
2.应用
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。
单片机的各类应用
3.开发难度
单片机需要专用的软件、编译器、编程器、电路等装置,需要操作底层寄存器,开发难度大,开发周期长,不同型号单片机各有各的系统,兼容性不好,一般为专业工程师开发专业项目使用,不适合机器人教育领域使用。
二.Arduino
1.定义
Arduino是以AVR型号单片机作为基础,在单片机的基础上对电路、软件库进行封装,这样为业余爱好者提供极大的方便,Arduino是一款便捷灵活、方便上手的开源硬件产品,具有丰富的接口,有数字I/O口,模拟I/O口,同时支持SPI,IIC,UART串口通信。能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他装置来反馈、影响环境。它没有复杂的单片机底层代码,没有难懂的汇编,只是简单而实用的函数。而且具有简便的编程环境IDE,极大的自由度,可拓展性能非常高!标准化的接口模式为它的可持续发展奠定了坚实的基础。
2.应用
Arduino有多个系列,它是一款优质平台,同时它有丰富的衍生课程,可以用于青少年儿童的编程教育。
arduino教育套装
arduino机器人
3.开发
可以使用图形化编程软件,包括但不限于Mixly、Scratch、mblock、mind+等。
也可以使用C语言编译器,Arduino-IDE软件。
电路需要外接传感器进行扩展。
4.缺点
外围传感器比较少,需要复杂的接线。
三.Microbit
1.定义
microbit由英国广播电视公司为青少年编程教育研发的一款微型计算机,是微软、三星、ARM研发的微型电脑。
功能:25颗可编程点阵灯、2个编程按钮、温度速度传感器、蓝牙、电子罗盘、USB接口等。
2.应用
同Arduino应用几乎差不多,主要用于创客、机器人、编程教育等领域
3.开发
可以使用Makecode图形化编程软件开发,也可以使用Python语言开发。
4.对比
针对上图中说arduino 适合高中以上,那确实危言耸听了,arduino如果不学C语言程序设计,四年级以上的学生是完全可以接受的。
相关问答
单片机 中 BIT 是什么意思?在单片机中,BIT是二进制位(BinaryDigit)的缩写,它是计算机数据存储的基本单位,表示了一个二进制数中的一位,只能存储0或1两种状态。在单片机编程中,BIT通...
bitflag是什么,编程语言的一种吗?51单片机,支持对““一个二进制位””,进行操作。程序中,可以定义““位变量””。bitflag,就是声明了一个位变量。这和inti,j,k;,声明整型变量,道...5...
【LCD1602判忙函数原理( 单片机 )bitLCD_Check_Busy(void){Dat...[最佳回答]这是针对51单片机的编写的程序吧?你的老师应该强调过,在读取一个端口状态之前必须先向这个端口写1,否则读回的状态可能不正确,这是51单片机的端口结...
51单片机 直接寻址的区域?直接寻址,是把数据直接写入当前地址,或者把当前地址的内容读出如:MOVA,90H,就是把地址90H中的内容写入到寄存器A中。位寻址是位操作命令,写入和读出的是一...
51单片机 ie寄存器每一位含义?51单片机的IE寄存器各位的含义如下:Bit7:EA。当EA=0时,所有中断禁止(即不产生中断);当EA=1时,各中断的产生由个别的允许位决定。Bit6:ET2。定时2溢出...
51单片机 和stm单片机的区别?两者的主要区别如下:1、内核:51单片机采用的是51Core,8Bit@2MHzMax(分频后),0.06DMIPS;STM32采用的是ARMCortex-M3,32Bit@72MHz,1....
【一些 单片机 的选择题()1.MCS 51 指令:MOVA,#40H;表示将立即数...[最佳回答]1.Y2.Y3.N4.N5.Y6.Y7.N8.Y仅供参考!
51单片机 怎么用定时器实现四位数字逐渐+1?在51单片机中,可以使用定时器来实现四位数字逐渐增加的功能。首先,我们需要选定一个合适的定时器,例如定时器0。然后,我们需要配置定时器的计数方式和计数频...
求一个 51单片机 的程序:一个按键控制led灯闪烁,就是按一下灯闪,再按灯就灭了?LEDBITP1.0KEYBITP1.1ORG0000HLJMPMAINORG0030HMAIN:CLR00HMAIN1:JBKEY,LOOPJNBKEY,$CPL00H...
51单片机 怎样用一个定时器输出两路方波 - 155****4249 的回...兄弟,你有没有编译通过?1、主函数mian()->main();2、P1_0、P1_1->P1^0、P1^1;试试!你的程序只有一处错误,我已通过测试,请将mian改为main.另外,如...