当前位置:文档之家› 单片机指令冗余技术

单片机指令冗余技术

单片机指令冗余技术
单片机指令冗余技术

单片机指令冗余技术

通过引用单片机技术,传感器在实际测量中,每当轴转动一周后,就对传感器的输出特性曲线进行定量修正,这样就能基本解决由于被测物体材质的不均匀性给测量结果带来的确定性干扰。

By referencing single-chip computer technology, sensor in actual measurement, whenever axis rotation after a week, it quantitatively correction of sensor output characteristic curve, so it can basically solved due to the inhomogeneity of material object to be tested to measure the results of deterministic disturbance.

在实际工作中,确定性的干扰传感器常常会产生一个确定性的干扰,这是由于传感器的自身结构特点或者外界环境的影响决定的,而这种干扰通常可由单片机来解决。例如电涡流位移传感器在实际的工作中,由于被测物体材料的均匀性和导磁性的不同,会给测量结果带来一定的影响。轴承中轴的位置,需要进行精确的测量,但是由于轴表面不均匀的材质。会使测量变得困难。轴在转动过程中,虽然其位置保持不变,但传感器仍会有电压的输出,这样得到的测量结果会有很大

的误差。由于轴在每次转动中产生的位移保持不变,所以这种干扰也可以说是确定性的。

In practice, a deterministic interference sensor often produces a deterministic disturbance, this is due to their structure characteristics of the sensor or the influence of the external environment, and this kind of interference usually is solved by the single chip microcomputer. Such as eddy current displacement sensor in the actual work, due to the uniformity of material object to be tested and magnetic conductivity, will bring certain influence measurement results. Bearing axial position, need to be measured accurately, but due to the shaft surface uneven material. Will make it difficult to measure. Shaft in the rotation process, although its position remains the same, but the output of the voltage sensor will be, the resulting measurement results will have a lot of errors. Due to the axial displacement of at every turn of remain the same, so the interference is also can be said to be deterministic.

https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html,

2.2 随机干扰传感器的工作环境往往是比较恶劣和复杂的,其应用的可靠性、安全性就成为一个非常突出的问题。所以,需要在工作中尽量减少干扰。提高输出信号信噪比的问题,是传感器研究中的最大难题之一。但是实际上在传感器的使用中,单片机可利用软件来部分消除随机干扰,下面介绍一些在软件抗干扰用到的方法。

2.2.1 指令冗余法单片机受到干扰后,往往会把操作数当作指令码来执行,引起整个程序的混乱和程序弹飞。如果程序弹飞到某一条单字节指令上时,就不会发生将操作数当成指令的错误,而能自动纳入正轨。当弹飞到双字节或三字节指令的操作时,程序将继续弹飞。因此,在程序中插人几个单字节的空操作指令nop,就可以保护其后面的指令不被拆散而被完整地执行。

2.2.2 软件陷阱法系统中未使用的单元用跳转引导指令填满,作为软件“陷阱”,以捕获“飞掉”的程序,并强行将捕获的程序引向一个特定的地址,由一段专站处理错误的程序进行处理,以恢复系统的正常运行。

2.2.3 软件“看门狗,(watch dog)法”watch dog 即定时监视器,俗称“看门狗”,当侵人的电磁干扰使系统程序弹飞,或进入死循环,或死机时,watchdog能够帮助系统自动恢复正常运行。

3 在传感器发展方面的应用

目前。成熟的传感器品种规格繁多,长期以来。由于传感器的输入输出信号符不相同,其原理和电路也差别较大,使得传感器的标准化工作进度较慢。给传感器的用户带来了很多的麻烦。同时,也不利于传感器及测试仪器的发展和在更广阔领域的应用。但是,随着单片机成本逐渐的降低,运算能力的提高以及体积的减小,会给传感器机及测试仪器的发展带来积极的影响。传感器接收外界的压力信号x并产生一个输出信号y,再由接口电路和a/d模数转换器对其进行处理后,输出可由单片机接收的数字信号y,最后由单片机对其处理后,即可得到经过修正的标准输出yc。一般在标定传感器的过程中,输入校准温度和压力点,然后测出x~y的数据,最后用二元函数插值法来修正传感器的非线性误差。

