<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dlf1769的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/dlf1769</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; dlf1769]]></copyright><item><title><![CDATA[51单片机跳转指令]]></title><link>https://blog.csdn.net/dlf1769/article/details/106589802</link><guid>https://blog.csdn.net/dlf1769/article/details/106589802</guid><author>dlf1769</author><pubDate>Sat, 06 Jun 2020 16:42:02 +0800</pubDate><description><![CDATA[@ 无条件转移bai指令（共4条）
LJMP addr16 ； PC〈—du— addr16
AJMP addr11 ； PC〈—— PC+2 ， PC10-0〈—— addr11
SJMP rel ； PC〈—— PC+2 ， PC 〈—— PC+rel
JMP @A+DPTR ； PC〈—— A+DPTR
第一条指zhi令称为长转移指令（Long Jump）；
第二条指令叫作绝对转移指令（Absolute Jump）；
第三条指令称作短转移指令（Short Jump）；
第四条指令是变址寻址转移指令（散]]></description><category></category></item><item><title><![CDATA[图解I2C写法]]></title><link>https://blog.csdn.net/dlf1769/article/details/90601544</link><guid>https://blog.csdn.net/dlf1769/article/details/90601544</guid><author>dlf1769</author><pubDate>Mon, 27 May 2019 13:23:07 +0800</pubDate><description><![CDATA[标准I2c是从高位到低位发送







//IO 口模拟起始信号
//产生起始信号
void I2C_Start(void)
{
  I2C_SDA_OUT(); //对于有准双向的IO口，可以不设置SDA的输入输出模式。比如51单片机。

  I2C_SDA_H;
  I2C_SCL_H;
  delay_us(5);
  I2C_SDA_L;
...]]></description><category></category></item><item><title><![CDATA[矩阵键盘]]></title><link>https://blog.csdn.net/dlf1769/article/details/90599686</link><guid>https://blog.csdn.net/dlf1769/article/details/90599686</guid><author>dlf1769</author><pubDate>Mon, 27 May 2019 11:05:19 +0800</pubDate><description><![CDATA[矩阵键盘的原理及应用 - MARS的博客 - CSDN博客 https://blog.csdn.net/qq_40642465/article/details/80334530

矩阵键盘原理图：



第一行的行控制线接到p17，第二行的行控制线接到p16，第三行的行控制线接到p15，第4行的行控制线接到p14
第一列的列控制线接到p13，第二列的列控制线接到p12，第三列的列控制线接到p11，...]]></description><category></category></item><item><title><![CDATA[inet_aton、inet_addr和inet_ntoa]]></title><link>https://blog.csdn.net/dlf1769/article/details/79429116</link><guid>https://blog.csdn.net/dlf1769/article/details/79429116</guid><author>dlf1769</author><pubDate>Sat, 25 May 2019 15:50:34 +0800</pubDate><description><![CDATA[地址转换函数：

inet_addr&amp; inet_network

inet_aton &amp; inet_ntoa 和 和inet_pton &amp; inet_ntop

1、先了解一下需要用到的数据类型。


typedef uint32_t in_addr_t;

in_addr_t这个类型保存的数据，到底是按本机字节序保存的，还是网络字节序保存的，这是不确定的...]]></description><category></category></item><item><title><![CDATA[STM8库函数开发资源和基本步骤摘要]]></title><link>https://blog.csdn.net/dlf1769/article/details/90483396</link><guid>https://blog.csdn.net/dlf1769/article/details/90483396</guid><author>dlf1769</author><pubDate>Thu, 23 May 2019 16:49:46 +0800</pubDate><description><![CDATA[1、EWstm8多个版本下载


IAR EWSTM8系列教程01_IAR介绍、下载、安装和注册 - 知乎 https://zhuanlan.zhihu.com/p/42499895
下载地址：https://pan.baidu.com/s/1slF5kYx#list/path=%2F https://pan.baidu.com/s/1slF5kYx#list/path=%2F


...]]></description><category></category></item><item><title><![CDATA[switch case、goto对变量定义的影响]]></title><link>https://blog.csdn.net/dlf1769/article/details/79378684</link><guid>https://blog.csdn.net/dlf1769/article/details/79378684</guid><author>dlf1769</author><pubDate>Mon, 26 Feb 2018 16:25:05 +0800</pubDate><description><![CDATA[dingmz_frc的博客http://blog.163.com/dingmz_frcmyblog/blog/static/217304023201372085320739/在使用switch case和goto时感觉很开心，程序跳来跳去，不用再无脑的执行运行了！但是，如果不懂其原理，则很容易出错！而且很奇葩的错误哦。说明：这篇文章的分类是C++，所以特此声明这里提到的规则只适用于C++。对于C语...]]></description><category></category></item><item><title><![CDATA[linux kernel中的变长参数宏]]></title><link>https://blog.csdn.net/dlf1769/article/details/79224180</link><guid>https://blog.csdn.net/dlf1769/article/details/79224180</guid><author>dlf1769</author><pubDate>Thu, 01 Feb 2018 09:29:35 +0800</pubDate><description><![CDATA[http://blog.163.com/kmustchenb@126/blog/static/1109057652012122111549895/
1 函数声明
　　 首先，要实现类似printf()的变参函数，函数的最后一个参数要用 ... 表示，如
　　 int log(char * arg1, ...)
　　这样编译器才能知道这个函数是变参函数。这个参数与变参函数的内部实现完全没有关]]></description><category></category></item><item><title><![CDATA[linux write 函数 是否是 线程安全的？]]></title><link>https://blog.csdn.net/dlf1769/article/details/79125090</link><guid>https://blog.csdn.net/dlf1769/article/details/79125090</guid><author>dlf1769</author><pubDate>Mon, 22 Jan 2018 08:23:33 +0800</pubDate><description><![CDATA[http://bbs.chinaunix.net/thread-4187636-1-1.html
我做了两个实验：

