编写一个c程序来控制LED闪烁,通过iic总线,就是sbit sda....sbit scl.... 求告知 应该怎么编写??

编写一个c程序来控制LED闪烁,通过iic总线,就是sbit sda....sbit scl.... 求告知 应该怎么编写??,第1张

有一个51单片机的

/**************************************************************************************

*                LED闪烁的简单试验              *

*

*     连接方法: JP11(P2)和JP1用8PIN排线连接起来              *

*                       *

***************************************************************************************/

#include <reg51.h>    //此文件中定义了51的一些特殊功能寄存器

void delay(unsigned int i)  //声明延时函数

main()

{

P1  = 0x00 //置P0口为低电平

delay(600) // 调用延时程序

P1  = 0xff //置P0口为高电平

delay(600) // 调用延时程序

}

/*******延时函数*************/

void delay(unsigned int i)

{

unsigned char j

for(i i > 0 i--)

for(j = 255 j > 0 j--)

}

单片机是连线

在SCL程序编写中,在逻辑控制或者数据处理分析中,有一类指令我们用得最多,就是程序控制指令,常见的入IF ,Case ,For 和While 等。下面我仔细的讲解,有疑问可以留言提出:

图1 程序控制指令

IF .. THEN 指令

IF 指令含有含有三个分支,分别是Then ,Else 和ElsIF。

图2 IF 语句

图3 浮点数比较条件

IF语句应该是SCL里面最常用的语句了,常用于条件判断。判断类型可以是BOOL类型,可以是浮点类型等等,基本上所有类型都可以判断,只要比较的两个变量类型是一样。

在图2中,AByte 是Byte 类型,因为1在0..255之间,所以1会自动转化为Byte类型。如果比较的是Abyte类型是256,会是什么样子呢?读者可以自己写的程序,试验一下,看看结果,会加深你对数据类型的理解。

上面程序中,首先比如AByte是否和1相等,如果相等则Outvalue的值为1,然后和2比较,如果和2相等,那么OuValue值为2,如果都满足条件OuValue 的输出值则为5。

上述的IF条件语句,也可以用CASE语句来进行表示。CASE的比较类型没有IF 范围广,只有整形才能做为比较条件。

CASE指令

图4 IF语句的CASE表达方式

从CASE语句表述中,我们发现语句相对于IF表达式来说,更加清晰简单明了,所以如果需要用到整形条件作为判断,尽量用CASE来实现,会提高效率。

FOR 指令

FOR指令常用来对数组类型数据进行批量处理,在上一期讲解中已经举过一个例子,下面举个稍微复杂点的例子。

图5 FOR循环语句

在FOR程序,我们对数组的每一个索引值进行赋值,同时判断索引值的奇偶性来进行赋值 *** 作。

图6 FOR循环语句2

在上面的程序里面,我们发现有一个关键字Continue .当FOR循环执行到该语句的时候,Continue下面的程序都不会执行。所以,当iCout小于15的时候,AArray[iCount]:=iCount赋值语句不会执行。

还有一个地方有点区别,就是FOR 语句后面,多了一个关键字 BY 。BY的含义是For 执行的间隔按照BY的设定来执行。如果后面设定为1,则0..99全部执行;如果设定为2,则执行顺序为0,2,4,6,8的顺序来执行。

上述的FOR循环语句,我们同样可以采用WHILE循环来实现。

WHILE 指令

图7 WHILE指令

WHILE循环的表达方式和FOR循环基本类型,但是我们注意一点,这里面对循环变量,手动进行进行递进。如果没有这一句,iCount的值一直为0,循环条件iCount<100将一直为True,WHILE循环会一直执行。所以切记一定执行该语句。

我们还注意到一个关键字EXIT,当执行到该指令的时候,WHILE循环会停止执行,FOR指令也是一样。所以上面的程序,运行下来的情况是,数组的赋值只执行到AArray[81]结束。

GOTO指令

goto指令主要用来执行跳转过程,可以带来程序 *** 作的便利性,一般不推荐使用。若 *** 作不当,则会打乱整个程序的逻辑性。

在图7 中,如果iCount 大于90,那么,程序就会跳出WHILE 循环执行指定标签lable13地方程序#iCount=0,继续从头开始执行WHILE循环。当然这个 *** 作是毫无意义的,这里只是举个例子而已。

scl意思如下:

SCL作为英文缩写,具有多项意义。

如源程序清单、安全检查表、硬皮病、结构化控制语言、皮肤传导水平、标准及校正实验所、森马船务公司、I2C时钟信号、软性接触镜等。

补充

概念

SCL是一个以三人为首的游戏制作小组。主要的制作成果有“竟乐赛车岛”,但还没有任何公测的消息,还在内测中。

源程序清单

SCL(Source list),源程序清单。

结构化

SCL(Structured Control Language),结构化控制语言。

结构化控制语言编程结构和C语言和Pascal语言相似,特别适合于习惯于使用高级语言编程的人使用。SCL程序可以在CPU314及其以上的S7(包括400)中运行。

软性接触镜

SCL(软性角膜接触镜的简称)。

变电站

变电站配置描述语言

(Substation Configuration Language)

变电站配置语言SCL是IEC61850采用的变电站专用描述语言,基于XML1.0。它采用可扩展的标记语言清楚地描述变电站IED设备、变电站系统和变电站网络通信拓扑结构的配置。

使用SCL能够方便地收集不同厂家设备的配置信息并对设备进行配置,使系统维护升级、智能电子器件控制变得更为简单易行。使用SCL形成标准的IED数据传输文件,可以避免协议转换的开销,同时大大减少数据集成和维护的成本。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11557778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存