2.2 random disturbance sensor work environment tend to be more severe and complicated, the application of the reliability, security has become a very prominent problem. So, we need to minimize interference in the work. To improve the SNR of output signal problem, is one of the biggest problems in the study of the sensor. But actually in use of

https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html,

sensor, microcontroller part can use software to eliminate the random disturbance, some used in the software anti-interference methods described below.

2.2.1 instruction redundancy method microcontroller interference, often as the operands of the instruction code to execute, cause the whole program of chaos and fly out. If the program play fly to a a single-byte instruction, the operands as instruction will happen error, and can automatically into the right track. When play to double byte or three bytes instruction operation, program will continue to fly. , therefore, in the program into several single-byte nops instruction nop, can protect the following instructions will not be apart and be fully implemented. 2.2.2 software trap method is not used in the system unit filled with jump boot command, as a software "trap", to capture the "fly away" program, and forced the capture program leading to a specific address, handled by a dedicated stand the wrong application for processing, to resume the normal operation of the system. 2.2.3 software "guard dog, watch dog) method" watch dog

regularly monitor, commonly known as "guard dog", when shooting ricochet and electromagnetic interference of the system program, or into an infinite loop, or crash, watchdog can help the system automatically return to normal operation. 3 in application at present. With the development of the sensor Mature sensor specification is various, for a long time. Due to the input and output signals are not the same sensor, the principle and the circuit is also difference is bigger, the sensor of the standardization work progress is slow. For sensor users has brought a lot of trouble. At the same time, also against the development of sensor and testing instruments and in the broader field of application. But as SCM gradually reduce the cost, improve operation ability and the decrease of the volume, will give sensor machine and bring positive impact on the development of testing instruments. Sensor receives the pressure signal and generates an output signal x y, then the interface circuit and a/d analog-to-digital converter for after processing, the output can be received by single

https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html, https://www.doczj.com/doc/434588957.html,

chip digital signal y, finally by the single chip microcomputer after the processing, can get the revised standard output yc. Generally in the process of calibrating sensors, input the calibration temperature and pressure points, and then determinate the x and y data, finally using binary function interpolation method to modify the nonlinear error of sensors.

R单片机指令系统

第五章AVR单片机指令系统 计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。 AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。 SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。 AVR器件(指令速查表) 118条指令器件

