4 基本位操作指令

4 基本位操作指令
4 基本位操作指令

澧县职业中专学校教案

教研组长签名教师签名

班级电子C359、C360、C361

日期

课题第五章S7-200系列PLC基本指令

教学目的(知识教学与思想教学)

1、基本逻辑指令及使用

教学重点:指令格式、功能

教学难点:指令的理解

课型:理论课

主要教学方法:讲授

教学过程教学方法

时间分配

Ⅰ组织教学

维持秩序、准备上课

Ⅱ教学导入

基本逻辑指令是指构成基本逻辑运算功能指令的集合,包括基本位操作、置位/复位、边沿触发、定时、计数、比较等逻辑指令。本课主要介绍基本位操作指令。

Ⅲ新课讲授第五章S7-200系列PLC基本指令

1.基本位操作指令

一.取指令(LD): 用于网络块逻辑运算开始的常开触点与母线的连接.

二.取反指令(LDN):用于网络开始的常开触点与母线的连接.

三.输出指令(=):线圈驱动指令. 1 4 25

使用说明:

使用说明:

(1)网络块开始都要用LD.LDN启始

(2)=指令不能用于输入继电器

(3)=指令可连续使用任意次

(4)在同一程序中不要使用双线圈输出

继电器的触点: PLC的触点

KM

SB

常闭触点

继电器线圈 PLC线圈

1.基本位操作指令

1)指令格式:

梯形图(LAD)

语句表(STL)

LD I0.0 LDN I0.1

A I0.0 AN I0.1

O I0.0 ON I0.1

= Q0.0

常用指令助记符的定义:

25 (1)LD: 装载指令,对应梯形图左侧母线开始,连接动合触头;

(2)LDN:装载指令, 对应梯形图左侧母线开始,连接动断触头;

(3)A:与操作指令,用于动合触点的串联连接;

(4)AN:与非操作指令, 用于动断触点的串联连接;

(5)O:或操作指令, 用于动合触点的并联连接:

(6)ON:或非操作指令, 用于动断触点的并联连接;

(7)=(OUT)输出指令,线圈输出.

触点的串联例题;30

使用说明:(1)串联触点可以使用上限为11个

(2)连续输出电路可以反复使用= 指令,但次序必须正确,不然就不能连续使用。

Ⅳ. 课后小结:

PLC的基本位操作可以编写PLC的许多基本程序,非常重要,要了解其基本格式、功能。

Ⅴ. 习题布置:

Ⅵ. 课后分析4 1

第2章单片机指令篇

第二章 MCS_51指令系统 2.1.2 寻址方式 关键:有几个放数的地方? 如何找到数,数送到什么地方去? 数字量0和1与模拟量0伏和5伏的关 系。 1.寄存器寻址方式MOV A ,R0 2.直接寻址方式MOV A ,30H 3.寄存器间接寻址方式MOV A ,@R0 4.立即寻址方式MOV A ,#30H 5.位寻址方式ANL C ,30H 6.变址寻址方式MOVC A,@A+DPTR MOVC A ,@A+PC JMP A ,@A+DPTR 7.相对寻址方式SJMP rel 2.2 数据传送指令 2.2.1 内部RAM数据传送指令组

1.立即数传送指令 MOV A,#data MOV direct, #data MOV Rn, #data MOV @Ri, #data MOV DPTR,#data16 2.内部RAM之间的数据传送指令MOV direct2,direct1 MOV direct, Rn MOV Rn, direct MOV direct, @Ri MOV @Ri, direct 3.累加器的数据传送指令 MOV A,Rn MOV Rn , A MOV A , direct MOV direct , A MOV A , @Ri MOV @Ri , A

2.2.2 外部RAM数据传送指令组 对外部RAM只能使用间接寻址方法,分别使用DPTR和Ri作间址寄存器 1.使用DPTR进行间接寻址 MOVX A ,@DPTR MOVX @DPTR,A 2.使用Ri进行间接寻址 MOVX A ,@Ri MOVX @Ri,A 2.2.3 程序存储器数据传送指令组MOVC A,@A+DPTR MOVC A,@A+PC 寻址范围64KB 2.2.4 数据交换指令组 数据交换指令主要是在内部RAM单元与累加器A这之间进行,有整字节和半字节交换1. 整字节交换指令 XCH A,Rn

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

