我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:小鱼儿玄机二站之姐妹 > 起始信号 >

BS84C12A3A 00902013 03 19Rev091201319从机地址总线上的所有从

归档日期:07-24       文本归类:起始信号      文章编辑:爱尚语录

  BS84C12A3A 00902013 03 19Rev 00912013 03 19从机地址总线上的所有从机都会侦测由主机发出的起始信号。发送起始信号后 紧接着主机会发送从机地址以选择要进行数据传输的从机。所有在 I2C 总线位地址数据后 都会将其与各自内部的地址进行比较。如果从机

  BS84C12A3A 00902013 03 19Rev 00912013 03 19从机地址总线上的所有从机都会侦测由主机发出的起始信号。发送起始信号后 紧接着主机会发送从机地址以选择要进行数据传输的从机。所有在 I2C 总线位地址数据后 都会将其与各自内部的地址进行比较。如果从机从主机上接收到的地址与自身内部的地址相匹配 则会产生一个I2C总线中断信号。地址位接下来的一位为读 写状态位 将被保存到SIMC1寄存器的SRW位随后发出一个低电平应答信号 。当单片机从机的地址匹配时会将状态标志位HAAS置位。I2C 总线有两个中断源 当程序运行至中断服务子程序时 通过检测HAAS位以确定I2C总线中断是来自从机地址匹配 还是来自8位数据传递完毕。当是从机地址匹配发生中断时 则从机或是用于发送模式并将数据写进SIMD 寄存器 或是用于接收模式并从SIMD寄存器中读取空值以释放SCL线C总线寄存器的SRW位用来表示主机是要从I2C 总线上读取数据还是要将数据写到I2C 总线上。从机则通过检测该位以确定自己是作为发送方还是接收方。当SRW置“1” 表示主机要从I2C总线上读取数据 从机则作为发送方 将数据写到I2C 总线” 表示主机要写数据到I2C总线上 从机则做为接收方 从I2C总线C总线从机地址确认信号主机发送呼叫地址后 I2C总线上的任何从机内部地址与其匹配时 会发送一个应答信号。此应答信号会通知主机有从机已经接收到了呼叫地址。如果主机没有收到应答信号 则主机必须发送停止 STOP 信号以结束通信。当HAAS为高时 表示从机接收到的地址与自己内部地址匹配 则从机需检查SRW位 以确定自己是作为发送方还是作为接收方。如果SRW位为高 从机须设置成发送方 这样会置位SIMC1寄存器的HTX位。如果SRW位为低 从机须设置成接收方 这样会清零SIMC1寄存器的HTX位。I2C总线数据和确认信号在从机确认接收到从地址后 会进行8位宽度的数据传输。这个数据传输顺序是的高位在前 低位在后。接收方在接收到8位数据后必须发出一个应答信号 以继续接收下一个数据。如果发送方没接收到应答信号发送方将释放SDA线 同时 主机将发出STOP信号以释放I2C总线。所传送的数据存储在SIMD寄存器中。如果设置成发送方 从机必须先将欲传输的数据写到SIMD寄存器中 如果设置成接收方 从机必须从SIMD寄存器读取数据。当接收器想要继续接收下一个数据时 必须在第9个时钟发出应答信号 TXAK 。被设为发送方的从机将检测寄存器SIMC1中的RXAK位以判断是否传输下一个字节的数据 如果单片机不传输下一个字节 那么它将释放SDA线并等待接收主机的停止信号。Rev 00922013 03 19Rev 00932013 03 19BS84B08A BS84C12A3A 型触控按键单片机I2C超时控制为了减少由于接收错误时钟源而产生的I2C锁定问题系统提供了超时功能。在固定时间内如果I2C总线C电路和寄存器将会复位。超时计数器在I2C总线接收到“START”信号和“地址匹配”条件时 超时计数器开始计数 并在SCL下降沿处清零。在下一个SCL下降沿来临之前 如果等待时间大于I2CTOC寄存器设定的超时时间 则会发生超时现象。当I2C“STOP”条件发生时 超时计数器将停止计数。101 001 SCLStartSDASRWACKStopSCLSDASlave AddressI2C time outcounter startI2C time out counter reseton SCL negative transitionI2C超时时序图当I2C超时计数器溢出时 计数器将停止计数 I2CTOEN 位被清零 且I2CTOF位被置高以表明超时计数器中断发生。超时计数器中断使用的也是I2C中断向量。当I2C超时发生时 I2C内部电路会被复位 寄存器也将发生如下复位情况。寄存器I2C超时发生后SIMD SIMA SIMC0保持不变SIMC1复位至POR超时发生后的I2C寄存器I2CTOF标志位可由应用程序清零。64个超时时钟周期可由I2CTOC寄存器里的相应位来设置。超时时间的计算方法如下 6432 fSUB这里给出了一个1ms 64ms的范围。注意 LIRC振荡器是一直处于使能状态。BS84B08A BS84C12A3A 00922013 03 19Rev 00932013 03 19中断中断是单片机一个重要功能。当发生外部中断或内部中断 如触控动作或定时 计数器溢出 系统会中止当前的程序 而转到相对应的中断服务程序中。该系列单片机提供一个外部中断和多个内部中断。外部中断由INT引脚信号触发 而内部中断由触控按键、定时 计数器、时基和SIM等控制。中断寄存器中断控制基本上是在一定单片机条件发生时设置请求标志位 应用程序中中断使能位的设置是通过位于专用数据存储器中的一系列寄存器控制的。寄存器的数量由所选单片机的型号决定 但总的分为两类。第一类是INTC0 INTC1寄存器 用于设置基本的中断 第二类由INTEG寄存器 用于设置外部中断边沿触发类型。寄存器中含有中断控制位和中断请求标志位。中断控制位用于使能或除能各种中断 中断请求标志位用于存放当前中断请求的状态。它们都按照特定的模式命名 前面表示中断类型的缩写 紧接着的字母“E”代表使能 “F”代表请求标志位。功能使能位请求标志注释总中断EMI——外部中断INTEINTF—触控按键模块中断TKMETKMF—定时计数器中断TETF—SIMSIMESIMF—时基中断TBETBF—EEPROMDEEDEF—A D中断ADEADF—中断寄存器位命名模式Rev 00942013 03 19Rev 00952013 03 19BS84B08A BS84C12A3A WRWPOR——————00Bit 未使用读为“0”Bit INTS1INTS0 INT脚中断边沿控制位 00 01上升沿 10 下降沿 11 双沿INTC0寄存器Bit76543210Name—TFTKMFINTFTETKMEINTEEMIR WRWR WR WR WR WR WPOR—0000000Bit 未使用读为“0”Bit TF定时 计数器中断请求标志位 TKMF触控按键模块中断请求标志位 INTFINT中断请求标志位 TE定时 计数器中断控制位 TKME触控按键模块中断控制位 INTEINT中断控制位 EMI总中断控制位 BS84C12A3A 00942013 03 19Rev 00952013 03 19INTC1寄存器Bit76543210NameADFDEFTBFSIMFADEDEETBESIMER WR WR WR WR WR WR WR WR WPOR00000000Bit DEF数据EEPROM中断请求标志位 TBF时基中断请求标志位 SIMFSIM中断请求标志位 DEE数据EEPROM中断控制位 TBE时基中断控制位 SIMESIM中断控制位 使能中断操作若中断事件条件产生如触控按键计数器溢出、定时 计数器溢出等等 相关中断请求标志将置起。中断标志产生后程序是否会跳转至相关中断向量执行是由中断使能位的条件决定的。若使能位为“1” 程序将跳至相关中断向量中执行 若使能位为“0” 即使中断请求标志置起中断也不会发生 程序也不会跳转至相关中断向量执行。若总中断使能位为“0” 所有中断都将除能。当中断发生时 下条指令的地址将被压入堆栈。相应的中断向量地址加载至PC中。系统将从此向量取下条指令。中断向量处通常为跳转指令 以跳转到相应的中断服务程序。中断服务程序必须以“RETI”指令返回至主程序 以继续执行原来的程序。各个中断使能位以及相应的请求标志位 以优先级的次序显示在下图。中断源有自己的向量 。一旦中断子程序被响应 系统将自动清除EMI位 所有其它的中断将被屏蔽 这个方式可以防止任何进一步的中断嵌套。其它中断请求可能发生在此期间 虽然中断不会立即响应 但是中断请求标志位会被记录。Rev 00962013 03 19Rev 00972013 03 19BS84B08A BS84C12A3A 型触控按键单片机如果某个中断服务子程序正在执行时有另一个中断要求立即响应 那么EMI位应在程序进入中断子程序后置位 以允许此中断嵌套。如果堆栈已满 即使此中断使能 中断请求也不会被响应 直到SP减少为止。如果要求立刻动作 则堆栈必须避免成为储满状态。请求同时发生时 执行优先级如下流程图所示。所有被置起的中断请求标志都可把单片机从休眠或空闲模式中唤醒 若要防止唤醒动作发生 在单片机进入休眠或空闲模式前应将相应的标志置起。External Touch Key Module INTFTKMFINTETKMEEMI04HEMI08H10HSIMSIMFSIMEEMI18HEEPROMDEFDEEEMIInterrupt NameRequest FlagsEnable BitsMaster EnableVectorEMI auto disabled ISRLowPriorityHighxxEEnableBitsxxFRequest Flag auto reset ISRLegendxxFRequestFlag autoreset ISR0CH14HTBFTBEEMITimerEvent CounterTFTEEMITime Base1CHA DConverterADFADEEMI中断结构外部中断通过INT引脚上的信号变化可控制外部中断。当触发沿选择位设置好触发类型 INT引脚的状态发生变化 外部中断请求标志INTF被置位时外部中断请求产生。若要跳转到相应中断向量地址 总中断控制位EMI和相应中断使能位INTE需先被置位。此外 必须使用INTEG寄存器使能外部中断功能并选择触发沿类型。外部中断引脚和普通I O口共用 如果相应寄存器中的中断使能位被置位 此引脚将被作为外部中断脚使用。此时该引脚必须通过设置控制寄存器 将该引脚设置为输入口。当中断使能 堆栈未满并且外部中断脚状态改变 将调用外部中断向量子程序。当响应外部中断服务子程序时 中断请求标志位 INTF会自动复位且 EMI 位会被清零以除能其它中断。注意 即使此引脚被用作外部中断输入 其上拉电阻仍保持有效。寄存器INTEG被用来选择有效的边沿类型 来触发外部中断。可以选择上升沿还是下降沿或双沿触发都产生外部中断。注意INTEG也可以用来除能外部中断功能。BS84B08A BS84C12A3A 00962013 03 19Rev 00972013 03 19触控按键中断要使触控按键中断发生 总中断控制位 EMI 和相应的内部中断使能位TKME必须先被置位。当触控按键中的时隙计数器溢出 相应的中断请求标志位TKMF将置位并触发触控按键中断。中断使能 堆栈未满 当触控按键时隙计数器溢出发生中断时 将调用位于触控按键中断向量处的子程序。当响应中断服务子程序时 中断请求标志位TKMF会被自动复位且 EMI 位会被清零以除能其它中断。任何一个触控按键模块的16位C F计数器溢出就会把16位C F计数器溢出标志位TKCFOV设为“1” 此标志位不会自动复位 必须通过应用程序将其复位。模块0中只保留一组16位计数器 16位计数器溢出就会把16位计数器溢出标志位TK16OV设为“1” 此标志位不会自动复位 必须通过应用程序将其复位。定时 计数器中断要使定时 计数器中断发生 总中断控制位 EMI 和相应的内部中断使能位TE必须先被置位。当定时 计数器溢出 相应的中断请求标志位TF将置位并触发定时 计数器中断。中断使能 堆栈未满 当定时 计数器溢出发生中断时 将调用位于计数器中断向量处的子程序。当响应中断服务子程序时 中断请求标志位TF会被自动复位且 EMI 位会被清零以除能其它中断。SIM中断当一个字节数据已由SIM接口接收或发送完 中断请求标志SIMF被置位 SIM中断请求产生。若要程序跳转到相应中断向量地址 总中断控制位EMI、串行接口中断使能位SIME需先被置位。当中断使能 堆栈未满且一个字节数据已被传送或接收完毕时 可跳转至相关多功能中断向量子程序中执行。当串行接口中断响应 中断请求标志位SIMF会被自动复位且EMI位会被清零以除能其它中断。时基中断时基中断提供一个固定周期的中断信号 由定时器功能产生溢出信号控制。当中断请求标志TBF被置位时 中断请求发生。当总中断使能位EMI和时基使能位TBE被置位 允许程序跳转到各自的中断向量地址。当中断使能 堆栈未满且时基溢出时 将调用它们各自的中断向量子程序。当响应中断服务子程序时 相应的中断请求标志位TBF会自动复位且 EMI 位会被清零以除能其它中断。时基中断的目的是提供一个固定周期的中断信号 时钟源来自内部时钟源fSYS或fSUB。输入时钟首先经过分频器 分频率由程序设置TBC寄存器相关位获取合适的分频值以提供更长的时基中断周期。0 U1XfSYS 21013TimeBase TS BitfTPfSUBTB1 TB0时基结构Rev 00982013 03 19Rev 00992013 03 19BS84B08A BS84C12A3A WRW————POR——00————Bit 未使用读为“0”Bit TB1TB0 选择时基溢出周期位 00 1024 fTP 01 2048 fTP 10 4096 fTP 11 8192 fTPBit 未使用读为“0”EEPROM中断当写周期结束 EEPROM中断请求标志DEF被置位 EEPROM中断请求产生。若要程序跳转到相应中断向量地址 总中断控制位EMI、EEPROM中断使能位DEE需先被置位。当中断使能 堆栈未满且EEPROM写周期结束时 可跳转至相关中断向量子程序中执行。当EEPROM中断响应 中断请求标志位 DEF 会被自动复位且 EMI 位会被清零以除能其它中断。A D转换器中断A D转换器中断由A D转换动作的结束来控制。当A D转换器中断请求标志被置位 D转换过程完成时中断请求发生。当总中断使能位EMI和A D中断使能位ADE被置位 允许程序跳转到各自的中断向量地址。当中断使能 堆栈未满且A D转换动作结束时 将调用它们各自的中断向量子程序。当响应中断服务子程序时 相应的中断请求标志位ADF会自动清零。EMI位也会被清零以除能其它中断。中断唤醒功能每个中断都具有将处于休眠或空闲模式的单片机唤醒的能力。当中断请求标志由低到高转换时唤醒动作产生 其与中断是否使能无关。因此 尽管单片机处于休眠或空闲模式且系统振荡器停止工作 如有外部中断脚上产生外部边沿跳变 低电压改变都可能导致其相应的中断标志被置位 由此产生中断 因此必须注意避免伪唤醒情况的发生。若中断唤醒功能被除能 单片机进入休眠或空闲模式前相应中断请求标志应被置起。中断唤醒功能不受中断使能位的影响。BS84B08A BS84C12A3A 00982013 03 19Rev 00992013 03 19编程注意事项通过禁止相关中断使能位 可以屏蔽中断请求 然而 一旦中断请求标志位被设定 它们会被保留在中断控制寄存器内 直到相应的中断服务子程序执行或请求标志位被软件指令清除。建议在中断服务子程序中不要使用“CALL子程序”指令。中断通常发生在不可预料的情况或是需要立刻执行的某些应用。假如只剩下一层堆栈且没有控制好中断 当“CALL子程序”在中断服务子程序中执行时 将破坏原来的控制序列。所有中断在休眠或空闲模式下都具有唤醒功能 当中断请求标志发生由低到高的转变时都可产生唤醒功能。若要避免相应中断产生唤醒动作 在单片机进入休眠或空闲模式前需先将相应请求标志置为高。当进入中断服务程序 系统仅将程序计数器的内容压入堆栈 如果中断服务程序会改变状态寄存器或其它的寄存器的内容而破坏控制流程 应事先将这些数据保存起来。若从中断子程序中返回可执行RET或RETI指令。除了能返回至主程序外 RETI指令还能自动设置EMI位为高 允许进一步中断。RET指令只能返回至主程序 清除EMI位 除能进一步中断。应用电路I OSPI I2CVDDVSS0 1mFVDDControl DeviceSPI I2C DeviceKEY1KEY2KEYn 1KEYnRev 001002013 03 19Rev 001012013 03 19BS84B08A BS84C12A3A 型触控按键单片机指令集简介任何单片机成功运作的核心在于它的指令集此指令集为一组程序指令码 用来指导单片机如何去执行指定的工作。在HOLTEK单片机中 提供了丰富且灵活的指令 共超过六十条 程序设计者可以事半功倍地实现它们的应用。为了更加容易理解各种各样的指令码 接下来按功能分组介绍它们。指令周期大部分的操作均只需要一个指令周期来执行。分支、调用或查表则需要两个指令周期。一个指令周期相当于四个系统时钟周期 因此如果在8MHz的系统时钟振荡器下 大部分的操作将在0 5s中执行完成 而分支或调用操作则将在1s中执行完成。虽然需要两个指令周期的指令通常指的是JMP、CALL、RET、RETI和查表指令 但如果牵涉到程序计数器低字节寄存器PCL也将多花费一个周期去加以执行。即指令改变PCL的内容进而导致直接跳转至新地址时 需要多一个周期去执行 例如“CLR PCL”或“MOV PCL A”指令。对于跳转指令必须注意的是 如果比较的结果牵涉到跳转动作将多花费一个周期 如果没有则需一个周期即可。数据的传送单片机程序中数据传送是使用最为频繁的操作之一 使用三种MOV的指令 数据不但可以从寄存器转移至累加器 反之亦然 而且能够直接移动立即数到累加器。数据传送最重要的应用之一是从输入端口接收数据或传送数据到输出端口。算术运算算术运算和数据处理是大部分单片机应用所必需具备的能力 在盛群单片机内部的指令集中 可直接实现加与减的运算。当加法的结果超出255或减法的结果少于0时 要注意正确的处理进位和借位的问题。INC、INCA、DEC和DECA指令提供了对一个指定地址的值加一或减一的功能。逻辑和移位运算标准逻辑运算例如AND、OR、XOR和CPL全都包含在盛群单片机内部的指令集中。大多数牵涉到数据运算的指令 数据的传送必须通过累加器。在所有逻辑数据运算中 如果运算结果为零 则零标志位将被置位 另外逻辑数据运用形式还有移位指令 例如RR、RL、RRC和RLC提供了向左或向右移动一位的方法。不同的移位指令可满足不同的应用需要。移位指令常用于串行端口的程序应用 数据可从内部寄存器转移至进位标志位 而此位则可被检验 移位运算还可应用在乘法与除法的运算组成中。

本文链接:http://shivatamil.com/qishixinhao/777.html