1.不带进位加法 ADD一不带进位加 说明:两个寄存器不带进位C标志加,结果送目的寄存器Rd。 操作: RdRd+ Rr 语法:操作码:程序计数器: ADD Rd,Rr O≤d≤31,0≤r≤31 PCPC+1 例子:。(实践操作程序实践操作例子*.ASM,必须编译生成*.OBJ文件才可调试,如要修改*.ASM,必须修改文件属性,去掉*.ASM只读文件属性2.带进位加法 ADC-一带进位加 说明:两个寄存器和C标志的内容相加,结果送目的寄存器Rd。 操作: Rd←Rd+Rr+C 语法:操作码:程序计数器: ADC Rd,Rr 0≤d≤31,0≤r≤31 PC←PC+1 例子:(实践操作程序 3.减1指令 DEC一减1 说明:寄存器Rd的内容减1,结果送目的寄存器Rd中。 操作:RdRd-l 语法:操作码:程序计数器: DEC Rd 0≤d≤31 PCPC十1 例子:(实践操作程序 4.立即数比较 CPI——带立即数比较 说明:该指令完成寄存器Rd和常数的比较操作。寄存器的内容不改变。该指令后能 使用所有条件转移指令。 操作:Rd-K 语法:操作码:程序计数器: CPI Rd, K 16≤d≤31, 0≤ K≤255 PCPC + 1

80C51单片机指令的取指、执行时序

80C51单片机指令的取指、执行时序 使用ALE 信号作为低8 位地址的锁存控制信号。ALE 接到外部锁存器时,高电平期间,51 的p0 输出地址,低电平时锁存器将地址锁存,在ALE 低电平时,(PSEN 为低)p0 口可以传输数据(指令),这样就可以地址/数据复用了。 以PSEN 信号作为扩展程序存储器的读选通信号,在读外部ROM 是PSEN 是低电平有效,以实现对ROM 的读操作。 以EA 信号作为内外程序存储器的选择控制信号,当其为低电平时,对ROM 的读操作限定在外部的程序存储器,当其为高电平时, 对ROM 的读操作是从内部存储器开始的,并可延至外部程序存储器. 由RD 和WR 信号作为扩展数据存储器和I/O 口的读选通、写选通信号。EA 信号是表示是当前指令是读内,还是外存储器的控制信号。如:当选用无片内存储器的单片机,或者不打算用片内存储器时,EA 必须接低电平,此外,片外程序存储器的起始地址应该安排在片内存储器之后。 RD 和WR 信号就相对好理解,就是当读数据时(不分内外、RAM、ROM)它就有效。WR 也是这样的。 80C51 单片机指令的取指、执行时序 现按4 类指令介绍CPU 时序。因为CPU 工作的过程就是取指令与执行指令的过程,所以CPU 必须先取出指令,然后才能执行指令。 1.双字节单周期指令 由于双字节单周期指令必须在一个周期内取机器码二次,所以必须在一个机器周期内安排二次读操作码的操作,分别发生在S1P2 与S4P2。在S1P2 读入机器码74 并送入指令寄存器IR,在S4P2 读入数据03 送入累加器A,即读2 取2。在指令的执行过程中,P0 口要分时传送地址与数据,因此当操作码的地

8051单片机常用指令

3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 9.堆栈操作 3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令

共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指 令;数据交换指令以及准栈操作指令。

9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP) POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H

逻辑运算类指令

逻辑运算类指令 1.对累加器A的逻辑操作: CLR A ;将A中的值清0,单周期单字节指令,与MOV A,#00H效果 相同。 CPL A ;将A中的值按位取反 RL A ;将A中的值逻辑左移 RLC A ;将A中的值加上进位位进行逻辑左移 RR A ;将A中的值进行逻辑右移 RRC A ;将A中的值加上进位位进行逻辑右移 SWAP A ;将A中的值高、低4位交换。 例:(A)=73H,则执行CPL A,这样进行: 73H化为二进制为01110011, 逐位取反即为10001100,也就是8CH。 RL A是将(A)中的值的第7位送到第0位,第0位送1位,依次类推。 例:A中的值为68H,执行RL A。68H化为二进制为01101000,按上图 进行移动。01101000化为11010000,即D0H。 RLC A,是将(A)中的值带上进位位(C)进行移位。

例:A中的值为68H,C中的值为1,则执行RLC A 1 01101000后,结果是0 11010001,也就是C进位位的值变成了0,而(A) 则变成了D1H。 RR A和RRC A就不多谈了,请大家参考上面两个例子自行练习吧。 SWAP A,是将A中的值的高、低4位进行交换。 例:(A)=39H,则执行SWAP A之后,A中的值就是93H。怎么正好 是这么前后交换呢?因为这是一个16进制数,每1个16进位数字代表4 个二进位。注意,如果是这样的:(A)=39,后面没H,执行SWAP A 之后,可不是(A)=93。要将它化成二进制再算:39化为二进制是10111,也就是0001,0111高4位是0001,低4位是0111,交换后是01110001,也 就是71H,即113。 练习,已知(A)=39H,执行下列指令后写出每步的结果 CPL A RL A CLR C RRC A SETB C

关于习题二答案-单片机的指令系统

关于习题二答案-单片机的指令系统

1、执行下列3条指令后,30H单元的内容是( C )。 MOV R0,#30H MOV 40H,#0EH MOV @R0,40H A)40H B)30H C)0EH D)FFH 2、在堆栈中压入一个数据时(B)。 A)先压栈,再令SP+1 B)先令SP+1,再压栈 C)先压栈,再令SP-l D)先令SP-1,再压栈 3、在堆栈操作中,当进栈数据全部弹出后,这时的SP应指向 A 。 A)栈底单元 B)7FH

C)栈底单元地址加1 D)栈底单元地址减l 4、指令MOVC A,@A+PC源操作数的寻址方式是 D 。 A)寄存器寻址方式B)寄存器间接寻址方式 C)直接寻址方式D)变址寻址方式 5、ANL 20H,#30H指令中,源操作数的寻址方式是 A 。 A)立即寻址方式B)直接寻址方式 C)位寻址方式D)相对寻址方式 6、ANL C,/30H指令中,源操作数的寻址方式是 C 。