串操作指令与重复前缀--习题

课堂练习题目: 23.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用()SCASB串操作指令。 A.REPNE B.REP C.REPE D.REPNZ 26.在串操作指令中,SI指向串,DI指向串。 27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用重复前缀。 29.段内调用指令改变中的内容。 30.段间调用指令改变中的内容。 12.现有程序段如下: CLD MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV CX,100 REP MOVSB 请回答:该程序段完成的功能是什么? 13.现有程序段如下: CLD LEA DI,BUF MOV AL,20H MOV CX,100 REPNZ SCASB 请回答:(1)该程序段完成的功能是什么? (2)若ZF=1,表示BUF中值为20H数据 (3)若BUF的首地址为0,ZF=0,执行完该程序段后DI= 。 1.使用串操作指令,将BUF缓冲区中的100个字节清0。 2.比较5个字节的字符串A和B,若两个串相等则字节标志单元FLG置0;否则清1。

答案========================================= 课堂练习题目: 23.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用()SCASB串操作指令。 A.REPNE B.REP C.REPE D.REPNZ 26.在串操作指令中,SI指向串,DI指向串。 27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用重复前缀。 29.段内调用指令改变中的内容。 30.段间调用指令改变中的内容。 参考答案: 26.源,目的 27.REPNE(REPNZ) 29.IP 30.CS和IP 12.现有程序段如下: CLD MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV CX,100 REP MOVSB 请回答:该程序段完成的功能是什么? 12.将BUF1中100个字节的数据传送到BUF2中。 13.现有程序段如下: CLD LEA DI,BUF MOV AL,20H MOV CX,100 REPNZ SCASB 请回答:(1)该程序段完成的功能是什么? (2)若ZF=1,表示BUF中值为20H数据 (3)若BUF的首地址为0,ZF=0,执行完该程序段后DI= 。 13.(1)查找BUF中为空格(20H)字符。 (2)有 (3)100

单片机课后习题解答

