资源预览内容
第1页 / 共49页
第2页 / 共49页
第3页 / 共49页
第4页 / 共49页
第5页 / 共49页
第6页 / 共49页
第7页 / 共49页
第8页 / 共49页
第9页 / 共49页
第10页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
时序ARM(32-B RISC)1 1第二章 1Wire通信协议n n概述概述n n标准模式和高速模式标准模式和高速模式n n复位脉冲复位脉冲n n写写0 0时隙时隙n n写写1 1时隙时隙n n读时隙读时隙n n强上拉供电时隙(为总线提供额外的电源电流,用于强上拉供电时隙(为总线提供额外的电源电流,用于EPROM/EEPROMEPROM/EEPROM编程、温度转换、编程、温度转换、SHA-1SHA-1计算等)计算等)2 21 概述n n单总线要求外接一个约5k的上拉电阻 ;3 31 概述n n单总线的闲置状态为高电平 ;n n传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态 ;n n总线保持低电平超过480s,总线上的所有器件将复位;n n位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态。4 42 单总线命令序列 n n主机发起读写命令并控制整个过程。主机发起读写命令并控制整个过程。n n读写命令分三个阶段:读写命令分三个阶段:初始化初始化ROMROM命令(跟随需要交换的数据)命令(跟随需要交换的数据) 功能命令(跟随需要交换的数据)功能命令(跟随需要交换的数据) 5 52 单总线命令序列n n每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机;n n这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。6 63.1 初始化序列n n主机初始化过程,主机通过拉低单总线至少主机初始化过程,主机通过拉低单总线至少480s480s,以产,以产生(生(TxTx)复位脉冲。接着,主机释放总线,并进入接收模)复位脉冲。接着,主机释放总线,并进入接收模式(式(RxRx)。)。n n当总线被释放后,当总线被释放后,5k5k上拉电阻将单总线拉高。在单总线器上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时件检测到上升沿后,延时15-60s15-60s,接着通过拉低总线,接着通过拉低总线60-60-240s240s,以产生应答脉冲,以产生应答脉冲 7 73.1 初始化序列MReset Pulse 480uSS0SN15uST60uS60uS4T240uS45uS3T180uSPresence PulseRecoveryPull UpMasterSlaveLegend:8 83.2 复位和应答脉冲n nunsigned char ow_reset(void)unsigned char ow_reset(void)n n n nunsigned char presence;unsigned char presence;n nDQ = 0; /pull DQ line lowDQ = 0; /pull DQ line lown ndelay(29); / leave it low for 480sdelay(29); / leave it low for 480sn nDQ = 1; / allow line to return highDQ = 1; / allow line to return highn ndelay(3); / wait for presencedelay(3); / wait for presencen npresence = DQ; / get presence signalpresence = DQ; / get presence signaln ndelay(25); / wait for end of timeslotdelay(25); / wait for end of timeslotn nreturn(presence); / presence signal returnedreturn(presence); / presence signal returnedn n / presence / presence9 94 读/写时隙n n在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据10104 读/写时隙 Write 1Write 0Read 1Read 015uS T 60uSMMSlave device(s) sample lineMMaster samples line at 15uSMS0 SN overdrive resistorT=0T=15T=60Slave device(s) sample linePull UpMasterSlaveLegend:11114.1 写时隙 n n存在两种写时隙:存在两种写时隙:“ “写写1 1” ”和和“ “写写0 0” ”。n n主机采用写主机采用写1 1时隙向从机写入时隙向从机写入1 1,而采用写,而采用写0 0时隙向从机写时隙向从机写入入0 0。n n写时隙至少需要写时隙至少需要60s60s,且在两次独立的写时隙之间至少需,且在两次独立的写时隙之间至少需要要1s1s的恢复时间。的恢复时间。n n产生写产生写1 1时隙的方式:主机在拉低总线后,接着必须在时隙的方式:主机在拉低总线后,接着必须在15s15s之内释放总线,由之内释放总线,由5k5k上拉电阻将总线拉至高电平;上拉电阻将总线拉至高电平;n n而产生写而产生写0 0时隙的方式:在主机拉低总线后,只需在整个时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少时隙期间保持低电平即可(至少60s60s)。)。n n在写时隙起始后在写时隙起始后15-60s15-60s期间,单总线器件采样总线电平期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,则逻辑状态。如果在此期间采样为高电平,则逻辑1 1被写入该器被写入该器件;如果为件;如果为0 0,则写入逻辑,则写入逻辑0 0 12124.2 写时序13134.3 写时序n nvoid write_bit(char bitval)void write_bit(char bitval)n n n nDQ = 0; / pull DQ low to start timeslotDQ = 0; / pull DQ low to start timeslotn nif(bitval=1) DQ =1; / return DQ high if write 1if(bitval=1) DQ =1; / return DQ high if write 1n ndelay(5);/ hold value for remainder of timeslotdelay(5);/ hold value for remainder of timeslotn nDQ = 1;DQ = 1;n n/ Delay provides 16s per loop, plus 24s/ Delay provides 16s per loop, plus 24sn nTherefore, delay(5) = 104sTherefore, delay(5) = 104s14144.4 写时序n nvoid write_byte(char val)void write_byte(char val)n n n nunsigned char i;unsigned char i;n nunsigned char temp;unsigned char temp;n nfor (i = 0; i 8; i+) / writes byte, one bit at a timefor (i = 0; i i; / shifts val right temp = vali; / shifts val right i i spaces spacesn ntemp &= 0x01; / copy that bit to temptemp &= 0x01; / copy that bit to tempn nwrite_bit(temp); / write bit in temp intowrite_bit(temp); / write bit in temp inton n n ndelay(5)delay(5)n n 15154.5 读时序 n n单总线器件仅在主机发出读时隙时,才向主机传输数单总线器件仅在主机发出读时隙时,才向主机传输数据据, ,在主机发出读数据命令后,必须马上产生读时隙,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。以便从机能够传输数据。n n读时隙至少需要读时隙至少需要60s60s,且在两次独立的读时隙之间至,且在两次独立的读时隙之间至少需要少需要1s1s的恢复时间。的恢复时间。n n每个读时隙都由主机发起,至少拉低总线每个读时隙都由主机发起,至少拉低总线1s1s。在主机。在主机发起读时隙之后,单总线器件才开始在总线上发送发起读时隙之后,单总线器件才开始在总线上发送0 0或或1 1。n n若从机发送若从机发送1 1,则保持总线为高电平;若发送,则保持总线为高电平;若发送0 0,则拉,则拉低总线。当发送低总线。当发送0 0时,从机在该时隙结束后释放总线,时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。从机发出由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间的数据在起始时隙之后,保持有效时间15s15s,因而,因而,主机在读时隙期间必须释放总线,并且在时隙起始后主机在读时隙期间必须释放总线,并且在时隙起始后的的15s15s之内采样总线状态。之内采样总线状态。 16164.6 读时序17174.7 读时序n nunsigned char read_bit(void)unsigned char read_bit(void)n n n nunsigned char i;unsigned char i;n nDQ = 0; / pull DQ low to start timeslotDQ = 0; / pull DQ low to start timeslotn nDQ = 1; / then return highDQ = 1; / then return highn nfor (i = 0; i 3; i+); / delay 15s fromfor (i = 0; i 3; i+); / delay 15s fromn nstart of timeslotstart of timeslotn nreturn(DQ); / return value of DQ linereturn(DQ); / return value of DQ linen n 18184.7 读时序n nunsigned char read_byte(void)unsigned char read_byte(void)n n n nunsigned char i;unsigned char i;n nunsigned char value = 0;unsigned char value = 0;n nfor (i = 0; i 8; i+)for (i = 0; i 8; i+)n n n nif(read_bit() value| = 0 x 01i;if(read_bit() value| = 0 x 01i;n n/ reads byte in, one byte at a time and then/ reads byte in, one byte at a time and thenn n/ shifts it left/ shifts it leftn ndelay(6); / wait for rest of timeslotdelay(6); / wait for rest of timeslotn n n nreturn(value);return(value);19195 ROM命令n n主机检测到应答脉冲后,可以发出主机检测到应答脉冲后,可以发出ROMROM命令命令 ;n nROMROM命令与各个从机设备的唯一命令与各个从机设备的唯一6464位位ROMROM代码相代码相关;关;n n允许主机在单总线上连接多个从机设备时,指定允许主机在单总线上连接多个从机设备时,指定操作某个从机设备操作某个从机设备 ;n n允许主机能够检测到总线上有多少个从机设备以允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态及其设备类型,或者有没有设备处于报警状态 20205 ROM命令n n从机设备可能支持5种ROM命令(实际情况与具体型号有关);n n每种命令长度为8位;n n主机在发出功能命令之前,必须送出合适的ROM命令。如图2所示。下面将简要地介绍各个ROM命令的功能,以及使用在何种情况下 2121ROM命令的操作流程22225.1 ROM命令n n搜索ROMF0h ;n n读ROM33h(仅适合于单节点);n n 匹配ROM55h ;n n跳越ROMCCh ;n n报警搜索ECh(仅少数1-wire器件支持) ;2323(1) 搜索ROMF0hn n当系统初始上电时,主机必须找出总线上所有从当系统初始上电时,主机必须找出总线上所有从机设备的机设备的ROMROM代码,这样主机就能够判断出从机代码,这样主机就能够判断出从机的数目和类型的数目和类型; ;n n主机通过重复执行搜索主机通过重复执行搜索ROMROM循环(搜索循环(搜索ROMROM命令命令跟随着位数据交换),以找出总线上所有的从机跟随着位数据交换),以找出总线上所有的从机设备。设备。n n如果总线只有一个从机设备,则可以采用读如果总线只有一个从机设备,则可以采用读ROMROM命令来替代搜索命令来替代搜索ROMROM命令。命令。n n在每次执行完搜索在每次执行完搜索ROMROM循环后,主机必须返回至循环后,主机必须返回至命令序列的第一步(初始化)。命令序列的第一步(初始化)。2424(2) 读ROM33h n n仅适用于总线上只有一个从机设备;n n允许主机直接读出从机的64位ROM代码,而无须执行搜索ROM过程;n n如果该命令用于多节点系统,则发生数据冲突,因为每个从机设备都会响应该命令。2525(3) 匹配ROM55h n n匹配ROM命令跟随64位ROM代码,允许主机访问多节点系统中某个指定的从机设备。n n仅当从机完全匹配64位ROM代码时,才会响应主机随后发出的功能命令;n n其它设备将处于等待复位脉冲状态。 2626(4) 跳越ROMCCh n n主机能够采用该命令同时访问总线上的所有从机主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何设备,而无须发出任何ROMROM代码信息代码信息; ;n n例如,主机通过在发出跳越例如,主机通过在发出跳越ROMROM命令后跟随转换命令后跟随转换温度命令温度命令44h44h,就可以同时命令总线上所有的,就可以同时命令总线上所有的DS18B20DS18B20开始转换温度,这样大大节省了主机的开始转换温度,这样大大节省了主机的时间。时间。n n如果跳越如果跳越ROMROM命令跟随的是读暂存器命令跟随的是读暂存器BEhBEh的命令的命令(包括其它读操作命令),则该命令只能应用于(包括其它读操作命令),则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。而引起数据冲突。2727(5 ) 报警搜索EChn n只有那些报警标志置位的从机才响应该命令,其只有那些报警标志置位的从机才响应该命令,其工作方式完全等同于搜索工作方式完全等同于搜索ROMROM命令。命令。n n该命令允许主机设备判断那些从机设备发生了报该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。警(如最近的测量温度过高或过低等)。n n同搜索同搜索ROMROM命令一样,在完成报警搜索循环后,命令一样,在完成报警搜索循环后,主机必须返回至命令序列的第一步。主机必须返回至命令序列的第一步。28286 功能命令功能命令 n n在主机发出ROM命令后,发送功能命令;n n如访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20暂存器、启动温度转换以及判断从机的供电方式。并在图3流程图中作了说明 2929表1、DS18B20功能命令集命令命令描述描述命令代命令代码码发发送命令后,送命令后,单总线单总线上的响上的响应应信息信息注注释释温度温度转换转换命令命令转换转换温度温度启启动动温度温度转换转换44h44h无无1 1存存储储器命令器命令读暂读暂存器存器读读全部的全部的暂暂存器内容,包括存器内容,包括CRCCRC字字节节BEhBEhDS18B20DS18B20传输传输多达多达9 9个字个字节节至至主机主机2 2写写暂暂存器存器写写暂暂存器第存器第2 2、3 3和和4 4个字个字节节的数据(即的数据(即T TH H,T TL L和配置寄存器)和配置寄存器)4Eh4Eh主机主机传输传输3 3个字个字节节数据至数据至DS18B20DS18B203 3复制复制暂暂存器存器将将暂暂存器中的存器中的T TH H,T TL L和配置字和配置字节节复制到复制到EEPROMEEPROM中中48h48h无无1 1回回读读EEPROMEEPROM将将T TH H,T TL L和配置字和配置字节节从从EEPROMEEPROM回回读读至至暂暂存器中存器中B8hB8hDS18B20DS18B20传传送回送回读读状状态态至主至主机机30301. 在温度转换和复制暂存器数据至EEPROM期间,主机必须在单总线上允许强上拉。并且在此期间,总线上不能进行其它数据传输;2通过发出复位脉冲,主机能够在任何时候中断数据传输;3在复位脉冲发出前,必须写入全部的三个字节 功能命令功能命令流程图 31317 ROM搜索搜索n nROMROM搜索过程的三步循环程序搜索过程的三步循环程序 :读一位读一位读该位的补码读该位的补码写入一个期望的数据位写入一个期望的数据位n n总线主机在总线主机在ROMROM的每一位上都重复这三步循环程的每一位上都重复这三步循环程序;序;n n当完成某个器件后,主机就能够知晓该器件的当完成某个器件后,主机就能够知晓该器件的ROMROM信息;信息;n n剩下的设备数量及其剩下的设备数量及其ROMROM代码通过相同的过程即代码通过相同的过程即可获得可获得 。32327 ROM搜索过程 n n四个不同的器件被连接至同一条总线上 :ROM1 00110101ROM2 10101010ROM3 11110101ROM4 000100013333(1)初始化)初始化n n单总线上的所有传输过程都是以初始化开始的;n n初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成;n n应答脉冲使主机知道,总线上有从机设备,且准备就绪。3434(2)发送ROM命令n n主机在总线上发出ROM搜索命令 ROMF0h 3535(3)执行三步循环程序 n n从总线上准备读入一个数据位 ;ROM1 00110101ROM1 00110101ROM2 10101010ROM2 10101010ROM3 11110101ROM3 11110101ROM4 00010001ROM4 00010001总线上读到的是总线上读到的是0 0(逻辑(逻辑“ “与与” ” ) n n主机开始读另一位(第一位的补码 );总线上读到的是总线上读到的是0 0(逻辑(逻辑“ “与与” ” )总线上有些器件的总线上有些器件的ROMROM代码第一位为代码第一位为0 0,有些则为,有些则为1 1 3636(3)执行三步循环程序n n两次读到的数据位具有以下含义:00 在该位处,存在设备冲突;01 在该位处,所有器件为0;10 在该位处,所有器件为1;11 单总线不存在任何设备。3737(3)执行三步循环程序n n主机写入0,从而禁止了ROM2和ROM3响应余下的搜索命令,仅在总线上留下了ROM1和ROM4 ROM1 00110101ROM1 00110101ROM2 10101010ROM2 10101010ROM3 11110101ROM3 11110101ROM4 00010001ROM4 000100013838(4)搜索第二位n n主机再执行两次读操作,依次收到0和1,这表明ROM1和ROM4在ROM代码的第二位都是0;ROM1 00110101ROM1 00110101ROM2 10101010ROM2 10101010ROM3 11110101ROM3 11110101ROM4 00010001ROM4 00010001n n接着主机写入0,在总线上继续保持ROM1和ROM4 。3939(5)搜索第三位n n主机又执行两次读操作,收到两个0,表明所连接的设备的ROM代码在第三位既有0,也有1;ROM1 00110101ROM1 00110101ROM2 10101010ROM2 10101010ROM3 11110101ROM3 11110101ROM4 00010001ROM4 00010001n n主机再次写入0,从而禁止了ROM1响应余下的搜索命令,仅在总线上留下了ROM2 。4040(6)搜索第四位n n主机读完ROM4余下的ROM数据位。这样就完成了第一次搜索,并找到了位于总线上的第一个设备 。4141(7)搜索其他器件n n重复执行第重复执行第1 1至第至第7 7步,开始新一轮的步,开始新一轮的ROMROM搜索命令搜索命令 。n n主机写入主机写入1 1,使,使ROM4ROM4离线,仅在总线上留下离线,仅在总线上留下ROM1ROM1; n n主机读完主机读完ROM1ROM1余下的余下的ROMROM数据,这样就完成了第二次的数据,这样就完成了第二次的ROMROM搜索,找到了第二个搜索,找到了第二个ROMROM代码代码 。n n重复执行第重复执行第1 1至第至第3 3步,开始新一轮的步,开始新一轮的ROMROM搜索命令;搜索命令;n n主机写入主机写入1 1,这次禁止了,这次禁止了ROM1ROM1和和ROM4ROM4响应余下的搜索命响应余下的搜索命令,仅在总线上留下了令,仅在总线上留下了ROM2ROM2和和ROM3 ROM3 ROM1 00110101ROM1 00110101ROM2 10101010ROM2 10101010ROM3 11110101ROM3 11110101ROM4 00010001ROM4 0001000142428 搜索ROM时间n n每次搜索ROM操作,主机只能找到某一个单总线器件的ROM代码,所需要的最短时间为:n n960s+(8+364) 61s=13.16msn n所以,主机能够在1秒之内读出75个单总线的ROM代码 。4343利用串口实现1-WIRE通讯4444复位nnint ResetOneWire(void)int ResetOneWire(void)nn nn/define the response of the one-wire device/define the response of the one-wire devicennunsigned char ucResponse;unsigned char ucResponse;nnint ret;int ret;nnret=0;ret=0;nn/set the UART Baud:9600,8 bits,no parity,1 stop/set the UART Baud:9600,8 bits,no parity,1 stopnnBAUT=9600;BAUT=9600;nnComm_Init(COM,BAUT,MODE_NO,N);/init COMComm_Init(COM,BAUT,MODE_NO,N);/init COMnn/Transmitting an 0xF0 from uart forms the proper Reset pulse/Transmitting an 0xF0 from uart forms the proper Reset pulsennComm_Send_Char(COM,0xF0);Comm_Send_Char(COM,0xF0);nn/Check the UART buffer, if no devic is present,the receive value/Check the UART buffer, if no devic is present,the receive valuenn/will equal the transmit value;otherwise the receive value can vary./will equal the transmit value;otherwise the receive value can vary.nn/A single slave device running at minimum internal timing will change/A single slave device running at minimum internal timing will changenn/the response to 0xE0,and the maximum internal timing will change the/the response to 0xE0,and the maximum internal timing will change thenn/the response to 0x90/the response to 0x90nnucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);nn#if 0/TEST_ONEWIRE#if 0/TEST_ONEWIREnnprintf(Reset one wiren);printf(Reset one wiren);nnprintf(Reset value=0x%xn,ucResponse);printf(Reset value=0x%xn,ucResponse);nn#endif#endifnnif(ucResponse!=0xF0)if(ucResponse!=0xF0)nnret=1;/devices online are presentret=1;/devices online are presentnnelseelsennret=0;/no device is presentret=0;/no device is presentnn/set the UART Baud:115200,8 bits,no parity,1 stop/set the UART Baud:115200,8 bits,no parity,1 stopnnBAUT=115200;BAUT=115200;nnComm_Init(COM,BAUT,MODE_NO,N);/init COMComm_Init(COM,BAUT,MODE_NO,N);/init COMnnreturn ret;return ret;nn 4545读一位n nint OW_ReadBit(void)int OW_ReadBit(void)n n n nunsigned char ucResponse;unsigned char ucResponse;n n/transimit 0xFF first/transimit 0xFF firstn nComm_Send_Char(COM,0xFF);Comm_Send_Char(COM,0xFF);n n/read the UART buffer/read the UART buffern nucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);n nif(ucResponse=0xff)if(ucResponse=0xff)n nreturn 1;/1 is readreturn 1;/1 is readn nelseelsen nreturn 0;/0 is readreturn 0;/0 is readn n 4646读一个字节n nunsigned char OW_ReadByte(void)unsigned char OW_ReadByte(void)n n n n/define the read value/define the read valuen nunsigned char ucResponse;unsigned char ucResponse;n nunsigned char ucValue;unsigned char ucValue;n nint i;int i;n nucValue=0;ucValue=0;n nfor(i=0;i8;i+)for(i=0;i8;i+)n n n n/transimit 0xFF first/transimit 0xFF firstn nComm_Send_Char(COM,0xFF);Comm_Send_Char(COM,0xFF);n n/read the UART buffer/read the UART buffern nucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);n nif(ucResponse=0xff)if(ucResponse=0xff)n nucValue=ucValue | (0x1i);/1 is readucValue=ucValue | (0x1i);/1 is readn n/else 0 is read/else 0 is readn n n n/8-bits data is read and return/8-bits data is read and returnn nreturn ucValue;return ucValue;n n 4747写一位n nint OW_WriteBit(int data)int OW_WriteBit(int data)n n n nunsigned char ucResponse;unsigned char ucResponse;n n/transimit 0xFF first/transimit 0xFF firstn nif(data=0)if(data=0)n n n nComm_Send_Char(COM,0x00);Comm_Send_Char(COM,0x00);n n/read the UART buffer/read the UART buffern nucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);n nif(ucResponse!=0x00)if(ucResponse!=0x00)n nreturn 0;/ send failedreturn 0;/ send failedn n n nelseelsen n n nComm_Send_Char(COM,0xFF);Comm_Send_Char(COM,0xFF);n nucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);n nif(ucResponse!=0xFF)if(ucResponse!=0xFF)n nreturn 0;/send failedreturn 0;/send failedn n n n /success to write /success to writen n return TRUE; return TRUE;n n 4848写一个字节nnint OW_WriteByte(unsigned char ucData)int OW_WriteByte(unsigned char ucData)nn nn/define the read value/define the read valuennunsigned char ucResponse;unsigned char ucResponse;nnunsigned char ucValue;unsigned char ucValue;nnint i;int i;nnucValue=0;ucValue=0;nnfor(i=0;i8;i+)for(i=0;i8;i+)nn nn/the ith data will be transmited/the ith data will be transmitednnucValue=ucData;ucValue=ucData;nnucValue=(ucValue & (0x1i);ucValue=(ucValue & (0x1i);nnif(ucValue=0)/the bit is 0if(ucValue=0)/the bit is 0nn nn/send 0/send 0nnComm_Send_Char(COM,0x00);Comm_Send_Char(COM,0x00);nnucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);nnif(ucResponse!=0x00)if(ucResponse!=0x00)nn return FALSE;/transmitting error return FALSE;/transmitting errornn nnelse/the bit is 1else/the bit is 1nn nn/send 0xFF/send 0xFFnnComm_Send_Char(COM,0xFF);Comm_Send_Char(COM,0xFF);nnucResponse=Comm_Rec_Char(COM);ucResponse=Comm_Rec_Char(COM);nnif(ucResponse!=0xFF)if(ucResponse!=0xFF)nn return FALSE;/transmitting error return FALSE;/transmitting errornn nn nnreturn TRUE;/successreturn TRUE;/successnn 4949
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号