版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
无线数字全双工语音收发器TPA4861射频切换开关SW-438RF1020SE模块是采用基于CC1020无线通信芯片的无线收发一体模块,作为微功率无线模块,直线通信距离可达600米左右。CC1020具有低电压供电、低电流消耗、高灵敏度等特点,适合微功率远距离的无线传输领域,如无线称重等。WIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
无线数字全双工语音收发器SW-438CC1020CPUWIRELESSDIGITALFULL-DUPLEXVOICETRANSCEIVER
无线数字全双工语音收发器TPA4861DSpeakerDriver
TPA4861DM/A-COMGaAsRFSwitch
SW-438Freescale8位单片机指令系统HC08CPU有5个寄存器、16种寻址方式、140条基本指令(加上寻址方式可形成270条具体指令),这是学习08汇编语言的基础。08汇编语言是学习08系列MCU的重要基础之一,学好汇编语言有助于进行底层编程、有助于理解编程结构、有利于理解单片机内部结构。基本要领:1〉掌握CPU内部5个寄存器的使用方法;2〉理解16种寻址方式;3〉记住常用指令;4〉进行编程实践指令系统学习方法汇编指令的一般格式标号:操作码操作数//注释操作码操作数寻找寻址方式CPU寄存器内存单元(sfr、地址)指针常数标号、特殊符号伪运算符构成的表达式操作码115个ASLASLAASLXBHSBLO一共120个操作码指令系统基本要领CPU寄存器寻址模式指令系统及其分类学习编程练习RAM#oprASPCCRH:XCPUHCS08CPU简介
HCS08CPU与M68HC08CPU的指令系统完全相同,且目标代码与M68HC08完全兼容。同时增加了一些指令和增强了寻址模式以增加C编译器效率,且支持一个新的背景调试系统,能够代替早期M68HC08微处理器的监测模式。HCS08CPU的特点包括:▪目标代码完全向上兼容M68HC05和M68HC08家族▪所有寄存器和存储器映射在单块64Kbyte地址空间▪16位堆栈指针SP(64Kbyte地址空间中的任意大小堆栈)▪16位索引寄存器(H:X)的强大的寻址索引模式▪多种寻址模式▪8位累加器(A)▪支持存储器到存储器的数据传送▪高效的位操作指令▪快速的8位乘8位和16位除以8位指令▪STOP和WAIT指令唤醒低功耗运行状态CPU寄存器CPU寄存器A这个通用的8位寄存器是HCS08主要的数据寄存器。数据可以通过LDA指令从存储器或通过PULA指令从堆栈读入到A。数据通过存数指令STA存入存储器中或通过堆栈指令PSHA将A进栈到累加器A。多种寻址方式给存储器的存取指令带来了更大的灵活性。传送指令可以将数据从累加器A传送到寄存器X中(TAX),或者从寄存器X传送到累加器A中(TXA),或者从累加器A传送到CCR中(TAP),或者从CCR传送到累加器A中(TPA)。TAP和TPA中的P表示处理机状态。A半交换指令(NSA)使A中数据的高四位和低四位对调。
通常对A中的值通过ADD、SUB、ASLA、RORA、INCA、DECA、AND、ORA、EOR等指令执行算术、移位和逻辑操作。其中有些指令如INCA和ASLA,对A中的内容进行操作后放回A中。另外一种情况如ADD和AND,它们有两个操作数:一个操作数在A中,另一个操作数在存储器中。算术和逻辑操作的结果都是替代累加器内的值。
乘法和除法指令使用A作为一个操作数,并且保存部分值到A中。MUL指令将X和A中的无符号数相乘并将16位结果的高低字节分别存储在X和A中。DIV指令将H、A中的16位无符号数除以X中8位无符号数,再将商储存在A中,余数放入H中。
在进行两个BCD码数的ADD或ADC操作时,需执行十进制调整指令DAA来纠正A中的值,使其变为有效的BCD码2位数。关于指令的详细解释请查阅BCD算术运算。
显然,累加器是个非常忙的寄存器,因此如果能够避免使用累加器是很有益的。例如,从存储器到存储器的传送指令(MOV)就很有用。DBNZ也很有用,因为它允许循环计数器工作在内存变量中而不是在累加器中。X寄存器在许多情况下被当作另一个通用的8位数据寄存器。有些算术运算操作如清零、加、减、取反、求补和移位也可以使用X寄存器。A指令类型指令名称作用A与别人的数据交换LDA/STA与存储器进行数据交换PULA/PSHA与堆栈进行数据交换TAX/TXA与X进行数据交换TPA/TAP与CCR进行数据交换折腾A大部分X也行NSA将A中数据的高四位和低四位对调ASLA算术左移位RORA循环右移位INCA加1DECA减1DAA十进制调整A与存储器的数据进行运算后放回A中ADD加SUB减AND逻辑与ORA逻辑或EOR逻辑异或A*X=XAMUL乘法HA/X=A……..HDIV除法H:X这个16位的变址寄存器事实上是两个独立的8位寄存器(H和X)的合并。变址寻址方式使用H:X作为16位的基本参考点,且允许有16位偏移量、8位偏移量和无偏移量的指令,另外一些变址寻址寄存器在变址用于存取存储器操作时自动增加到16位变址寄存器。关于变址寻址方式的详细描述请查阅变址寻址方式。
8位X寄存器(H:X中的低8位)也被当作一个通用的数据寄存器。修改类指令(如ASLX、ASRX、CLRX、COMX、DECX、INCX、LSLX、LSRX、NEGX、ROLX、RORX和TSTX)允许能被累加器所执行的ALU操作的子集。要注意的是,当要改变整个16位H:X变址寄存器时,不要用这些指令,因为这些指令只影响X。下面的指令序列给出了在X上的16位形式的8位操作实例。
H:XLoad、store、push和pull指令可用于X中,其寻址方式与用于A中的变址寻址相同。在16位H:X寄存器中也有取数和存数指令,但没有提供多种不同的寻址方式。进栈(PSHH)和出栈(PULH)指令可用于H中,并且这两个简单的指令可将16位变址寄存器(H:X)进栈和出栈。有时堆栈指针值需要被传送到HX寄存器中,因此H:X在堆栈中能当作信息指针使用。堆栈指针总是指向堆栈中的下一个可用的位置,但是一般情况下变址寄存器应该直接指向数据。因此,堆栈的16位值是通过TSX指令传送到H:X中,并加一。因为这个调整,TSX执行后HX指向堆栈数据的最后一个字节。当使用TXS指令时求补调整就会发生(通过使用TXS这个值会自减1)。可以认为,当16位地址在SP中,它指向下一个有用堆栈位置,若在H:X中,则它指向最后一个字节信息。H:X
为了与早期的M08HC05系列兼容,中断不在堆栈中保存H寄存器。一种好的做法是在中断服务例程中将PSHH指令作为第一个指令(保护H)并且在程序结束RTI之前加上PULH指令作为最后一个指令(恢复H)。可以不要这些指令,如果确信H已经不在中断服务例程中被用到,并且确信没有AIX指令或没有变址寻址方式中的自增指令,因为这些指令能够使H发生改变。如果能容许两个字节的额外程序空间、一个在堆栈中额外的临时空间和运行期间五个总线周期的开销,那么更安全的做法就是把PSHH和PULH包含进去作为一种习惯。
乘除指令把X作为操作数,且MUL将一部分乘积存储在X中。MUL将无符号数A和X相乘,并把16位结果存于X:A中。DIV指令将H、A中16位无符号数与X中的8位无符号数相除,商放入A中,余数放入H中。指令类型指令名称作用HX/X与别人的数据交换LDX/STX与存储器进行数据交换PULX/PSHX与堆栈进行数据交换TAX/TXA与A进行数据交换TSX/TXS与SP进行数据交换LDHX/STHXHX整体与存储器进行数据交换折腾X被认为是ALU操作的子集ASLX/ASRX算术左、右移位LSLX/LSRX逻辑左、右移位ROLX/RORX循环左、右移位CLRX清016位形式LDHX#0INCX加1
AIX#1DECX减1
AIX#-1COMX、NEGX求反、求补运算TSTX测试是否为0,影响标志位
CPHX#0最本质作用IX2变址寻址方式使用H:X作为16位的基本参考点,且允许有16位偏移量、8位偏移量和无偏移量的指令。IX1IXA*X=XAMUL乘法HA/X=A…….HDIV除法特别注意点中断时H没有自动进栈,需要手工压栈与出栈H:X使用总结SP这个16位地址指针寄存器用于自动维护CPU的一个后进先出(LIFO)堆栈。当CPU执行绝对转移调用(JSR)或相对转移调用(BSR)指令时,它会自动保存返回地址到堆栈中。当子程序最后执行返回指令(RTS)时,该返回地址会自动从堆栈中恢复,并由此继续执行先前暂停的地方,在那里子程序被调用。SP是一个满16位寄存器,所以堆栈可以寻址存储映射区的任何地方,且它可取不超过芯片可用RAM空间大小的任意大小。
堆栈指针总是指向堆栈中下一个可用位置。当一个数值要进栈时,它会被写到SP指向的地址中,随后SP会自动减少而指向下一个可用位置。当一个数值要出栈时,SP首先会自增以指向堆栈中最近进栈的数据,然后从刚被SP指向的地址中读出数据。需要注意的是SP指向的数据,在出栈的过程中不会被改变。如果SP指向当前内存的下一个位置,即指向之前最近存储的数据,当新的数据进栈时,会覆盖该位置的数据。如果在复位初始化期间,堆栈的RAM区被清空,那么堆栈扩充时,可以通过观察哪些存储单元仍然为空来确定最大深度。
SP
为了与早期的M08HC05系列兼容,在复位时SP的初值为$00FF。但HCS08应用程序几乎不会把堆栈顶部设到$00FF,因为从输入/输出(I/O)寄存器和控制寄存器的末端到$00FF的RAM区域,对于经常被访问的变量很有价值。直接寻址方式可以访问内存从$0000到$00FF的区域,这比访问其他内存空间要快。
为了与M08HC05系列兼容,复位堆栈指针(RSP)指令迫使SP的低地址向$FF逼近。在M68HC05中,复位后SP的值为$00FF。RSP极少用在HCS08中,因为它不能改变SP的高地址,而且此时,它没有必要使SP的值复位。
在新的HCS08程序中,一般初始化SP的值指向芯片RAM的最高地址。一般情况下,下面的两个指令序列被包含进复位初始化的头几个指令中。 LDHX#ramlast+1 ;RAM最高地址的下一位 TXS ;HX-1----->SPSP
一般情况下,RAM被定义在通用寄存器或者它的头文件中,在实际应用中被认为是特定的HCS08芯片。RamLast+1使RAM高端的下一高地址放入H:X中,因为TXS指令在传送时会自动调整它的值(自减1)。调整使得SP指向堆栈中的下一个可用的位置。这样,SP当前指向RAM的最后位置(最高地址值),并且将它作为堆栈的第一个位置。当有值进栈时,堆栈指针会向低地址方向移动。SP
当请求中断时,CPU将寄存器的当前内容保存在堆栈中,在完成中断服务例程后处理器将它们恢复以继续执行之前的程序。响应中断时,保存到堆栈中的CPU寄存器的顺序见图6-2。在中断前,SP指向堆栈中的下一个可用位置。每个数据通过SP保存到堆栈中指定位置并且SP会自减以指向堆栈中的下一个可用位置。结束中断例程的RTI指令以相反的顺序出栈来恢复CPU寄存器。关于中断的详细描述请查阅6.4.2节和5.5节的中断。
为了与早期的M08HC05系列兼容,中断在堆栈中没有保存H寄存器。好的方法是在中断服务例程中将PSHH指令作为开头指令并且在服务程序结束RTI之前将PULH指令(从H中恢复)作为最后一条指令。
SP与立即数加法指令(AIS)用于为局部变量在堆栈中分配空间。该技术在C语言中很普通,在汇编语言中也很有用。下面的代码例子会示范怎样在堆栈中为局部变量分配和释放空间。关于堆栈技术的详细描述请查阅6.5.6的堆栈相关指令。 AIS #-5 ;SP-#5SP AIS #5 ;SP+#5SP指令类型指令名称作用最本质作用JSR自动维护CPU的一个后进先出(LIFO)堆栈,注意堆栈生长顺序是地址减少方向。BSRRTS中断进入与RTI与HX的数据交换TSX/TXS复位后SP为$00FFRSP使得SP为$??FF在HCS08中指令RSP用不到。RSP让SP的低8位为$FF,高8位不变LDHX#ramlast+1TXS初始化SP的值指向芯片RAM的最高地址注意中断保护寄存器的顺序,而且H没有被保护CCRAXPCHPCLSP与立即数加法指令(AIS)用于为局部变量在堆栈中分配空间AIS比如AIS
#-5 ;SP-#5
SP分配空间AIS
#5 ;SP+#5
SP释放空间程序计数器(PC)
程序计数器是个16位的寄存器,存放取出的下一个指令或操作数的地址。正常的程序执行期间,每一次取出指令或者操作数时,程序计数器自动加一指向后续的存储器位置.跳转、分支、中断和返回操作,程序计数器加载的是一个地址,而不是下一个后续位置。复位期间,程序计数器加载位于$FFFE和$FFFF处存放的地址。($FFFE:$FFFF)存放的地址处对应的指令,是复位后被执行的第一条指令。2.2.2CPU寄存器条件代码寄存器(CCR)8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令结果的标志。第5和第6位永远置位。位名称功能7V二进制补码溢出标志——当发生一个二进制补码溢出,CPU置这位为1。符号分支指令BGT,BGE,BLE和BLT将会用到溢出标志位。4H半进位标志—累加器3、4位之间在加法(ADD、ADC)操作时可能发生半进位。BCD运算将用到半进位标志,DAA指令也会根据H和C的状态,对ADD或ADC的BCD运算进行修正。3I中断全局屏蔽位—该位为1时,所有可屏蔽的CPU中断将被屏蔽。当CPU响应中断时,在CPU寄存器保存到堆栈、中断服务子程第一条指令执行前,I自动置位。这确保了清除I的指令CLI或TAP之后的下一条指令总会被执行,而不会出现刚清除I就发生中断的可能性。2N负数标志—当一个算术操作,逻辑操作或者数据处理产生一个负数结果,则会设置结果的第7位,并且CPU将负数标志位置1。如果加载或存储数据的最高位为1,同样会将N置1。1Z置零标志—当一个算术操作,逻辑操作或数据处理产生一个0x00或0x0000的结果,则将该位置1。如果加载或存储的值为0,也会引起Z置1。0C进/借标志—加法第7位产生进位,或减法需要借位,则置本位为1。一些指令——如位测试和分支,移位和旋转也会影响进/借标志.2.2.2CPU寄存器累加器(A)累加器A是一个通用8位寄存器。经常用于暂存一个输入到算术逻辑单元(ALU)的操作数,并且用于存放(ALU)的计算结果。复位对累加器A的内容没有影响。索引寄存器(H:X)这个16位寄存器实际上分为两个8位寄存器(H和X),它们作为一个16位的地址指针一起工作,H存放一个地址的高位字节和X存放地址的低位字节。所有索引寻址模式指令利用H:X中全部16位值作为一个索引参考指针;然后,为了与早先M68HC05家族兼容,一些指令只在低8位(X)中运行,并且H在复位过程中强制为0x00。复位对X的内容没有影响。堆栈指针(SP)16位地址指针寄存器指向下一个有效的堆栈位置。堆栈可以放置在包含RAM的64Kbyte地址空间的任意位置,其大小可以为任何RAM中的有效值。堆栈用来自动保存子程序调用的返回地址、中断中CPU寄存器和局部变量的返回地址。AIS(立即加堆栈指针,堆栈处理指令)指令对SP加上一个8位有符号立即数。这经常用于对堆栈中的局部变量分配和取消分配空间。向上生长型(如51单片机)特性:先加后压,先弹后减向下生长型(飞思卡尔单片机)特性:先压后减,先加后弹程序计数器(PC)程序计数器是个16位的寄存器,存放取出的下一个指令或操作数的地址。正常的程序执行期间,每一次取出指令或者操作数时,程序计数器自动加一指向后续的存储器位置。跳转、分支、中断和返回操作程序计数器加载地址不是下一个后续位置。复位期间,程序计数器加载位于$FFFE和$FFFF的复位矢量(这点与51的差别很大,PC不是装载$FFFE,而是装载$FFFE和$FFFF中存放的内容)。该处的矢量地址是退出复位状态后被执行的第一条指令的地址。条件代码寄存器(CCR)8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令结果的标志。第5和第6位永远设置为1。如图:I位是中断屏蔽控制位,与其他位不同的是它在CCR中不是处理器状况位。在CCR的六个可执行位中,I位也是复位后唯一可被初始化的位。I位复位后置为1,这使得中断被屏蔽直到堆栈指针被初始化。其他五个状态位(V、H、N、Z和C)在复位后是未知的,只有在执行一个指令后才能知道。复位后无须强制这些位为特定的值,因为直到执行了一个影响它们的指令后,与这些位相关的条件转移才有意义。这五个状态位标志了运算和其他指令的结果。条件转移指令根据CCR内状态位的值来决定是直接转移到一个新的程序地址,还是继续执行下一个指令。简单的条件转移指令(BCC、BCS、BNE、BEQ、BHCC、BHCS、BMC、BMS、BPL和BMI)所导致的转移取决于单一的CCR位状态,而其他转移指令则被两三个更复杂的CCR位控制。例如,若布尔表达式[(Z)|(N⊕V)]真,则将产生小于等于转移(BLE).0C进/借标志—当一个另外操作产生一个对第7位累加需要进位或者一个减法操作要求一个借位,则置本位为1。一些指令,如位测试和分支,移位和旋转也会影响进/借标志。0 第7位没有产生进/位1 第7位产生进/位
1Z置零标志—当一个算术操作,逻辑操作或数据处理产生一个0x00或0x0000的结果,则将该位置1。如果加载或存储的值为0,简单的加载或存储一个引起Z置1。0NUMn-zeroresult1Zeroresult2N负数标志—当一个算术操作,逻辑操作或者数据处理产生一个负数结果,则会设置结果的第7位,并且CPU将负数标志位置1。如果加载或存储的最高位为1,同样会将N置1。0 非负数结果1 负数结果
3I中断屏蔽位—当设置中断屏蔽,所有可屏蔽的CPU中断将被屏蔽.当中断屏蔽被清除时使能。当产生一个CPU中断,中断屏蔽被保存到堆栈,但是在中断服务子程序第一条指令执行前自动置1。WAIT和STOP指令会自动对I位清零0 中断使能1 中断屏蔽4H半进位标志—当在累加器第3位和第4位之间在不带进位加法(ADD)或者带进位加(ADC)操作时发生半进位,则CPU置该标志为1。二进制编码的十进制(BCD)运算将用到半进位标志。另外DAA指令也会根据条件代码位H和C的状态,自动加一个修正值到先前的ADD或ADC的BCD运算,以修正结果为一个正确的BCD值。0 第3位和第4位之间没有进位1 第3位和第4位之间有进位
7V二进制补码溢出标志—当发生一个二进制补码溢出,CPU置这位为1。符号分支指令BGT,BGE,BLE和BLT将会用到溢出标志位。0 没有溢出1 有溢出指令系统指令系统指令统计1、数据传送类指令 492、算术运算类指令 913、逻辑运算类指令 244、位操作类指令 145、移位类指令 366、程序控制类指令 477、其它指令 98、HCS08增加指令 10
总计: 280(120)寻址方式当MCU是从存储器读出信息或是将信息写进存储器时,寻址方式用于确定信息读或写的精确地址。本节讲解不同的寻址方式及其在程序中的用法。例如,在一些寻址方式中,通过编译器确定程序写入地址。而另外一些寻址方式允许CPU寄存器的内容来参与影响。这很重要,因为有时程序在执行期间需要计算地址。每个操作码使CPU用某种方式去执行某种操作。许多指令例如LDA允许多种不同的方式来指定将要操作的内存,并且每个寻址方式需要有一个独立的操作数。所有这些变量用相同的记忆指令,并且编译器基于操作域的使用情况知道使用了哪些操作数。在某些情况下,使用特殊的字符表示特殊的寻址方式(如#符号表示立即寻址方式)。在另外一些情况下,操作数的值告诉汇编使用哪些寻址方式。例如,如果操作数的地址在$0000和$00FF之间,汇编会选择直接寻址方式而不是扩展寻址方式。寻址方式LDA允许多种不同的方式来指定将要操作的内存.一些指令会使用多种寻址方式。例如MOV指令使用一种方式访问内存的源地址,而使用另一种方式去访问内存单元中的目的地址。对于这些指令,两个寻址方式都在文档中被列了出来。所有的转移指令使用相对变址寻址方式(REL)去确定转移的目的地址,但是BRCLR、BRSET、CBEQ和DBNZ指令还需要访问内存操作数。这些指令根据使用于内存操作数的寻址方式来分类。在接下来的篇幅中,将讨论每个寻址方式的用法以及编译器通过什么样的语法定义来知道程序员所需的特殊寻址方式。寻址方式1、CPU寄存器:A,HX,SP,PC,CCR(V11HINZC)2、寻址方式:INH,IMM,DIR,EXT,IND(IX,IX1,IX2,SP1,SP2,IX+,IX1+)REL,M2M(IMD,DD,IX+D,DIX+) LDHX#STR LDA#’’LOP1:CBEQX+,FOUND
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大数据分析处理个人劳务合同3篇
- 2025年浙江嘉兴市海宁市城投集团招聘笔试参考题库含答案解析
- 二零二五年度鞋类产品回收与再利用技术研究合同3篇
- 2025年度个人健康保险连带担保协议4篇
- 2025年辽宁鞍山国家高新技术产业开发区国有企业招聘笔试参考题库附带答案详解
- 2025年度个人果园生态旅游开发与承包经营合同4篇
- 二零二五年度绿色能源贷款担保服务协议4篇
- 二零二五年度门窗五金件行业人才培养与引进合同4篇
- 二零二五年度民办学校学生宿舍维修与设施更新合同4篇
- 2025年度智能门禁系统节能环保改造合同文档4篇
- 第22单元(二次函数)-单元测试卷(2)-2024-2025学年数学人教版九年级上册(含答案解析)
- 蓝色3D风工作总结汇报模板
- 安全常识课件
- 河北省石家庄市2023-2024学年高一上学期期末联考化学试题(含答案)
- 2024年江苏省导游服务技能大赛理论考试题库(含答案)
- 2024年中考英语阅读理解表格型解题技巧讲解(含练习题及答案)
- 新版中国食物成分表
- 浙江省温州市温州中学2025届数学高二上期末综合测试试题含解析
- 2024年山东省青岛市中考生物试题(含答案)
- 保安公司市场拓展方案-保安拓展工作方案
- GB/T 15843.2-2024网络安全技术实体鉴别第2部分:采用鉴别式加密的机制
评论
0/150
提交评论