-
DS1302 的一条指令一个字节共 8 位,其中第 7 位(即最高位)固定为 1,这一位如果是0 的话,那写进去也是无效的。第 6 位是选择 RAM 还是 CLOCK 的,我前...
-
DS1302 我们前边也有提起过,是三根线,分别是 CE、I/O 和 SCLK,其中 CE 是使能线,SCLK 是时钟线,I/O 是数据线。前边我们介绍过了 SPI 通信,同学...
-
进行产品开发的时候,逻辑的严谨性非常重要,如果一个产品或者程序逻辑上不严谨,就有可能出现功能上的错误。比如我们 15.3.4 节里的这个程序,我们再回顾一下,当单片机定时器时间...
-
我们在前边学数据类型的时候,主要是字符型、整型、浮点型等基本类型,而学数组的时候,数组的定义要求数组元素必须是相同的数据类型。在实际应用中,有时候还需要把不同类型的数据组成一个...
-
共用体除非必要,否则我们不推荐使用,枚举的用法比较简单,在本书 19 章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使用。下边这个程序的功能是一个带日期的电子钟,相...
-
家电遥控器通信距离往往要求不高,而红外的成本比其它无线设备要低的多,所以家电遥控器应用中红外始终占据着一席之地。遥控器的基带通信协议很多,大概有几十种,常用的就有 ITT 协议...
-
DS18B20 是美信公司的一款温度传感器,单片机可以通过 1-Wire 协议与 DS18B20 进行通信,最终将温度读出。1-Wire 总线的硬件接口很简单,只需要把 DS1...
-
PCF8591 的通信接口是 I2C,那么编程肯定是要符合这个协议的。单片机对 PCF8591 进行初始化,一共发送三个字节即可。第一个字节,和 EEPROM 类似,是器件地址...
-
D/A 是和 A/D 刚好反方向的,一个 8 位的 D/A,从 0~255,代表了 0~2.55V 的话,那么我们用单片机给第三个字节发送 100,D/A 引脚就会输出一个 1...
-
有了 D/A 这个武器,我们就不仅仅可以输出方波信号了,可以输出任意波形了,比如正弦波、三角波、锯齿波等等。以正弦波为例,首先我们要建立一个正弦波的波表。这些不需要大家去逐一计...
-
RS232 标准是诞生于 RS485 之前的,但是 RS232 有几处不足的地方:
1. 接口的信号电平值较高,达到十几 V,使用不当容易损坏接口芯片,电平标...
-
我们前边学习 UART、I2C、SPI 这些通信协议,都是最底层的协议,是“位”级别的协议。而我们在学习 13 章做实用串口通信程序的时候,我们通过串口...
-
给从机下发不同的指令,从机去执行不同的操作,这个就是判断一下功能码即可,和我们前边学的实用串口例程是类似的。多机通信,无非就是添加了一个设备地址判断而已,难度也不大。我们找了一...
-
单片机的大部分指令,或者说单片机所做的大部分工作,多数在写入或读出寄存器。关于寄存器的初步概念我想我们已经建立起来了,它是一个能够存储8位二进...
-
时钟原理介绍
先来第一节,动态时钟的原理设计介绍以及时钟文化的介绍。
大家知道现今,高精度的计时工具大多数都使用了...
-
#define BYTE0(dwTemp) (*(char *)(&dwTemp))
#defin...
-
在《C语言深度剖析》这本书中留有一个问题,枚举变量的大小是多少?
1、大家猜一下下面这段程序粗体部分输出的结果是多少?
2、在printf(char *fmt.....
-
运算符的种类、优先级和结合性
C语言中运算符和表达式数量之多, 在高级语言中...
来自
C语言|by
期待 |发表时间 2015-09-17
|0个回复
-
我们已经看到程序中使用的各种变量都应预先加以说明,即先说明,后使用。对变量的说明可以包括三个方面:
&n...
来自
C语言|by
期待 |发表时间 2015-09-17
|0个回复
-
自己以前用结构体时,较少封装实现方法即:函数指针。这一点,造成了现在对于程序扩展起来有些捉襟见肘,这里以后要注意。
同时,函数参数也尽量使用结构体,这样避免函数接口...