A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 7、Jz rel指令中,操作数rel的寻址方式是 D 。 A)立即寻址方式 B)直接寻址方式 C)位寻址方式 D)相对寻址方式 8、Jz rel指令中,是判断 A 中的内容是否为0。 A)A B) B C) C D)PC 9、MOVX A,@DPTR指令中源操作数的寻址方式是(B)

A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 10、下面条指令将MCS-51的工作寄存器置成3区(B) A)MOV PSW,#13H (B)MOV PSW,#18H 11、MOV C,00H指令中源操作数的寻址方式是(A) A)位寻址B)直接寻址 C)立即寻址 D)寄存器寻址 1、8051单片机共有7 种寻址方式。访问外部数据存储器应采用寄存器间接寻址方式。 2、访问外部数据存储器应采用寄存器间接寻址方式;查表应使用变址寻址方式。 3、在8051单片机中,堆栈操作的指令有PUSH 和 POP两个。 4、在8051单片机中,子程序调用的指令有ACALL 和 LCALL两个。 5、CJNE指令都是 3字节字节指令。

AVR单片机指令系统

AVR单片机指令系统 计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。 AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握﹑效率高的指令系统。 SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。 AVR器件(指令速查表) 118条指令器件 AT90S2313/2323/2343/2333 ,AT90S4414/4433/4434/851 5,AT90S8534/8535算术和逻辑指令 BRCC k

C清零转 位指令和位测试指令ADD Rd,Rr 加法 BRSH k ≥转 SBI P,b 置位I/O位ADC Rd,Rr 带进位加

BRLO k 小于转(无符号) CBI P,b 清零I/O位◇ ADIW Rdl,K 加立即数 BRMI k 负数转移

LSL Rd 左移SUB Rd,Rr 减法 BRPL k 正数转移 LSR Rd 右移SUBI Rd,Rr

减立即数 BRGE k ≥转(带符号) ROL Rd 带进位左循环SBC Rd,Rr 带进位减 BRLT k 小于转(带符号)

ROR Rd 带进位右循环SBCI Rd,K 带C减立即数 BRHS k H置位转移 ASR Rd 算术右移◇ SBIW Rdl,K

单片机的时钟、时序及复位

四川工程职业技术学院 单片机应用技术课程电子教案 Copyright ? https://www.doczj.com/doc/434588957.html, 第讲 5 8051及P89V51RD2单片机的时钟、 时序和复位

本讲主要内容 5-1. 标准80C51的时钟电路、时间单位与时序 5-2. P89V51RD2单片机的时钟电路、时间单位与时序5-3. P89V51RD2单片机的复位与复位电路

时钟电路 ——用于产生供单片机各部分同步工作的时钟信号 方法1:用石英晶体振荡器 方法2:从外部输入时钟信号 (80C51) 80C51振荡器 C1 C2 CYS 80C51 悬空 外部时钟信号 XTAL1 XTAL2 XTAL2 XTAL1