第一个实验，创建一个本地文件，然后用5个线程对这个文件进行写入，结果前面的写入内容被后面的写入内容覆盖；对write函数加锁之后结果就正常了，就似乎验证了write函数是非线程安全的。

第二个实验，创建一个客户端的TCP socket，然后用5个线程对这个socket进]]></description><category></category></item><item><title><![CDATA[indent 之后很多^M]]></title><link>https://blog.csdn.net/dlf1769/article/details/79076905</link><guid>https://blog.csdn.net/dlf1769/article/details/79076905</guid><author>dlf1769</author><pubDate>Tue, 16 Jan 2018 17:02:46 +0800</pubDate><description><![CDATA[Vim里常见的几个不可见字符：
^@ = 0x00 Null值
^I = 0x09 水平制表
^J = 0x0A 换行

^M = 0x0D 回车




先要替换掉ubuntu自带的反人类的vim-tiny
命令如下：
卸载：sudo apt-get remove vim-common
然后安装：sudo apt-get installl vim



一次从网]]></description><category></category></item><item><title><![CDATA[Makefile中的$@, $^, $< , $?, $%, $+, $*]]></title><link>https://blog.csdn.net/dlf1769/article/details/78997967</link><guid>https://blog.csdn.net/dlf1769/article/details/78997967</guid><author>dlf1769</author><pubDate>Sun, 07 Jan 2018 21:51:35 +0800</pubDate><description><![CDATA[http://blog.csdn.net/Jeffrey0000/article/details/12421317


记性不好，多写博客

 

$@  表示目标文件
$^  表示所有的依赖文件
$
$?  表示比目标还要新的依赖文件列表

 

$% 仅当目标是函数库文件中，表示规则中的目标成员名。例如，如果一个目标是“foo.a(bar.o)”，那么，“$%”就是]]></description><category></category></item><item><title><![CDATA[如何获取byte的各个bit值以及常见位操作]]></title><link>https://blog.csdn.net/dlf1769/article/details/78918152</link><guid>https://blog.csdn.net/dlf1769/article/details/78918152</guid><author>dlf1769</author><pubDate>Thu, 28 Dec 2017 08:56:32 +0800</pubDate><description><![CDATA[如何获取byte的各个bit值以及常见位操作
https://www.cnblogs.com/Joanna-Yan/p/5080935.html



项目中通过信号采集板的数据获取车上仪表盘指示灯的信息，将接收到的数据转成byte后，还要将每一个Byte的各个Bit值分离出来，这样才知道每个bit的值代表的具体信息。这里记录下如何获取byte的各个bit值，一些常见的位操作也顺便记录下]]></description><category></category></item><item><title><![CDATA[Cjson中pow2gt函数简单分析]]></title><link>https://blog.csdn.net/dlf1769/article/details/78918045</link><guid>https://blog.csdn.net/dlf1769/article/details/78918045</guid><author>dlf1769</author><pubDate>Thu, 28 Dec 2017 08:35:17 +0800</pubDate><description><![CDATA[Cjson中pow2gt函数简单分析

2016年10月13日作者：cstriker1407
暂无评论



最近看了下cjson，发现里面有个比较好玩的函数







static int pow2gt
 (int x)









{  
 --x;    x|=x>>1;  x|=x>>2;  x|=x>>4;  x|=x>>8]]></description><category></category></item><item><title><![CDATA[信号量、互斥锁、条件变量的区别]]></title><link>https://blog.csdn.net/dlf1769/article/details/78904950</link><guid>https://blog.csdn.net/dlf1769/article/details/78904950</guid><author>dlf1769</author><pubDate>Tue, 26 Dec 2017 17:52:26 +0800</pubDate><description><![CDATA[来自：http://blog.chinaunix.net/space.php?uid=23061624&do=blog&cuid=2127853
 
