单片机C语言中define的妙用

最近一款产品调试时发现了问题,在一起检查一个小伙伴的C程序。问题不大,但暴露了一点问题。

比如:PORTB=0x23; //他的意思是把第5和第2位置1

可是你能一下子看出来第5和第2位置1吗?其实应该是0x24,他并没有发现这个错误,算错了,所以正确的是:

PORTB=0x23;

其实,我们完全可以避免这个错误。

打开我们编译器自带的头文件,比如AVR Tiny13头文件中有如下语句:

# define PB5 5

# define PB4 4

# define PB3 3

# define PB2 2

# define PB1 1

# define PB0 0

看似没什么用,其实大有用处。

PORTB=0x24;就可以写为:

PORTB=(1<

这样,是不是一下子就能看清谁跟谁了?也方便别人阅读。

define的妙用远不止此,但基本的用法简单,要灵活运用,才行。

下面是摘抄自网上的define用法,希望你能掌握并运用。

#define用法

1.简单的define定义

#define MAXTIME 1000

一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写

if(i

编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。

这样的定义看起来类似于普通

单片机c语言的define,单片机C语言中define的妙用相关推荐

  1. c语言 编译开关用法,C语言中define的使用方法

    C语言中define的使用方法 学习了这么多年C语言,说实话对宏自以为了如指掌了,没想到看内核代码的时候还是那么吃力,设备驱动代码中有很多这样或者那样的宏定义,各种define都有哪些学习方法呢?以下 ...

  2. c语言 define 关键字,c语言中define的一个不常见的用法

    一个开源的x86模拟器中的键盘宏 我看不懂对应的代码,我只知道最终的宏_KEY_button这种形式的枚举,比如_KEY_ESCAPE对应的值是1,但是对于这个宏是怎么得出来的不懂,具体来说,第一行中 ...

  3. c语言define需要分号骂,C语言中define的用法

    C语言中define的用法 2016-01-06 15:00  来源: 博客园 define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便. 预处理命令以"#& ...

  4. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  5. c语言数组中define,c语言中#define的用法

    c语言中#define的用法 C语言中,可以用 #define 定义一个标识符来表示一个常量.其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了. 预编译又叫预处理.预编译 ...

  6. #define c# 报错_c语言中#define的用法

    c语言中#define的用法 C语言中,可以用 #define 定义一个标识符来表示一个常量.其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了. 预编译又叫预处理.预编译 ...

  7. java可以使用c语言中的输入,c语言中的scanf在java中应该怎么表达,Scanner类。

    1 java是面向对象的语言 它没有像C语言中的scanf()函数,但是它的类库中有含有scanf功能的函数 2 java.util包下有Scanner类 Scanner类的功能与scanf类似 3 ...

  8. sort在c语言中的作用,c语言中sort的用法详解.docx

    c语言中sort的用法详解.docx C语言中SORT的用法详解C语言的学习很多是比较复杂的,那么C语言中SORT的用法的用法你知道吗下面学习啦小编就跟你们详细介绍下C语言中SORT的用法的用法,希望 ...

  9. c语言用string类型,c语言中的string

    1. strlen(char const* s); 函数传入的是c风格字符串(即以'\0'结尾的字符数组),返回的长度为size_t(即unsigned int),其长度不包括'\0'. 2. str ...

最新文章

  1. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
  2. MYSQL 创建用户1290错误_rhel6 mysql skip-grant-tables 添加用户报错 ERROR 1290
  3. Docker 入门终极指南:边学边用
  4. 1105 Spiral Matrix (25 分)【难度: 一般 / 知识点: 模拟】
  5. 分布式锁的3种实现(数据库、缓存[redis]、Zookeeper)
  6. linux ls的所有参数,Linux ls命令参数详解
  7. 我的博客今天6岁298天了,我领取了元老博主徽章
  8. Java 习题(面向对象)
  9. 基于JAVA+SpringMVC+MYSQL的在线英语精品课程视频教学平台
  10. oracle突然挂了服务全部消失,OracleService服务不见了|OracleServiceXE服务没有了
  11. 华为2288H V5服务器安装win_server_2016问题解决过程
  12. 为什么机器学习行业的发展离不开 “开源”
  13. dlna 斐讯r1怎么用_挽救智障——斐讯R1:固件升级、安装DLNA和Soundwire
  14. 控制工程实践(7)——PID四种类型控制器(之比例控制器P)
  15. 使用 Charles 对 Android 设备进行 Https 抓包
  16. 如何下载macOS Ventura、Monterey、Big Sur、Catalina Mojave完整安装程序
  17. java里面怎么开根号_新手求解呀!!!!!!!怎么开根号,为嘛我开不了
  18. 甲骨文中间件与主数据管理平台
  19. 普通数字到科学计数法的转换
  20. RTX Excption integer divided by zero at loc (proc= thread=)Process image has been *unloaded

热门文章

  1. 形式语言与自动机——第三章 上下文无关文法与下推自动机
  2. 2020数学建模医疗和养老保障问题解决办法
  3. php学到最后,【A0365】[PHP视频教程]新开班布尔教育最后一期PHP 入门到实战视频教程 百度云 网盘...
  4. 8.22 问题 B: 海岛争霸
  5. 春日里有skycc营销软件相陪
  6. Solaris 11中配置基于link的IPMP
  7. vue实现app下载页面,微信提示,自动识别安卓IOS
  8. sqli-labs第四关
  9. numpy ndarray嵌套ndarray浅显理解
  10. 企业如何选择合适的精益生产方案?