练习练习练习 第二章单片机结构及原理 1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:(1)一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。 (2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。 (3)4K ROM程序存贮器:存贮程序及常用表格。 (4)128B RAM 数据存贮器:存贮一些中间变量和常数等。 (5)两个16bit定时器/计数器:完全硬件定时器 (6)32根可编程I/O口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入或输出。 (7)一个可编程全双工串行口。 (8)五个中断源。 2、什么是指令?什么是程序? 答:指令是规定计算机执行某种操作的命令。 程序是根据任务要求有序编排指令的集合。 3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间? 答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。 4、开机复位后,CPU使用的是哪组工作寄存器?他们的地址是多少?CPU如何确定和改变当前工作寄存器组? 答:开机复位后,CPU使用的是第0组工作寄存器,地址为00H~07H,CPU通过改变状态字寄存器PSW中的RS0和RS1来确定工作寄存器组。 5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果CPU 在操作中要使用两组工作寄存器,SP应该多大? 答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H~1FH为工作寄存器区,20H~2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。 6、89S51/52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机周期为多少微秒? 答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。 若fosc=8MHz,则一个机器周期=1/8×12μs=1.5μs 7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突? 答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。 8、程序状态字寄存器PSW的作用是什么?常用状态标志有哪些位?作用是什么? 答:程序状态字PSW是8位寄存器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下: PSW.7(C y):进位标志位。 PSW.6(AC):辅助进位标志位,又称为半进位标志位。 PSW.5(F0):用户标志位。

实验六 串操作指令

串操作指令程序设计 实验目的: 掌握串传送指令功能及执行规律 理解dos中断的2号和9号功能应用 实验内容: 1.要求将串string1传送给string2(数据传送串指令) 2.比较字符串SOU(在数据段中)和字符串TAR(在附加段中)中否相同,若相同则输出YES,不相同输出NO(串比较指令) 3.把附加段中从ARRAY开始的10个字置为ab(存入串指令) 4.从字符串STRING1的结尾取出一个字符,送入AL寄存器,并送屏幕显示(取出串指令) 5.设str是附加段中长度为20字节的字符串,现查询该串是否有该字符,若有则输出"find",没有输出"no find"(串扫描指令) 实验报告要求: (1)画出程序的流程图 (2)列出程序清单 (3)说明每种传送指令的功能 附:源程序 1、要求将串string1传送给string2 data segment string1 db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' data ends edata segment string2 db 26 dup(?) edata ends code segment assume cs:code,ds:data,es:edata main proc far push ds xor ax,ax push ax mov ax,data mov ds,ax mov ax,edata mov es,ax lea si,string1 lea di,string2 cld mov cx,26 rep movsb ;当CX不为零时重复做movsb指令 ;调用dos的9号中断来显示字符串"YES" ;dos 的9号中断显示的字符串结尾一定是一个"$" mov al,"$" mov [string2+26],al;给字符串结尾加一个"$"

51单片机位操作

C51单片机位操作方法 [日期:2010-10-21 ] [来源:本站原创作者:佚名] [字体:大中小] (投递新闻) C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。 1、位运算符 C51提供了几种位操作符,如下表所示: 运算符含义运算符含义 &按位与~取反 |按位或<<左移 ^按位异或>>右移 1)“按位与”运算符(&) 参加运算的两个数据,按二进位进行“与”运算。原则是全1为1,有0为0,即:0&0=0; 0&1=0; 1&0=0; 1&1=1; 如下例: a=5&3; //a=(0b 0101) & (0b 0011) =0b 0001 =1 那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形式表示的 二进制数来进行与运算。 a=-5&-3; //a=(0b 1011) & (0b1101) =0b 1001 =-7 在实际的应用中与操作经常被用于实现特定的功能: 1.清零 “按位与”通常被用来使变量中的某一位清零。如下例: a=0xfe; //a=0b 11111110 a=a&0x55; //使变量a的第1位、第3位、第5位、第7位清零a= 0b 01010100 2.检测位 要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。 a=0xf5; //a=0b 11110101 result=a&0x08; //检测a的第三位,result=0 3.保留变量的某一位 要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。 a=0x55; //a=0b 01010101 a=a&0x0f; //将高四位清零,而保留低四位a=0x05

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

51单片机基础知识 (问答题)

1、单片机的机器周期、状态周期、振荡周期和指令周期之间是什么关系? 答:一个机器周期恒等于6个状态周期或12个振荡周期,即1M=6S=12P。 2、存储器中有几个保留特殊功能的单元用做入口地址?作用是什么? 答:MCS-51系列单片机的存储器中有6个保留特殊功能单元; 作用:0000H为复位入口、0003H为外部中断0入口、000BH为T0溢出中断入口、0013H为外部中断1入口、001BH为T1溢出中断入口、0023H为串行接口中断入口。 3、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工 作寄存器组? 答:开机复位后,CPU使用的是第0组工作寄存器。 它们的地址是00H~07H。CPU通过对程序状态字PSW中RS1、RS0的设置来确定和改变当前工作寄存器组。如:RS1、RS0为00则指向第0组;为01则指向第1组;为10则指向第2组;为11则指向第3组。 4、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片 机时钟周期为多少微秒? 答:MCS-51的时钟周期是最小的定时单位,也称为振荡周期或节拍。一个机器周期包含12个时钟周期或节拍。不同的指令其指令周期一般是不同的,可包含有1~4个机器周期。 当振荡频率为8MHz时,一个单片机时钟周期为0.125μs 。 5、EA/V 引脚有何功用?8031的引脚应如何处理?为什么? PP 答:EA/V PP是双功能引脚: (1)EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。 (2)EA接低电平时,CPU只能执行外部程序存储器的指令。 8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。 在对8751单片机内部的EPROM编程时,此引脚V PP外接+12V电压,用于固化EPROM程序。 6、单片机对中断优先级的处理原则是什么? 答:⑴低级不能打断高级,高级能够打断低级; ⑵一个中断以被响应,同级的被禁止; ⑶同级,按查询顺序,INT0→T0→INT1→T1→串行接口。 7、MCS-51的外部中断的触发方式有哪两种?他们对触发脉冲或电平有什么要求? 答:有电平触发和脉冲触发。