单片机内部的时间单位 S1 S2S3S4S5S6 机器周期T CY 分频器 振荡器 晶振周期 时钟周期(S 状态) 80C51 P1 P2 ALE 信号

单片机内部的时间单位 ?振荡频率f osc = 石英晶体频率或外部输入时钟频率 振荡周期= 振荡频率的倒数 ?机器周期 机器周期是单片机应用中衡量时间长短的最主要的单位 在多数51系列单片机中: 1机器周期= 12×1/ fosc ?指令周期——执行一条指令所需要的时间 单位:机器周期 51单片机中:单周期指令、双周期指令、四周期指令

单片机内部的时间单位 课堂练习: 如果某单片机的振荡频率f =12MHz,则: osc 振荡周期=S=mS=uS; 机器周期=uS; 已知乘法指令“MUL AB”是一条4周期指令,则执行这条指令需要uS; 加法指令“ADD A,#01H”是单周期指令,那么1S内该单片机可以进 行次加法运算。

位及位操作指令

位及位操作指令 通过前面那些流水灯的例子,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,可以直接用数值来表在。可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例子吗? 我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进 制才知道。工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处 理就显示有些麻烦,所以在8031单片机中特意引入一个位处理机制。 1.位寻址区 在8031中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,可以直接用这个地址来对此进行操作。

图1 内部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。 2.可以位寻址的特殊功能寄存器 8031中有一些SFR是可以进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON (定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。以上的一些SFR我们还不熟,等我们讲解相关内容时再作详细解释。 3.位操作指令 MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。在进行位处理时,CY(就是我们前面讲的进位位)称“位累加器”。有自已的位RAM,也就是我们刚讲的内部RAM 的20H-2FH这16个字节单元即128个位单元,还有自已的位I/O空间(即P0.0…..P0.7,P1.0…….P1.7,P2.0……..P2.7,P3.0……..P3.7)。当然在物理

51单片机指令

3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。 Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指

令;数据交换指令以及准栈操作指令。 9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP)

POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例 把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H 数据传送与交换类指令是各类指令中数量最多、使用最频繁的一类指令,编程时应能十分熟练地灵活运用

51单片机汇编指令集

1)数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移;

单片机指令英文全称

51单片机汇编指令集(指令集带英文翻译) 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX(Move External RAM)对外部RAM的数据传送; XCH(Exchange)字节交换; XCHD(Exchange low-order Digit)低半字节交换; PUSH(Push onto Stack)入栈; POP (Pop from Stack)出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC(Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap)低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set)有进位则转移;

单片机指令周期怎么计算

单片机指令周期怎么计算 指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。 来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。 指令周期是不确定的,因为她和该条指令所包含的机器周期有关。一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。 对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期) 也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。 该定义指的是执行一条指令所需要的时间,通常一个指令周期会由若干个机器周期组成。指令不同,所需的机器周期数也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 PIC单片机指令周期计算PIC单片机的每四个时钟周期为一个内部指令周期 例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS 实例一:35us,8MHz的晶振,8位定时器,分频比1/2 ,初值E4 实例二:156.25us ,32768Hz的晶振,8位定时器,分频比1/32 ,初值FC 计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2

实验一传送类和逻辑运算类指令练习

