自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 回调函数

函数 F1 调用函数 F2 的时候,函数 F1 通过参数给 函数 F2 传递了另外一个函数 F3 的指针,在函数 F2 执行的过程中,函数F2 调用了函数 F3,这个动作就叫做回调(Callback),而先被当做指针传入、后面又被回调的函数 F3 就是回调函数。

2023-04-24 13:11:09 138

原创 Blinker点灯科技函数意思

发送按键当前的状态(多用于开关模式下反馈开关状态), 并将以上设置一并发送到APP。设置按键中显示的图标(icon), 图标列表及对应图标名称见。注册按键的回调函数, 当收到指令时会调用该回调函数。设置按键中显示图标的颜色, HTML颜色表。设置按键中显示的名字或者描述。

2023-04-24 12:56:26 1082

原创 定时/计数器初始化设定

晶体振荡12次为一个机器周期。11.0592M的晶振每秒可产生0.9216M(11.0592/12)个机器周期,50ms就需要46080个/秒(50ms*0.9216M)机器周期定时器在方式1工作,是16位计数器,最大值为65536(216),所以需设置初值19456 = 65536 - 46080,即4C00H(方式一为16位,所以是65536(216),方式二位13位,所以是8192(213)。)所以TH0=0x4c,TL0=0x00。TH0=(65536- 所需计数次数)/256 = 初值

2021-08-15 19:35:35 2896

原创 延时程序——笔记

第一种void delay(unsigned int xms) // xms代表需要延时的毫秒   {   unsigned int x,y;   for(x=xms;x>=0;x--)   for(y=110;y>=0;y--);//y=110是根据所用单片机的晶振频率来计算的,x每减一次y需要执行110次。   }第二种void delay500ms(void){ unsigned char i,j,k; for(i=15;i

2021-08-15 19:33:17 808

原创 中断——笔记

中断是指CPU在处理事件A时,发生了事件B请求CPU立刻去处理(中断发生或中断请求);CPU暂时停止当前的工作(中断响应),转而去处理事件B(中断服务),待CPU处理事件B完成后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。一、中断结构一般有五部分组成外部中断0(INT0)、外部中断1(INT1)、定时器0(TF0),定时器1(TF1),串口中断(RI)二、中断请求标志位TCON低4位用于控制外部中断,高4位用于控制定时/计数器的启动和中断申请。IT0,IT1是外部中断0、1的触发

2021-08-15 19:11:39 735

原创 基于三极管的电平转换电路

在51单片机和8266通信过程中遇到一个问题,51单片机输出5V电压,8266输入3.3V电压。单片机认为5V左右的电压表示“1”;8266认为3.3V左右的电压表示“1”。即两个板子对于高电平的定义不一样,不能直接通信,这中间就需要一个翻译。 当三极管的发射结导通以后,集电极与发射极之间会有电子流动,形成通路。饱和时集电极与发射极之间的电压Vce最低只有几十毫伏,可以忽略不计,所以把输入电平接到三极管的基极。 对于NPN型的三极管,把电源正极连接集电极,电源地连接发射极。然后从集电极引出输出电..

2021-08-08 13:34:46 2749

原创 变换指令——BCD、BIN

BCD指令:把二进制转换成十进制MOV K58 D1BCD D1 K2Y0通过MOV指令,把十进制58存储到D1,且D1自动变成58的二进制111010,此时D1的值为111010,BCD指令把二进制111010所代表的十进制数58通过8421BCD编码重新改成二进制,此时Y7~Y0为01011000,但当我们监测的时候K2Y0显示的不是58,是因为系统把01011000当成正常二进制转换十进制,所以会显示88(01011000),但不用管他。K1Y0:Y0Y1Y2Y3K2Y0:Y0Y1Y2Y3Y

2021-07-16 21:13:08 3241

原创 运算指令——ADD、SUB、MUL、DIV

ADD指令:加法ADD S1 S2 DDADD S1 S2 D,D+1SUB指令:减法SUB S1 S2 DDSUB S1 S2 D,D+1MUL:乘法MUL S1 S2 DDMUL S1 S2 D,D+1,D+2,D+3DIV:除法DIV S1 S2 D,D1ADD,SUB输出16位,占一个DADD,DSUB输出32位,占两个MUL,DIV输出32位,占两个DMUL,DDIV输出64位,占四个...

2021-07-15 23:15:16 19024

原创 传输指令——MOV、FMOV、BMOV、SMOV、SWAP

传输指令:MOV(16位) DMOV (32位)MOV S D把S的值传输给D。MOVP、DMOVP表示传输指令上升沿出发。例:MOV K5 D0,把5传输给D0,传输后D0存储5的二进制。

2021-07-15 21:36:46 38681

原创 比较指令——CMP、ZCP、触点比较

CMP指令:比较两个值的大小,将不同结果输出,CMP(16位) DCMP(32位)。|—| X001 |—————— [CMP D1 D2 Y0]虽然写着对Y0输出,但其实占用了Y0,Y1,Y2三个输出点。对D1和D2比较:D1>D2,Y0=1;D1=D2,Y1=1;D1<D2,Y2=1;即如果写着第a个点,那么占用a,a+1,a+2三个触点。当触发CMP指令的X1失电时,Y0,Y1,Y2任保持X1失电前的状态。若此时D1=D2,即Y1得电,这时X1失电了,那么PLC任

2021-07-15 01:27:53 7667

原创 数据存储类型

一、进制二进制用2#表示,十六进制用16#表示,可以加前缀如B16#表示十六进制的字节,W16#表示十六进制的字,DW16#表示十六进制的双字。二、类型位(Bit)1位字节B 8位字W 16位双字DW 32位整数(Int)16位双精度整数(DInt)32位实数(Real)32位字符串(String)8位三、地址V是变量存储器,M是内部存储器MD:双字地址MW:字地址MB:字节地址M:位地址1MD=2MW=4MB=32M变量存储器V也同理。

2021-04-01 22:28:01 648

原创 PLC输入输出

一、输入“1M”为输入端的公共端子,与DC24V连接,有PNP、NPN两种方式PNP:“1M”接负,“N”和“L1”为交流电的输入端子,接AC120V~220V,给PLC供电。NPN:“1M”接正,“M”和“L+”为输入端子,接DC24V,“L+”接正,“M”接负,给PLC供电。区分:电流先经过开关为PNP,电流先经过PLC为NPN。二、输出输出有两种形式,晶体管输出和继电器输出标注“CPUST(DC/DC/DC)”:第一个DC表示直流24V供电,第二个DC表示输入电源直流24V,第三个DC表

2021-04-01 21:32:06 10271

转载 extern的用法——笔记

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。能够被其他模块以extern修饰符引用到的变量通常是全局变量。还有很重要的一点是,extern int v可以放在a.c中的任何地方,比如你可以在a.c中的函数fun定义的开头处声明extern int v,然后就可以引用到变量v了,只不过这样

2021-01-17 15:44:55 133

原创 #ifndef和#define——笔记

#ifndef和#define

2021-01-17 11:14:41 5945 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除