位及位操作指令

位及位操作指令 通过前面那些流水灯的例子,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,可以直接用数值来表在。可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例子吗? 我们知道送往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单片机的基本端口操作

51单片机的基本端口 操作

第一章51单片机的基本端口操作 主要对单片机最简系统在实际应用中的使用方法,从简单到复杂地实现单片机最简系统的基本功能。 “点亮最简单的单片机系统”从单片机原理上介绍单片机的基本组成和最简单系统的典型电路,以及有关单片机 C51编程方法和例程。 “更加明亮的小灯”从功能上介绍如何使LED发光稳定,从原理上介绍单片机I/O口的电气特性和使用方法。 “定时亮灭的小灯”介绍如何使LED灯定时亮、灭,从单片机原理上介绍定时器的使用和编程方法。 “小灯亮灭的人工控制”从功能上介绍如何通过按键控制LED灯的亮灭,从单片机原理上介绍单片机中断的使用和编程方法。 先复习下Keil 51的操作。 1.1点亮最简单的单片机系统 常用MCS-51系列单片机引脚功能说明

提问:什么是单片机系统、 提问:单片机中晶振有什么作用? 回答:单片机访问一次存储器的时间,称之为一个及其周期, 是一个时间基准。一个机器周期包括12 个时钟周期。如果一个单片机选择了12MHz 晶振,它的时钟周期是 1/12us ,它的一个机器周期是 12X (1/12us ),也就是 1us 。 若是12MHz 的晶振,当单片机中定时 /计数器的数值加 1时,实际经过的时间就是 1us 。 提示:晶振电路,复位电路

基本电路图: 发光二极管导通压降通常为1.7V-1.9V; 为什么要接电阻? 电路原理及器件选择? 89C51:单片机,控制发光二极管亮灭 OSC:晶振,在本例中选择12MHz的立式晶振C3,C2:晶振电路的起振电容,容值为22pF

L1:发光二极管 R1:限流电阻,阻值为1k欧 地址分配和连接? P1.0:与发光二极管电路相连,控制LED发光二极管阴极的电平高低 RESET:复位引脚 X1,X2:单片机的晶振引脚 程序设计: 延时程序:我们先不使用单片机的定时器,而是直接采用软件的延时程序定时控制发光二极管的亮灭。在12M晶振时,一个指令周期为1us,那么1M次就是1s。 程序代码: #include sbit gate=P1^0; //位定义 void main(void) { unsigned int i,j; while(1) { for(i=1000;i>0;i--) //双重循环,延时约1s

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)有进位则转移;

串操作指令

串操作指令 串操作指令就是用一条指令实现对一串字符或数据的操作。8086的串操作指令的特点是: ◆通过加重复前缀来实现重复操作。重复的次数取决于C X寄存器的内容(在字符串比较和字符串检索指令中还与Z F标志有关)。 ◆可以对字节串进行操作,也可以对字串进行操作。 ◆所有的串操作指令都用寄存器S I对源操作数进行间接寻址,默认段寄存器为D S;所有的串操作指令都用寄存器D I为目的操作 数进行间接寻址,默认段寄存器为E S。串操作指令是唯一的一组源操作数和目的操作数都在存储器中的指令。 ◆串操作时,地址指针的修改与方向标志D F有关,当D F=1时,S I和D I作自动减量修改,当D F=0时,S I和D I作自动增量修改。 串操作指令一共有5条: ◆字符串传送指令M O V S B/M O V S W ◆字符串比较指令C M P S B/C M P S W ◆字符串检索指令S C A S B/S C A S W ◆取字符串指令L O D S B/L O D S W ◆存字符串指令S T O S B/S T O S W 与上面串操作指令配合使用的重复前缀有: ◆重复R E P ◆相等则重复/为零则重复R E P E/R E P Z