实验一 3.1 传送类和逻辑运算类指令练习 系别专业:电子系12级电信2班学号:3121003210 姓名:李书杰指导老师:刘志群老师 3.1.1 实验要求 1、参照第1章的介绍,观察TD-NMC+实验平台中各模块的位置及相应引脚的引出线。 2、复习传送类、逻辑类指令及程序的相关知识。 3、实验之前,请详细阅读第1、2章的内容,知道使用软件实验的步骤。 3.1.2 实验设备 PC 机一台,TD-NMC+教学实验系统 3.1.3 实验目的 1、了解TD-NMC+实验平台上各主要元器件及其插座的安装分布。 2、熟悉单片机仿真实验软件Keil C51的使用。 3、体会8051单片机传送和逻辑运算类指令的功能,掌握汇编语言设计和调试方法 3.1.4 实验内容 实验1程序: (1)实验前请分析程序,计算下表各寄存器和存储单元的理论值并填入下表的 (2)编辑、编译、运行调试该程序,通过数据窗口和寄存器窗口查看各寄存器和存储单元的值并填入下表的第二空栏处,比较实验值和理论值是否相同。 实验1表

(3)软件调试程序时尽量采用单步执行或断点执行的方法,能跟踪程序的执行,还比较容易发现程序的错误。 实验2 编写一个程序,把片外RAM 7000H、7001H的低位相拼后送入7002H单元。其实验参考流程图如图3.1.1所示。 观察窗口,若(7000H)=03H,(7001H)=04H,那么(7002H)=34H。 3.1.5 思考题 1.上机实验后,你认为使用Keil软件应注意什么问题? 解:在使用Keil时应将文件保存以.ASM的格式。 2.MOVX、ANL、ORL和XCHD的功能? 解: MOVX外部寻址指令。ANL将两个指令相加。ORL两个 指令的或运算。XCHD将两个指令互换。 3.若把片外RAM7000H的高位、7001H的低位相拼后送入 7002H单元,程序该如何编写? 解:MOV DPTR, #7000H MOVX A, @DPTR INC DPTR MOV B, A MOVX A, @DPTR INC DPTR

MCS-51单片机的指令时序

MCS-51单片机的指令时序 时序是用定时单位来描述的,MCS-51的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来我们分别加以说明。 ·节拍与状态: 我们把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍我们定义为1(P1),后半周期对应的节拍定义为2(P2)。 ·机器周期: MCS-51有固定的机器周期,规定一个机器周期有6个状态,分别表示为S1-S6,而一个状态包含两个节拍,那么一个机器周期就有12个节拍,我们可以记着S1P1、S1P2……S6P1、S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHz的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是1us。 ·指令周期: 执行一条指令所需要的时间称为指令周期,MCS-51的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期(这些内容,我们将在下面的章节中加以说明)。 ·MCS-51的指令时序: MCS-51指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式: ·单字节指令单机器周期 ·单字节指令双机器周期 ·双字节指令单机器周期

·三字节指令双机器周期 ·单字节指令四机器周期(如单字节的乘除法指令) 下图是MCS-51系列单片机的指令时序图: 上图是单周期和双周期取指及执行时序,图中的ALE脉冲是为了锁存地址的选通信号,显然, 每出现一次该信号单片机即进行一次读指令操作。从时序图中可看出,该信号是时钟频率6分 频后得到,在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在 S4P2和S5P1期间。 接下来我们分别对几个典型的指令时序加以说明。 ·单字节单周期指令: 单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,那么读出的还是原指令,属于一次无效的读操作。 ·双字节单周期指令: 这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。

MCS-51单片机指令系统

