书签 分享 收藏 举报 版权申诉 / 47
上传文档赚钱

类型C51程序设计方案2实例课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:3622433
  • 上传时间:2022-09-27
  • 格式:PPTX
  • 页数:47
  • 大小:1.10MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《C51程序设计方案2实例课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    C51 程序设计 方案 实例 课件
    资源描述:

    1、1-wire总线及应用总线及应用 一根数据线。设备(主机或从机)通过一个漏极开路一根数据线。设备(主机或从机)通过一个漏极开路端口,连接至该数据线,这样允许设备在不发送数据端口,连接至该数据线,这样允许设备在不发送数据时释放数据总线,以便总线被其它设备所使用。时释放数据总线,以便总线被其它设备所使用。1-1-wirewire总线端口为漏极开路,单总线要求外接一个约总线端口为漏极开路,单总线要求外接一个约5k 5k 的上拉电阻,这样单总线的闲置状态为高电平。的上拉电阻,这样单总线的闲置状态为高电平。主机对主机对1-Wire1-Wire总线的基本操作分为复位、读和写三种总线的基本操作分为复位、读和

    2、写三种,其中所有的读写操作均为低位在前,高位在后。,其中所有的读写操作均为低位在前,高位在后。典型的单总线命令序列典型的单总线命令序列第一步第一步 初始化;初始化;第二步第二步 ROM ROM 命令命令 跟随需要交换的数据;跟随需要交换的数据;第三步第三步 功能命令功能命令 跟随需要交换的数据;跟随需要交换的数据;实例:实例:DS18B20单线温度传感器单线温度传感器 主要特征 全数字温度转换及输出。1-wire总线数据通信。最高12位分辨率,精度可达土0.5摄氏度。12位分辨率,最大工作周期为750毫秒。检测温度范围为-55+125。内置EEPROM,限温报警功能。64位光刻ROM,内置产品

    3、序列号,方便多机挂接。多样封装形式,适应不同硬件系统。n DS18B20工作原理 三种形态的存储器资源 ROM 只读存储器,用于存放DS18B20ID编码。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据。RAM及EEPROM结构图:控制器对18b20操作流程 复位:给DS18B20单总线至少480uS的低电平信号。存在脉冲:复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。控

    4、制器发送ROM指令:ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。(一般只挂接单个18B20芯片时可以跳过ROM指令)控制器发送存储器操作指令:分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。n几种时间隙DS18B20复位及应答关系写时间隙读时间隙注意:必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。nDS18B20与单片机

    5、接法n 示例程序:void Init_DS18B20(void)/18b20初始化初始化 DQ=1;/DQ复位复位_nop_();_nop_();_nop_();DQ=0;/拉低拉低DQ delay(200);/约约600usDQ=1;/拉高总线拉高总线 delay(20);/75us,30:100us uchar Read_byte(void)/读一字节读一字节 uchar i=0;uchar dat=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();_nop_();_nop_();DQ=0;/从高拉到低,产生读时间隙从高拉到低,产生读时间隙_nop_();_nop_

    6、();/至少保持低电平至少保持低电平1us_nop_();_nop_();_nop_();_nop_();dat=1;/右移一位右移一位DQ=1;/15us内停止将内停止将DQ拉低拉低,15us内数据有效内数据有效_nop_();_nop_();/稍作延时稍作延时_nop_();_nop_();if(DQ)/若高电平若高电平 置置1dat|=0 x80;delay(30);/至少保持至少保持60us,100us,确保读数据成功确保读数据成功 DQ=1;/结束拉高结束拉高 return(dat);void Write_byte(uchar dat)/写一个字节写一个字节 uchar i=0;fo

    7、r(i=8;i0;i-)DQ=1;_nop_();_nop_();/稍作延时稍作延时 _nop_();_nop_();_nop_();_nop_();DQ=0;/拉低拉低DQ开始写开始写 _nop_();_nop_();_nop_();_nop_();/15us内释放总线内释放总线 _nop_();_nop_();_nop_();_nop_();DQ=dat&0 x01;/从从lsb开始开始 delay(20);/75us 至少需保持至少需保持60us写时间隙写时间隙dat=1;/右移一位右移一位DQ=1;/结束拉高结束拉高delay(4);uint Get_Temperature(void)

    8、/读温度函数读温度函数 uchar a=0;uchar b=0;uint t=0;Init_DS18B20();Write_byte(0 xCC);/只接一个只接一个18b20芯片,芯片,skip ROM Write_byte(0 x44);/温度转换温度转换 delay(200);/延时延时600us 等待转换完成等待转换完成,一般转换时间为一般转换时间为500us Init_DS18B20();Write_byte(0 xCC);/skip ROM Write_byte(0 xBE);/从从RAM读数据读数据 a=Read_byte();/先读低位先读低位 b=Read_byte();/再

    9、读高位再读高位 t=b8;t=t|a;/t为最后读得的数据为最后读得的数据 return(t);双向二线制串行通信总线,时钟线双向二线制串行通信总线,时钟线SCL,数据线数据线SDA。NXP 半导体(原半导体(原Philips 半导体)于半导体)于20 多年前发明。多年前发明。I2C总线是同步串行数据传输总线总线是同步串行数据传输总线。经常使用的带经常使用的带I2C总线通用外围器件有:总线通用外围器件有:SRAM、E2PROM、ADC/DAC、RTC、I/O口等。口等。带带I2C总线的外围设备模块有由总线的外围设备模块有由LED驱动控制器构成的驱动控制器构成的LED显示器,由各种显示器,由各种

    10、LCD驱动控制器构成的段式、字符驱动控制器构成的段式、字符点阵、图形点阵液晶显示器等。点阵、图形点阵液晶显示器等。I2C总线及应用总线及应用 I2C 总线的信号线总线的信号线 I2C 总线只需要由两根信号线组成,一根是串行数据线总线只需要由两根信号线组成,一根是串行数据线SDA,另一根是串行时钟线,另一根是串行时钟线SCL,均为为开漏结构,故总,均为为开漏结构,故总线上必须有上拉电阻线上必须有上拉电阻Rp,通常可选,通常可选510k。I2C总线时序定义:总线时序定义:起始条件和停止条件(起始条件和停止条件(START and STOP conditions)起始条件:当起始条件:当SCL 处于

    11、高电平期间时,处于高电平期间时,SDA 从高电平向低电平从高电平向低电平跳变时产生起始条件。总线在起始条件产生后便处于忙的状态跳变时产生起始条件。总线在起始条件产生后便处于忙的状态。起始条件常常简记为。起始条件常常简记为S。停止条件:当停止条件:当SCL 处于高电平期间时,处于高电平期间时,SDA 从低电平向高电平从低电平向高电平跳变时产生停止条件。总线在停止条件产生后处于空闲状态。跳变时产生停止条件。总线在停止条件产生后处于空闲状态。停止条件简记为停止条件简记为P。I2C 总线上数据的有效性(总线上数据的有效性(Data validity)数据线数据线SDA 的电平状态必须在时钟线的电平状态

    12、必须在时钟线SCL 处于高电平期处于高电平期间保持稳定不变。间保持稳定不变。SDA 的电平状态只有在的电平状态只有在SCL 处于低电处于低电平期间才允许改变。但是在平期间才允许改变。但是在I2C 总线的起始和结束时例外总线的起始和结束时例外。从机地址(从机地址(Slave Address)I2C 总线不需要地址译码器和片选信号。多个具有总线不需要地址译码器和片选信号。多个具有I2C 总线接口的器件都总线接口的器件都可以连接到同一条可以连接到同一条I2C 总线上,它们之间通过器件地址来区分。总线上,它们之间通过器件地址来区分。主机是主控器件,它不需要器件地址,其它器件都属于从机,要有器件主机是主

    13、控器件,它不需要器件地址,其它器件都属于从机,要有器件地址。必须保证同一条地址。必须保证同一条I2C 总线上所有从机的地址都是唯一。总线上所有从机的地址都是唯一。一般从机地址由一般从机地址由7 位地址位和一位读写标志位地址位和一位读写标志R/W 组成,组成,7 位地址占据高位地址占据高7 位,读写位在最后。读写位是位,读写位在最后。读写位是0,表示主机将要向从机写入数据;读写位,表示主机将要向从机写入数据;读写位是是1,则表示主机将要从从机读取数据。,则表示主机将要从从机读取数据。从机地址由一个固定和一个可编程的部分构成。从机地址的可编程部分从机地址由一个固定和一个可编程的部分构成。从机地址的

    14、可编程部分使最大数量的相同器件可以连接到使最大数量的相同器件可以连接到I2C 总线上,器件可编程地址位的数总线上,器件可编程地址位的数量由管脚决定,如果器件量由管脚决定,如果器件3 个可编程的地址管脚,那么个可编程的地址管脚,那么I2CI2C总线上共可以总线上共可以连接连接8 个相同的器件。个相同的器件。I2C数据传输的方式数据传输的方式 以字节(以字节(Byte)为单位收发数据。首先传输的是数据的最高位()为单位收发数据。首先传输的是数据的最高位(MSB,第,第7 位),最后传输的是最低位(位),最后传输的是最低位(LSB,第,第0 位)。另外位)。另外,每个字节之后还要跟一个响应位,称为应

    15、答。,每个字节之后还要跟一个响应位,称为应答。应答(应答(Acknowledge)每传输一个字节,要跟一个应答状态位。接收器接收数据的情况每传输一个字节,要跟一个应答状态位。接收器接收数据的情况可通过应答位来告知发送器。应答位的时钟脉冲由主机产生,而可通过应答位来告知发送器。应答位的时钟脉冲由主机产生,而应答位的数据状态则遵循应答位的数据状态则遵循“谁接收谁产生谁接收谁产生”的原则,即总是由接的原则,即总是由接收器产生应答位。主机向从机发送数据时,应答位由从机产生;收器产生应答位。主机向从机发送数据时,应答位由从机产生;主机从从机接收数据时,应答位由主机产生。主机从从机接收数据时,应答位由主机

    16、产生。I2C总线上第总线上第9个脉冲对应应答位,个脉冲对应应答位,SDA为为0 表示接收器应答(表示接收器应答(ACK),),A;为;为1 则表示非应答(则表示非应答(NACK),),/A。基本的数据传输格式基本的数据传输格式主机向从机发送数据的基本格式主机向从机发送数据的基本格式主机从从机接收数据的基本格式主机从从机接收数据的基本格式注意:主机向从机发送最后一个字节的数据时,从机可能应答也注意:主机向从机发送最后一个字节的数据时,从机可能应答也可能非应答,但不管怎样主机都可以产生停止条件。如果主机在可能非应答,但不管怎样主机都可以产生停止条件。如果主机在向从机发送数据(甚至包括从机地址在内)

    17、时检测到从机非应答,向从机发送数据(甚至包括从机地址在内)时检测到从机非应答,则应当及时停止传输。则应当及时停止传输。数据传输时序图数据传输时序图主机向从机写数据主机向从机写数据(24LC01)主机读从机数据(主机读从机数据(24LC01)EEPROM 24LC01B 主要特征 低至2.5V的单电源供电;低功耗的CMOS技术;128 bytes(1288)的存储块;标准2线串行接口总线,I2C总线;兼容100 kHz(2.5V)、400kHz(5.0V);高达8 bytes的页写入缓存;2 ms页写入时间周期;硬件写保护。硬件电路I2C通过通过IO口模拟口模拟void Start(void)/

    18、起始信号起始信号Sda=1;Scl=1;delay1us();Sda=0;delay1us();void Stop(void)/停止停止Sda=0;Scl=1;delay1us();Sda=1;delay1us();void Ack(void)/应答应答Sda=0;delay1us();Scl=1;delay1us();Scl=0;void NoAck(void)/不应答不应答Sda=1;delay1us();Scl=1;delay1us();Scl=0;void Send(unsigned char Data)/发送字节发送字节unsigned char xdata BitCounter=8

    19、;unsigned char xdata temp;dotemp=Data;Scl=0;delay1us();if(temp&0 x80)=0 x80)Sda=1;elseSda=0;delay1us();Scl=1;delay1us();temp=Data1;/左移左移1位位Data=temp;BitCounter-;while(BitCounter);Scl=0;unsigned char Read(void)/读取字节读取字节unsigned char xdata temp=0;unsigned char xdata temp1=0;unsigned char xdata BitCoun

    20、ter=8;Sda=1;doScl=0;delay1us();Scl=1;delay1us();if(Sda)temp=temp|0 x01;elsetemp=temp&0 xfe;if(BitCounter-1)temp1=temp8)&0 xff;/先写高先写高8位位Send(Temp_Data);Ack();Stop();delay1ms(5);Start();Send(0 xa0);Ack();Send(Address+1);Ack();Temp_Data=Data_Write&0 xff;/低低8位位Send(Temp_Data);Ack();Stop();delay1ms(5);u

    21、nsigned int RdFromROM(unsigned char Address)/读取数据读取数据unsigned int xdata Temp_Data;Start();Send(0 xa0);Ack();Send(Address);Ack();Start();Send(0 xa1);Ack();Temp_Data=(Read()*256;/高高8位位NoAck();Stop();delay1ms(5);Start();Send(0 xa0);Ack();Send(Address+1);Ack();Start();Send(0 xa1);Ack();Temp_Data+=Read()

    22、;/低低8位位NoAck();Stop();delay1ms(5);return Temp_Data;通过单片机自带通过单片机自带I2C接口接口P89C669自带I2C功能实现对EEPROM单字节的读取与写入,写入单个字节和读取只要分别调用bit ISendbyte_1(uchar sla,uchar suba,uchar c)和bit IRcvStr(uchar sla,uchar suba,uchar*s,uchar no)即可,参考资料:P89C669 I2C软件包。/*申请总线申请总线功能:进行功能:进行I2C 总线的初始化包括时钟速率总线的初始化包括时钟速率I2C 使能发送起始信号等

    23、使能发送起始信号等*/void GetBus()I2CON=0 xc4;/use internal SCL generatorI2CLL=50;/bits data rate=fosc/(I2CLL+I2CLH)I2CLH=50;I2CON=I2CON|0 x20;/*STA=1,申请成为主机起动总线申请成为主机起动总线*/while(SI=0);/*发送数据函数发送数据函数 功能:用于向总线发送数据功能:用于向总线发送数据*/void SendByte(uchar c)I2DAT=c;I2CON=0XC4;/*清除清除SI 位等等位等等*/while(SI=0);/*向有子地址器件发送一个字

    24、节数据函数向有子地址器件发送一个字节数据函数*/bit ISendbyte_1(uchar sla,uchar suba,uchar c)GetBus();/*启动总线启动总线*/SendByte(sla);/*发送器件地址发送器件地址*/if(I2STAT!=0X18)I2CON=0XD4;return(0);SendByte(suba);/*发送器件子地址发送器件子地址*/if(I2STAT!=0X28)I2CON=0XD4;return(0);SendByte(c);/*发送数据发送数据*/if(I2STAT!=0X28)I2CON=0XD4;return(0);I2CON=0XD4;/

    25、*结束总线结束总线*/return(1);/*向有子地址器件读取多字节数据函数向有子地址器件读取多字节数据函数 函数原型函数原型:bit ISendStr(uchar sla,uchar suba,ucahr*s,uchar no);功能功能:从启动总线到发送地址子地址从启动总线到发送地址子地址,读数据结束总线的全过程读数据结束总线的全过程,从器件从器件 地址地址sla 子地址子地址suba 读出的内容放入读出的内容放入s 指向的存储区读指向的存储区读no 个字节个字节 如果返回如果返回1 表示操作成功否则操作有误表示操作成功否则操作有误 */bit IRcvStr(uchar sla,uch

    26、ar suba,uchar*s,uchar no)uchar i;GetBus();/*启动总线启动总线*/SendByte(sla);/*发送器件地址发送器件地址*/if(I2STAT!=0X18)I2CON=0XD4;return(0);SendByte(suba);/*发送器件子地址发送器件子地址*/if(I2STAT!=0X28)I2CON=0XD4;return(0);I2CON=0XE4;/*重新启动总线重新启动总线*/while(SI=0);SendByte(sla+1);if(I2STAT!=0X40)I2CON=0XD4;return(0);for(i=0;ino-1;i+)

    27、I2CON=0XC4;/*接收一字节数据并发送应答位*/while(SI=0);if(I2STAT!=0X50)I2CON=0XD4;return(0);*s=I2DAT;/*读取数据*/s+;I2CON=0XC0;/*接收最后一字节数据并发送非应答位*/while(SI=0);*s=I2DAT;I2CON=0XD4;/*结束总线*/return(1);RS232C/RS485 电子工业协会(电子工业协会(EIA)公布的)公布的RS-232C是用得最多的一是用得最多的一种串行通信标准,它是从远程通信标准中导出来的,种串行通信标准,它是从远程通信标准中导出来的,是使用于数据终端设备(是使用于数据

    28、终端设备(DTE)和数据通信设备()和数据通信设备(DCE)之间的接口。该标准除包括物理指标外,还包)之间的接口。该标准除包括物理指标外,还包括表明按位串行传送时的电气指标。括表明按位串行传送时的电气指标。RS-232CRS-232C电气特性电气特性在电气性能方面,在电气性能方面,RS-232C使用负逻辑。逻辑使用负逻辑。逻辑“1”电平是在电平是在 -5V-15V范围内,逻辑范围内,逻辑“0”电平是在电平是在+5V+15V范围内。范围内。标准要求标准要求RS-232C接收器必须能够识别接收器必须能够识别+3V以上以上的信号作为逻的信号作为逻辑辑“0”,-3V以下以下的信号作为逻辑的信号作为逻辑

    29、“1”,即有,即有2V的噪声容限。的噪声容限。RS-232C的主要电气特性见下表。的主要电气特性见下表。最大电缆长度最大电缆长度15m 最大数据传输率最大数据传输率20KB/s 驱动器输出电压(开路)驱动器输出电压(开路)25V(最大)(最大)驱动器输出电压(满载)驱动器输出电压(满载)525(最大最大 驱动器输出电阻驱动器输出电阻300(最小)(最小)驱动器输出短路电流驱动器输出短路电流 500mA 接收器输入电阻接收器输入电阻37k 接收器输入门限电压值接收器输入门限电压值-3+3V(最大)(最大)接收器输入电压接收器输入电压-25+25V(最大)(最大)RS-232CRS-232C数据传

    30、送格式数据传送格式 RS-232C的数据传送格式的数据传送格式是位串行方式,传输数据的格式如下图是位串行方式,传输数据的格式如下图所示,这是微处理机应用系统中最通用的格式。数据的连续传所示,这是微处理机应用系统中最通用的格式。数据的连续传送由最低有效数字位开始,以奇偶校验位作结束。送由最低有效数字位开始,以奇偶校验位作结束。RS-485RS-485标准标准 :由由RS-232C的电气特性表可知,若不采用调制解调器,其传输距的电气特性表可知,若不采用调制解调器,其传输距离很短,且最大数据传输率也受到限制。离很短,且最大数据传输率也受到限制。因此,因此,EIA又公布了能够适合于远距离传输的又公布了

    31、能够适合于远距离传输的RS-485标准。标准。RS485用差分接收器接收信号电压,用差分接收器接收信号电压,差分信号的抗噪声能力强差分信号的抗噪声能力强。特特 性性RS-422、RS-485最大电缆长度最大电缆长度1200m 最大数据传输率最大数据传输率10MB/s 驱动器输出电压(开路)驱动器输出电压(开路)6V(最大)输出端之间(最大)输出端之间 驱动器输出电压(满载)驱动器输出电压(满载)2V(最小)输出端之间(最小)输出端之间 驱动器输出短路电流驱动器输出短路电流 150mA(最大)(最大)接收器输入电阻接收器输入电阻大于等于大于等于4k 接收器输入门限电压值接收器输入门限电压值-0.

    32、2+0.2V(最大最大)接收器输入电压接收器输入电压-12V+12V(最大)(最大)当采用当采用+5V电源供电时,电源供电时,RS-485信号定义如下:信号定义如下:若差分电压信号为若差分电压信号为2500200mV时,为逻辑时,为逻辑“0”;若差分电压信号为若差分电压信号为2500200mV时,为逻辑时,为逻辑“1”;MAX485主要特征:采用单一电源采用单一电源+5 V+5 V工作,额定电流为工作,额定电流为300 A300 A,采用半双工通讯方式。,采用半双工通讯方式。完成将完成将TTLTTL电平转换为电平转换为RS-485RS-485电平的功能。电平的功能。内部含有一个驱动器和接收器。

    33、内部含有一个驱动器和接收器。RORO和和DIDI端分别为接收器的输出和驱动端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的器的输入端,与单片机连接时只需分别与单片机的RXDRXD和和TXDTXD相连即可相连即可;/RE/RE和和DEDE端分别为接收和发送的使能端,当端分别为接收和发送的使能端,当/RE/RE为逻辑为逻辑0 0时,器件处于时,器件处于接收状态;当接收状态;当DEDE为逻辑为逻辑1 1时,器件处于发送状态,因为时,器件处于发送状态,因为MAX485MAX485工作在半工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;双工状态,所以只需用单片机的一

    34、个管脚控制这两个引脚即可;A A端和端和B B端分别为接收和发送的差分信号端端分别为接收和发送的差分信号端,当当A A引脚的电平高于引脚的电平高于B B时,代时,代表发送的数据为表发送的数据为1 1;当;当A A的电平低于的电平低于B B端时,代表发送的数据为端时,代表发送的数据为0 0。与单片机连接时,只需要一个信号控制与单片机连接时,只需要一个信号控制MAX485MAX485的接收和发送即可。同的接收和发送即可。同时将时将A A和和B B端之间加匹配电阻,一般可选端之间加匹配电阻,一般可选100100的电阻。的电阻。MAX485芯片硬件电路图 示例程序void init_uart(void

    35、)/串行口初始化串行口初始化 PCON=0;/Set PCON register,clear SMOD0 and SMOD1 bits/*initiate uart0*/T2MOD=0;/T2OE=0;DCEN=0;S0CON=0 x50;/uart 0 in mode 1(8 bit),REN=1 RCAP2H=0 xff;/ffb8:9600 Bds at 11.059MHzRCAP2L=0 xb8;/ffdc:19200 Bds at 11.059MHzTCLK=1;/T2 overflow as the baud rate generator for uart0 transmit RC

    36、LK=1;/T2 overflow as the baud rate generator for uart0 receiveEXEN2=0;/ignore events on T2EX C_T2=0;/timer modeTR2=1;/timer2 runES0R=1;/开放开放UART0 接收中断接收中断 EA=1;/Enable global interrupt UART1_CONTROL=R1_ENABLE;/enable UART1 receive(in max485)UART0_CONTROL=R0_ENABLE;/enable UART0 receive(in max485)voi

    37、d respond_PLC_uart0(void)/单片机与单片机与PLC进行进行485通信通信uchar i=0;if(ID_num%2)=0)ID_num_send=ID_num/2;else if(ID_num%2)=1)ID_num_send=(ID_num+1)/2;ReCommand0=*;/设置起始位、从机地址、终止位设置起始位、从机地址、终止位ReCommand1=ID_num_send;/地址地址 if(flag_alert_LM=1)ReCommand2=0 x01;/亮度报警信息亮度报警信息 elseReCommand2=0 x0;/正常正常 ReCommand3=tm_

    38、send1;/温度值温度值 ReCommand4=tm_send0;ReCommand5=lumin_buf2;ReCommand6=lumin_buf1;ReCommand7=lumin_buf0;ReCommand9=#;/结束位结束位if(MASTER=0)&(SPARE=1)ReCommand8=0 x0;/主灯工作主灯工作 else if(SPARE=0)&(MASTER=1)ReCommand8=0 x01;/备灯工作备灯工作 ES0R=0;/关闭关闭UART0 接收中断接收中断 UART0_CONTROL=T0_ENABLE;/发送使能发送使能 for(i=0;i10;i+)S0

    39、BUF=ReCommandi;while(TI_0=0)feed_watchdog();TI_0=0;UART0_CONTROL=R0_ENABLE;/接收使能接收使能 _nop_();_nop_();_nop_();_nop_();ES0R=1;/开放开放UART0 接收中断接收中断/*Uart0 receive interrut*/void IntUart0Rx(void)interrupt 4RI_0=0;/清除接收标志清除接收标志 if(S0BUF=)Command0=S0BUF;UartCount=0;else if(S0BUF=$)Command3=S0BUF;UartCount=

    40、0;else if(UartCount 3)UartCount+;CommandUartCount=S0BUF;else UartCount=0;SPI总线:总线:由同步串行外设接口由同步串行外设接口SPI构构成的串行总线是一种三线同步总线。总线上成的串行总线是一种三线同步总线。总线上可以连接多个可以作为主机的微控制器可以连接多个可以作为主机的微控制器MCU及装有及装有SPI接口的接口的I/OI/O设备设备如液晶驱动、如液晶驱动、A/D转换等外设。转换等外设。SPI是全双工的,即主机在发送的同时也可以在接收数据,传送的速率是全双工的,即主机在发送的同时也可以在接收数据,传送的速率由主机编程决定

    41、;时钟的极性和相位也是可选择的,具体的约定由设计由主机编程决定;时钟的极性和相位也是可选择的,具体的约定由设计人员根据总线上各设备接口的功能决定。人员根据总线上各设备接口的功能决定。SPI具有四种工作模式,取决于时钟极性(具有四种工作模式,取决于时钟极性(CPOL)和时钟相位()和时钟相位(CPHA),使用的最为广泛的是),使用的最为广泛的是SPI0和和SPI3方式。方式。SPI 模式模式CPOLCPHA000101210311数据在时钟信号的上升沿锁存,下降沿变化,高位在前,低数据在时钟信号的上升沿锁存,下降沿变化,高位在前,低位在后位在后/-/SPI_defs.h/-/This file

    42、defines the pins used for the SPI device./The SPI device is mapped to pins P0.0-P0.3,but can be modified to map to/any of the available GPIO pins on the device./#ifndef SPI_DEFS#define SPI_DEFSsbit MOSI=P00;/Master Out/Slave In(output)sbit MISO=P01;/Master In/Slave Out(input)sbit SCK=P02;/Serial Clo

    43、ck(output)sbit NSS=P03;/Slave Select(output to chip select)#endif/SPI_Transfer mode 0/Simultaneously transmits and receives one byte using/the SPI protocol.SCK is idle-low,and bits are latched on SCK rising.char SPI_Transfer(char SPI_byte)unsigned char SPI_count;/counter for SPI transaction SCK=0;for(SPI_count=8;SPI_count 0;SPI_count-)/single byte SPI loop MOSI=SPI_byte&0 x80;/put current outgoing bit on MOSI SPI_byte=SPI_byte 1;/shift next bit into MSB SCK=0 x01;/set SCK high SPI_byte|=MISO;/capture current bit on MISO SCK=0 x00;/set SCK low return(SPI_byte);/END SPI_Transfer

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:C51程序设计方案2实例课件.pptx
    链接地址:https://www.163wenku.com/p-3622433.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库