◆不相等则重复/不为零则重复R E P N E/R E P N Z 在串操作指令的前面加上重复前缀,使C P U能重复执行该指令,这使处理长字符串比用软件循环处理快得多。在执行有重复前缀的 串操作指令时,C X寄存器控制重复次数,每重复执行一次,C X内 容减1,C X减为0结束;此外,还可以按规定的条件(Z F=1或Z F =0)结束重复过程。重复前缀对规定条件的检测,是在每次进入串操作以前进行的。所以若初始化使操作次数C X为0,它将不会引起任何操作。 一、字符串传送指令M O V S B/M O V S W 字符串传送指令M O V S B/M O V S W将位于D S段的、由S I所指出的存储单元的内容传送到位于E S段、由D I所指的存储单元中,再修改S I和D I,从而指向下一个元素,M O V S B用于字节传送, M O V S W用于字传送。 M O V S B或M O V S W指令前面通常加重复前缀R E P。重复执行的次数取决于C X寄存器的值,每次执行先检查C X内容,当C X为0则退出,不为0则将C X内容减1,然后传送一次。 【例】我们来看下面的程序段。 M O V S I,1000H;源有效地址地址为1000H M O V D I,2000H;目的有效地址地址为2000H M O V C X,100;字符串长100个字节 C L D;方向标志清0,使指针按增量方向修改

)1MCS51单片机的指令格式中操作码与操作数之间必须用...

第2章汇编语言----智能电子产品的指令系统 判断题 ()1.MCS—51单片机的指令格式中操作码与操作数之间必须用“,”分隔。 ()2.MCS—51指令:MOV A,#40H ;表示将立即数40H 传送至A 中。 ()3.MCS—51指令:MOV A,@R0 ;表示将R0指示的地址单元中的内容传送至A 中。()4.MCS—51 指令:MOVX A,@DPTR ;表示将DPTR 指示的地址单元中的内容传送至A 中。 ()5.MCS—51 的数据传送指令是把源操作数传送到目的操作数,指令执行后,源操作数改变,目的操作数修改为源操作数。 ()6.MCS—51指令中,MOVX 为片外RAM 传送指令。 ()7.MCS—51指令中,MOVC 为ROM 传送指令。 ()8.将37H 单元的内容传送至A的指令是:MOV A,#37H。 ()9.MCS—51指令中,16 位立即数传送指令是:MOV DPTR,#data16。 ()10.MCS—51 单片机,CPU 对片外RAM 的访问只能用寄存器间接寻址的方式,且仅有4 条指令。 ()11.如JC rel 发生跳转时,目标地址为当前指令地址加上偏移量。 ()12.对于8051 单片机,当CPU 对内部程序存储器寻址超过4K 时,系统会自动在外部程序存储器中寻址。 ()13.指令MUL AB 执行前(A)=F0H,(B)=05H,执行后(A)=FH5,(B)=00H。()14.已知:DPTR=11FFH 执行INC DPTR 后,结果:DPTR=1200H。 ()15.已知:A=11H B=04H,执行指令DIV AB后,其结果:A=04H,B=1 CY=OV=0。()16.已知:A=1FH,(30H)=83H,执行ANL A,30H 后,结果:A=03H (30H)=83H P=0。 ()17.无条件转移指令LJMP addr16 称长转移指令,允许转移的目标地址在128KB 空间范围内。 ()18.MCS—51 指令系统中,执行指令FGO bit F0 ,表示凡用到F0 位的指令中均可用FGO 来代替。 ()19.MCS—51指令系统中,执行指令ORG 2000H;BCD:DB “A,B,C,D”表示将A、B、C、D 的ASII 码值依次存入2000H 开始的连续单元中。