信号量用在多线程多任务同步的，一个线程完成了某一个动作就通过信号量告诉别的线程，别的线程再进行某些动作（大家都在semtake的时候，就阻塞在哪里）。而互斥锁是用在多线程多任务互斥的，一个线程占用了某一个资源，那么别的线程就无法访问，直到这个线程]]></description><category></category></item><item><title><![CDATA[一个常见的错误pthread_create()的参数]]></title><link>https://blog.csdn.net/dlf1769/article/details/78889973</link><guid>https://blog.csdn.net/dlf1769/article/details/78889973</guid><author>dlf1769</author><pubDate>Mon, 25 Dec 2017 10:32:33 +0800</pubDate><description><![CDATA[LINUX 传递‘pthread_create’的第 3 个参数时在不兼容的指针类型间转换
LINUX SUSE SP4环境gcc编译报标题的警告，执行时报段错误
代码如下
void * xxx(int *xa)
{
...
}
int main(int argc, char* argv[])
{
...
int xxa;
pthread_create(&threadID, ]]></description><category></category></item><item><title><![CDATA[在不知道json格式的情况下如何使用cjson进行解析]]></title><link>https://blog.csdn.net/dlf1769/article/details/78875193</link><guid>https://blog.csdn.net/dlf1769/article/details/78875193</guid><author>dlf1769</author><pubDate>Fri, 22 Dec 2017 17:09:54 +0800</pubDate><description><![CDATA[在不知道json格式的情况下如何使用cjson进行解析转载自：https://www.cnblogs.com/fengbohello/p/4537436.html

假设我们有一个json字符串，但是我们不知道这个json的组织方式，那么如何进行解析呢，下面就给一个小例子。

1、我们的json串如下：



假设我们有一个json字符串，但是我们不知道这个json的组织方式，那么]]></description><category></category></item><item><title><![CDATA[理解端口复用（四元组）]]></title><link>https://blog.csdn.net/dlf1769/article/details/78786775</link><guid>https://blog.csdn.net/dlf1769/article/details/78786775</guid><author>dlf1769</author><pubDate>Tue, 12 Dec 2017 22:12:42 +0800</pubDate><description><![CDATA[唯一能够确定一个连接有4个东西：
1. 服务器的IP
2. 服务器的Port
3. 客户端的IP
4. 客户端的Port

服务器的IP和Port可以保持不变，只要客户端的IP和Port彼此不同就OK了。
一个socket是可以建立多个连接的，为了阐释这个概念，你应该先明白一个TCP连接的标记为一个四元组
(source_ip, source_port, destination_i]]></description><category></category></item><item><title><![CDATA[linux C 正则表达式函数库]]></title><link>https://blog.csdn.net/dlf1769/article/details/78709075</link><guid>https://blog.csdn.net/dlf1769/article/details/78709075</guid><author>dlf1769</author><pubDate>Mon, 04 Dec 2017 13:57:43 +0800</pubDate><description><![CDATA[Linux下C语言正则表达式使用详解 - Google Chrome (2013/5/2 16:40:37)

Linux下C语言正则表达式使用详解

2012年6月6日Neal627
 views发表评论阅读评论




标准的C和C++都不支持正则表达式，但有一些函数库可以辅助C/C++程序员完成这一功能，其中最著名的当数Philip Hazel的Perl-Compatib]]></description><category></category></item><item><title><![CDATA[一篇文章完全搞清楚 scoket read/write 返回码、阻塞与非阻塞、异常处理 等让你头疼已久的问题]]></title><link>https://blog.csdn.net/dlf1769/article/details/78706054</link><guid>https://blog.csdn.net/dlf1769/article/details/78706054</guid><author>dlf1769</author><pubDate>Mon, 04 Dec 2017 09:08:39 +0800</pubDate><description><![CDATA[【Netwo





 
 

浅谈TCP/IP网络编程中socket的行为
 


我认为，想要熟练掌握Linux下的TCP/IP网络编程，至少有三个层面的知识需要熟悉：

1. TCP/IP协议（如连接的建立和终止、重传和确认、滑动窗口和拥塞控制等等）
2. Socket I/O系统调用（重点如read/write），这是TCP/IP协议在应用层表现出来的行为]]></description><category></category></item><item><title><![CDATA[SecureCRT连接虚拟机中的Linux系统(Ubuntu)]]></title><link>https://blog.csdn.net/dlf1769/article/details/78704772</link><guid>https://blog.csdn.net/dlf1769/article/details/78704772</guid><author>dlf1769</author><pubDate>Sun, 03 Dec 2017 22:02:17 +0800</pubDate><description><![CDATA[SecureCRT连接虚拟机中的Linux系统(Ubuntu)




[日期：2015-05-05]
来源：Linux社区  作者：xuliangxing
[字体：大 中 小]










　　最近在学习Linux，看了网上很多SecureCRT连接本地虚拟机当中的Linux系统，很多都是需要设置Linux的配置文件，有点繁琐，所以自己就摸索了一下，把]]></description><category></category></item><item><title><![CDATA[Linux下patch的制作和应用]]></title><link>https://blog.csdn.net/dlf1769/article/details/78587032</link><guid>https://blog.csdn.net/dlf1769/article/details/78587032</guid><author>dlf1769</author><pubDate>Mon, 20 Nov 2017 21:44:02 +0800</pubDate><description><![CDATA[Linux下patch的制作和应用
转自：http://blog.chinaunix.net/u3/100239/showart_1984963.html

实例：https://blog.csdn.net/sahusoft/article/details/4401561
首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下，那样也没有必要。在99％的时间里，我们只会...]]></description><category></category></item></channel></rss>