一、填空题 1、寻址是指( )。80C51单片机指令系统有7种寻址方式,分别是:( )。 2、访问内部RAM可以采用的两种寻址方式为:( )和( )。 3、MCS-51单片机指令的基本格式为:( )。 4、Rn代表( ),其中n的取值范围是( );Ri代表( ),其中i的取值范围是( )。@Ri的含义是( )。 5、在单片机指令中,30H和#30H的区别是( );R0和@ R0的区别是( );A←R1 和A←(R1) 的区别是( );DPTR和@DPTR的区别是( )。 6、汇编是指由( )“翻译”为( )的过程。 7、常用的伪指令有8条,试写出其中的5条( )、( )、( )、( )、( )。 8、LJMP指令的转移范围是(); AJMP指令的转移范围是(); SJMP指令的转移范围是()。 二、简答题 1、指出下列指令中的操作数的寻址方式。 (1)MOV R0,#30H (2)MOV A,30H (3)MOV A,@R0 (4)MOV @R0,A (5)MOVC A,@A+DPTR (6)CJNE A,#00H,30H (7)MOV C,30H (8)MUL AB (9)MOV DPTR,#1234H (10)POP ACC 2、80C51指令中,常用字符代表立即数或存储单元,试判断下列字符ABC的含义。(1)MOV A,#ABC (2)MOV A,ABC (3)MOV C,ABC (4)MOV DPTR,#ABC 3、若R0=11H,(11H)=22H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV A,R0 (2)MOV A,@R0 (3)MOV A,33H (4)MOV A,#33H 4、若A=11H,(11H)=22H,B=44H,写出执行下列指令后的结果。 (1)MOV R1,A (2)MOV R3,11H (3)MOV R3,#11H (4)MOV R3,B 5、若A=11H,R0=33H,(22H)=66H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV 40H,A (2)MOV 40H,R0 (3)MOV 40H,@R0 (4)MOV 40H,22H (5)MOV 40H,#22H 6、若A=11H,R0=33H,(22H)=66H,(33H)=44H,写出执行下列指令后的结果。 (1)MOV @R0,A (2)MOV @R0,22H (3)MOV @R0,#22H 7、若 A=11H,R0=33H,B=44H,(11H)=22H,(22H)=66H,(33H)=44H,分别写出执行下列指令后的结果。 (1)MOV A,R0 (2)MOV B,#55H (3)MOV 40H,@R0 (4)MOV 11H,22H (5)MOV @R0,22H 8、试将30H、R7、B、A、PSW、DPTR中的数据依次压入堆栈。并指出每次堆栈操作后,SP=?、(SP)=?设原SP=60H,当前工作寄存器区为0区,(30H)=11H,R7=22H,B=33H,A=44H,PSW=55H,DPTR=6677H。 9、若A=78H,R0=34H,(34H)=DCH,(56H)=ABH,求分别执行下列指令后A和Cy中的数据。 (1)ADD A,R0 (2)ADDC A,@R0 (3)ADD A,56H (4)ADD A,#56H

51单片机堆栈操作指令举例说明

什么是堆栈?MCS-51单片机的堆栈怎样设置的? 答:程序设计时,往往需要一个后进先出的RAM区,以保存CPU的现场。这种后进先出的缓冲区,就称为堆栈。 MCS-51单片的堆栈原则上设在内部RAM的任意区域内。但是,一般设在31H~7FH的范围之间,栈顶的位置由栈指针SP指出。51单片机堆栈操作指令举例说明 时间:2009-03-02 18:46来源:未知作者:牛牛点击:149次 这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP 所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。 堆栈操作指令有两条: PUSH direct POP direct 第一条指令称之为推入,就是将direct中的内容送入堆栈中,第二条指令称之为弹出,就是将堆栈中的内容送回到direct中。推入指令的执行过程是,首先将SP中的值加1,然后把SP 中的值当作地址,将direct中的值送进以 堆栈操作指令有两条: PUSH direct POP direct 第一条指令称之为推入,就是将direct中的内容送入堆栈中,第二条指令称之为弹出,就是将堆栈中的内容送回到direct中。推入指令的执行过程是,首先将SP中的值加1,然后把SP中的值当作地址,将direct中的值送进以SP中的值为地址的RAM单元中。例: MOV SP,#5FH MOV A,#100 MOV B,#20 PUSH ACC

第12讲 位操作指令1