80C51单片机的复位标志位的实现

80C51单片机的复位标志位的实现 设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。 MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地址复位和欠压复位。51兼容的P89LPC900系列有一个复位源寄存器,负责记录6种复位标志位:欠压复位、上电复位、外部复位、看门狗复位、软件复位和UART收到间隔字符复位(主要作为进入ISP监控程序的途径之一)。就连初学者很常用的 AT89S51/52和P89C52X2,也在其电源控制寄存器PCON中增设了一个上电标志位POF。 1 复位标志位的设置方法 传统的80C51单片机没有设计复位标志位的记录功能,这应该说是一种遗憾,那么能否通过一定的技术手段来弥补这个缺憾呢?这里给广大80C51单片机用户提供一种启示和引导。 实现复位标志位的记录肯定需要一定的硬件电路支持,而这种电路的设计不存在固定模式。

应用了一个4输入端“与非”门G1和一个按钮开关SW1,还占用了80C51的5条I/O引脚P1.0~P1.4以及一个外部中断源 INT0,并且预先通过初始化软件设置INT0为唯一的高级中断源,下降沿触发方式有效,开放总中断使能位EA。平时G1因各输入端都维持在高电平上,因而其输出端也保持高电平。电路中利用了一个海量电容器C1作为储存能量的器件,扮演着备用电池的角色。由于二极管D1的存在,在主电源断电期间,C1仅为单片机供电,应该让这时的80C51进入耗能最低的停机状态(PD模式)。 在图1电路的基础上配合必要的用户软件,就可以在7种不同复位源引起复位之后保存6个标志位来记录7种复位标志,以下分别进行讲解。可以事先在RAM的位寻址区间分配一个字节,例如20H 单元,用于记录6个复位标志位。 假设该寄存器定名为SRFR(System Reset Flag Register),字节地址为20H,8位当中仅利用了6位,bit5~bit0分别记录人工复位、欠压复位、看门狗复位、非法地址复位、软硬件复位和软件复位。 ① MRST:人工复位。当复位按钮SW1被按下时引发INT0中断;在中断服务程序中检测输入引脚P1.4的状态。如果P1.4=0,则置位MRST,记录下曾经发生了一次人工复位操作。然后进行一次主动的复位操作,方法是从输出脚P1.0输出一个低电平给MAX813L的输入引脚MR,经 MAX813L延时后从输出端RESET送出高电平复位信号给80C51,令其进行一次硬件复位操作。

微机原理指令小结

