找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1009|回复: 11
收起左侧

老白请教,我看有些单片机例程上,开始定义了晶振主频,波特率

[复制链接]
ID:1006638 发表于 2023-2-22 09:47 | 显示全部楼层 |阅读模式
老白请教,我看有些例程上,开始定义了晶振主频,波特率等例如#define  FOSC    22118400L
#define  BAUD    9600
后面程序里面直接算定时器初值什么的,为什么波特率那个是数字。而主频那个带个字母L.什么意思???
回复

使用道具 举报

ID:94031 发表于 2023-2-22 10:32 | 显示全部楼层
数值后面加“L”和“l”(小写的l)的意义是该数值是long型。
回复

使用道具 举报

ID:879348 发表于 2023-2-22 11:14 | 显示全部楼层
好像现在新的编译器不带L也没问题
回复

使用道具 举报

ID:1006638 发表于 2023-2-22 11:31 | 显示全部楼层
那9600后面是不是也应该加个I之类什么的的
回复

使用道具 举报

ID:1006638 发表于 2023-2-22 11:32 | 显示全部楼层
哦,那9600后面是不是也应该加个什么I之类的
回复

使用道具 举报

ID:94031 发表于 2023-2-22 15:57 | 显示全部楼层
大IGBT 发表于 2023-2-22 11:32
哦,那9600后面是不是也应该加个什么I之类的

数值后如果不加,编译器默认int型,如果需要强调它是什么类型,就要加。
回复

使用道具 举报

ID:584814 发表于 2023-2-22 16:12 | 显示全部楼层
长整型。一
般系统缺省0~65535(0x00~0xFF)可以直接写。
回复

使用道具 举报

ID:142559 发表于 2023-2-22 16:33 | 显示全部楼层
在常数后面加L,表示此常量为long类型的,占4字节空间。
回复

使用道具 举报

ID:230500 发表于 2023-2-25 00:36 | 显示全部楼层
加L就如1楼所说的那样,意义是该数值是long型 , 再就是前面#define定义方面以后改程序 ,这就是标准的规范写法
比如:
#define  BAUD    9600
那后面的代码中只要是BAUD 就是表示是9600;
如果以后改代码只要在前面的宏定义位置把9600改成38400就可以了,后面所有的BAUD都自动改成了38400;而不用再去翻找整个几千行及万行代码一个一个的改;
回复

使用道具 举报

ID:883242 发表于 2023-2-25 01:35 | 显示全部楼层
大IGBT 发表于 2023-2-22 11:32
哦,那9600后面是不是也应该加个什么I之类的

常数默认是int型,看22118400显然是C51,int类型范围是-32768~32767,显然超范围,不加L显然是错的。如果是MDK当然就不用加了。
回复

使用道具 举报

ID:1034262 发表于 2023-2-25 10:46 | 显示全部楼层
带L表示长整型,带UL表示无符号长整型,带f表示浮点。
通常是在C51中使用,因为C51默认是整型int16位的,不指定类型的立即数,编译器默认16位,炒股的被截断。比如定义 #define  ABC  65537,超过16位被截断为 1,即等效 #define  ABC  1
回复

使用道具 举报

ID:434018 发表于 2023-2-25 12:32 | 显示全部楼层
L=long (4 Bytes)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表