第十二讲位操作指令 教学方法: 讲授法 教学时数:2学时 教学目的: 1、了解位传送、位控制转移指令的功能 2、掌握位操作指令的使用 教学重点: 位传送、位控制转移 教学难点: 布尔条件判断转移指令 教学环节 组织教学:(2分钟)检查学生人数,强调作业要求。 复习提问:1、控制转移指令分为几类? 2、LJMP、AJMP、SJMP、JMP属于哪一类? LCALL、ACALL属于哪一类? 3、无条件转移指令的转移条件分别是什么? 4、可按位寻址的空间是怎样的? 讲授新课:§3-3 位操作指令 包括:位传送指令、条件转移指令、位运算指令。 位操作由单片机内布尔处理器来完成。 位地址的四种表示: 1)使用直接位地址表示:如20H、30H、33H等; 2)使用位寄存器名来表示;如C、OV、F0等; 3)用字节寄存器名后加位数来表示:如PSW.4、P0.5、ACC.3等;4)字节地址加位数来表示:如20.0、30.4、50.7等。 一、位传送指令 MOV C,bit MOV bit,C 功能:(C)(bit); 二、位状态控制指令 CLR bit ;(bit)0 SETB bit ;(bit) 1 CPL bit ;(bit)(/ bit) 例1、编程通过P10线连续输出256个宽度为5个机器周期长的方波。解:MOV R0,#00H

CLR P10 LOOP:CPL P10 NOP NOP DJNZ R0,LOOP 三、位逻辑操作指令 ANL C,bit ;(C)(C)∧(bit) ANL C,/ bit ;(C)(C)∧(/ bit) ORL C,bit ;(C)(C)∨(bit) ORL C,/bit ;(C)(C)∨(/bit) 例2、用软件实现下图所示的P10 ~ P13间的逻辑运算。 P10 & P11 ≥1 P12 P13 解: MOV C,P11 ORL C,P12 ANL C,P10 MOV P13,C 四、布尔条件转移指令 有5条,分别对C和直接位地址进行测试,并根据其状态执行转移。 1、判布尔累加器转移 JC rel ;(C)= 1,转移,否则顺序执行。 JNC rel ;(C)= 0,转移,否则顺序执行。 不影响标志。转移地址:(PC)(PC)+ rel 例3、比较内部RAM的30H和40H单元中的二个无符号数的大小,将大数存入20H单元,小数存入21H单元,若二数相等,则使内RAM的第127位置1。 解: MOV A,30H CJNE A,40H,LOOP SETB 7FH SJMP $ LOOP1: JC LOOP2 MOV 20H,A

单片机指令大全

单片机指令大全- - 指令格式功能简述字节数周期 一、数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2

MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1 XCH A ,@Ri 累加器与内部RAM单元交换 1 1 XCHD A ,direct 累加器与直接寻址单元交换 2 1 XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1 POP direct 栈顶弹出指令直接寻址单元 2 2 PUSH direct 直接寻址单元压入栈顶 2 2 二、算术运算类指令 ADD A, Rn 累加器加寄存器 1 1 ADD A,@Ri 累加器加内部RAM单元 1 1 ADD A, direct 累加器加直接寻址单元 2 1

单片机时序分析

单片机时序分析 前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZ R6,D2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。 先提一个问题:我们学校里什么是最重要的。(铃声)校长可以出差,老师可以休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们可以称之为时序??时间的顺序。一个由人组成的单位尚且要有一定的时序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机要完成的事更复杂,所以它的时序也更复杂。 我们已知,计算机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,好象我们人用秒作为我们的时间基准一样,为什么不干脆用秒,多好,很习惯,学下去我们就会知道用秒反而不习惯。 一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶振的单片机,它的机器周期是多少)。 MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如DJNZ指令是双周期指令。 下面让我们来计算刚才的延时。首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共

单片机:51单片机的延时及时序分析

计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。 单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作,在学习51单片机的时序之前,我们先来了解下时序相关的一些概念。 既然计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。 我们学习的8051单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。 8051单片机的时钟产生有以下两种方法: 1. 内部时钟方式:利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。 2. 外部时钟方式:此方式是利用外部振荡脉冲接入XTAL1或XTAL2。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。如下图

相关主题
文本预览
相关文档 最新文档