8086CPU 指令小结 所有指令: (1)立即数不能作为目的操作数。 (2)不能在 2 个存储单元之间直接进行操作(串操作除外) 。 (3)MOV 指令和堆栈指令是惟一能对段寄存器进行操作的指令。 (4)源和目的操作数的数据类型必须匹配,都是8 位,或都是16 位。 (5)CS 、IP 不能直接作为操作数。 (6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR 进行设置。 一、传送指令 ( 1)6 种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O 操作指令、目的地 址传送指令和标志传送指令。 (2)对标志位的影响:除标志传送( SAHF、POPF)外,均不影响标志位。 (3) --------------------------------------- 操作数表示方法:立即数 --- data,存储器单元地址mem, 寄存器——reg,段寄存器——segreg。 1. 通用传送指令:完成数据传送 (1)指令格式:MOV OPRD1 , OPRD2 ;[目的操作数OPRD1]—[源操作数OPRD2] ( 2)源OPRD2 :data、mem、reg、segreg。 ( 3)目的OPRD1 :mem、reg、segreg。 ( 4)通用传送指令MOV 和堆栈指令是唯一允许以段寄存器(代码段寄存器CS 和指令指针IP 除外,即CS 、IP 不能作为直接操作数)作为操作数的指令,不允许通过MOV 指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。 ( 5) 8 位/16 位操作。 2. 堆栈操作指令:将数据压入/弹出堆栈 (1)指令格式: 入栈:PUSH OPRD ;先修改堆栈指针SP-2,然后将数据压入堆栈。 ;SP =SP-1, [SP]=操作数高8 位;SP =SP-1, [SP]=操作数低8 位。 出栈:POP OPRD;先将数据弹出堆栈,然后修改堆栈指针SP+2。 ;(操作数低8 位)—[SP], SP =SP+1;(操作数高8 位)—[SP] , SP =SP+1。 (2)操作数:mem、reg、segreg。操作数不能是立即数data。 ( 3)仅能进行字运算( 16 位操作)。 ( 4)堆栈存取原则为后进先出,只有一个入/出口SS:SP,SP 始终指向栈顶,SP 是自动修改的,SP 在初始化中需要设置。 (5) PUSH、POP指令必须成对使用。 3. 交换操作指令:XCHG ——数据交换;XLAT ——完成一个字节的换码转换 (1)指令格式: 交换操作指令:XCHG OPRD1 , OPRD2 ; [OPRD1] ——[OPRD2] 累加器换码指令(表转换指令、查表指令):XLAT ; (AL )—(( DS) X 16+ ( BX ) + (AL ))

指令系统串操作指令

第3章8086指令系统 串操作指令 1

第3章8086 指令系统 1数据传送指令 2算术运算指令 3逻辑运算和移位指令 4串操作指令 5控制转移指令 6处理器控制指令 2

第3章8086 指令系统逻辑运算和移位指令 1、字符串传送指令(MOVSB/MOVSW) 1字符串传送指令 2、字符串比较指令(CMPSB/CMPSW) 2字符串比较指令 3、字符串检索指令(SCASB/SCASW) 3字符串检索指令 4取字符串指令 4、取字符串指令(LODSB/LODSW) 5、存字符串指令(STOSB/STOSW) 5存字符串指令 3

第3章8086 指令系统1、字符串传送指令 (M St i B t )1、字符串传送指令(MOVSB/MOVSW )MOVSB ;(Move String Byte)字节传送指令 MOVSW ;(Move String Word)字传送指令[DS:SI]— [ES:DI] 将DS 段SI 所指向的单元字节/字传送到ES 段由DI 指向的单元,指向个或两个单重复操作 再自动修改DI 和SI ,指向下一个或两个单元重复操作。 计数器CX 存放传送的字节数或字数 带重复前缀REP ,则每传送一次CX 自动减1,直到CX 为0 SI ,DI 分别为源和目的寄存器 方向标志DF=0,SI 、DI 自动增量;否则自动减量 不影响标志位4

eg: 将数据段1000H 开始的100个字节传送到扩展段2000H 开始的单元 MOV SI,1000H MOV DI 2000H MOV SI,1000H MOV DI,2000H MOV DI,2000H MOV CX,100, MOV CX,100 CLD CLD REP MOVSB …… KKK:MOVSB DEC CX JNZ KKK (5)

51单片机的16位和8位的运算不准

51单片机的16位乘以8位乘法运算可能会出现问题: 例如2927 * 17 = 49759; 但是在51中2927 * 17 和2927 * 1.7 * 10的结果并不同,后者是对的。 /******************************************************************** * 文件名:A_SHUMA.c * 创建人:zhongbaohua,2012年6月10日 天津工业大学电气工程与自动化学院 * 版本号:1.0 ********************************************************************* **/ #include #include #define uchar unsigned char #define uint unsigned int /****本地变量定义**************************************/ sbit duan = P2^2; uchar code d_table[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71,0x00}; // 0, 1. 2, 3, 4, 5, 6, 7, 8, 9, uchar code w_table[4] = {0xfe,0xfd,0xfb,0xf7}; unsigned int disbuff[4] = {0}; unsigned long int diatance = 0; /************本地变函数定声名**************************************/ void delay_ms(uint del); void display(uchar w,uchar d); void Display(); /************本地main函数******************************************/ void Main(void) { unsigned int i = 0; duan = 1; P0 = 0x00; delay_ms(1); duan = 0; while(1) {

相关文档
最新文档