您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 项目一蜂鸣器的单片机控制.ppt
项目目标项目任务项目分析项目预备知识项目实施知识点链接项目一:蜂鸣器的鸣叫控制☼项目目标通过单片机控制蜂鸣器鸣叫,学会分析单片机最小系统的电路结构及各部分的功能,初步学习汇编程序的分析方法,并能熟练运用MOV、LJMP、SETB、CPL、DJNZ、LCALL、RET基本指令。☼项目任务要求应用AT89C51芯片,控制一只蜂鸣器发声。设计单片机控制电路并编程实现此操作。☼项目分析本项目是单片机最小系统的简单应用。设计一个单片机的最小系统,利用P1.0引脚输出电位的变化,控制蜂鸣器的鸣叫,P1.0引脚的电位变化可以通过指令来控制。项目预备知识:CPU的时序CPU总是按照一定的时钟节拍与时序工作:振荡周期/时钟周期:Tc=晶振频率fosc的倒数状态周期:Ts=2个时钟周期(Tc)(很少用到此概念)机器周期:Tm=6个状态周期(Ts)=12个振荡周期(Tc)指令周期:Ti:执行一条指令所需的机器周期(Tm)数1个机器周期=12个振荡周期;1个指令周期=1、2、4个机器周期P1P2S1P2振荡周期(时钟周期)状态周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2MCS-51单片机各种周期的相互关系若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为:振荡周期=1/12MHz=1/12μs=0.0833μs状态周期=1/6μs=0.167μs机器周期=1μs指令周期=1~4μs指令的表示方式称为指令格式,汇编语言指令格式如下:[标号:]操作码[目的操作数][,源操作数][;注释]指令中每个部分之间必须用空格分隔,空格数可以不止一个。在用键盘录入程序时,可以使用Tab键将两个部分分开。其中,带[]为可选项,可以根据具体指令和编程需要给出。项目预备知识:汇编语言指令格式例如START:MOVA,#20H;把数20H送入累加器A中项目预备知识:汇编语言指令格式标号是语句地址的标志符号,代表该语句指令代码第一个字节的地址。(1)标号由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。(2)不能使用本汇编语言已经定义了的符号作为标记,如指令助记符、伪指令记忆符以及寄存器的符号名称等(3)标号后边必须跟以冒号。(4)同一标号在一个程序中只能定义一次,不能重复定义。1、标号2、操作码:表示指令的操作功能。①操作码用助记符表示,它代表了指令的操作功能。②操作码是指令的必需部分,是指令的核心,不可缺少。3、操作数:参加操作的数据或数据地址。⑤操作数与操作码之间用空格分隔,操作数与操作数之间用逗号“,”分隔。①操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。②操作数可分为目的操作数和源操作数。③操作数可用二进制数、十进制数或十六进制数表示。④操作数的个数可以是0~3个。4、注释:指令功能说明。①注释属于非必需项,是为便于阅读,对指令功能作的说明和注解。②注释必须以“;”开始。汇编程序在上述每段的开头或结尾使用分界符把各段分开,以便于区分。分界符可以是空格、冒号、分号等。这些分界符在MCS-51汇编语言中使用情况如下:(1)冒号(:)用于标号之后。(2)空格()用于操作码和操作数之间。(3)逗号(,)用于操作数之前。(4)分号(;)用于注释之前。5、分界符(分隔符)寻址就是寻找指令中操作数或操作数所在的地址。所谓寻址方式,就是如何找到存放操作数的地址,把操作数提取出来的方法。通常指源操作数的寻址方式。MCS-51系列单片机寻址方式共有七种:寄存器寻址、直接寻址、立即数寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。项目预备知识:寻址方式1、寄存器寻址寄存器寻址是指操作数存放在某一寄存器中,指令中给出寄存器名,就能得到操作数。寄存器可以使用寄存器组R0~R7中某一个或其它寄存器(A,B,DPTR等)。例如:MOVA,R0;(R0)→AMOVP1,A;(A)→P1ADDA,R0;(A)+(R0)→A寄存器目的地R0~R7ABDPTRMOVA,R12、直接寻址在指令中直接给出操作数所在的存储单元的地址,称为直接寻址方式。在8051中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR),对于特殊功能寄存器,既可以使用他们的地址,也可以使用他们的名字。例如:MOVA,3AH;(3AH)→A又如:MOVA,P1;(P1口)→A也可写为:MOVA,90H;90H是P1口的地址。XXH目的地内部RAMSFRXXHMOVA,3AH88H3AH内部RAM88HA例如,指令MOVA,3AH执行的操作是将内部RAM中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址.3、立即数寻址指令操作码后面紧跟的是一字节或两字节操作数,用#号表示,以区别直接地址。例如:MOVA,#3AH;3AH→AMCS-51系列单片机有一条指令,要求操作码后面紧跟的是两个字节立即数,即MOVDPTR,#DATA16目的地MOVA,#30H速递快信30HA4、寄存器间接寻址。寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数.例如:MOVR1,#30H;(R1)←立即数30HMOV@R1,#0FH;(30H)←立即数0FHMOVA,@R1;(A)←((30H))=#0FH注意:“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。例如,指令MOVA,@R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中,如图所示。….~内部RAM47H65H65HR0….~~~47HA如图所示:(R0)=65H(65H)=47H5、变址寻址也称为:基址寄存器+变址寄存器间接寻址以16位的地址指针寄存器DPTR或16位的PC寄存器为基址寄存器,以累加器A为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。用变址寻址方式只能访问程序存储器,访问的范围为64KB,当然,这种访问只能从ROM中读取数据而不能写入。例如:MOVCA,@A+DPTR;((A)+(DPTR))→A基址寄存器1000H变址寄存器PCDPTRA程序存储器65H….….1000H+30H1030H30H65H设:A中已存有#30H,DPTR中已存有#1000HMOVCA,@A+DPTR;(A)←((A)+(DPTR))操作:将30H+1000H=1030H单元中的数放进累加器A6、相对寻址相对寻址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。这里所说得PC的当前值是执行完相对转移指令后的PC值,一般将相对转移指令操作码所在的地址称为源地址,转移后的地址称为目的地址。于是有:目的地址=源地址+2(相对转移指令字节数)+rel51单片机指令系统中相对转移指令既有双字节的,也有三字节的。例如:SJMPrel以当前的PC值加上指令中给出的相对偏移量rel而形成转移目的地址的寻址方式。2000H+2H+28H······SJMP28H202AH程序存储器2000H2002H源地址目的地址rel转移指令本身字节数rel是有符号的8位二进制数,用补码表示。相对偏移在+127~-128字节单元之间。7、位寻址采用位寻址方式的指令,操作数是8位二进制数中的某一位。指令中给出的是位地址,是片内RAM某个单元中的某一位的地址。位地址在指令中用bit表示。例:CLRP1.0;(P1.0)←0SETBACC.7;(ACC.7)←1CPLC;(C)←NOT(C)位地址常用下列三种方式表示;(1)直接使用位地址表示。对于20H~2FH的16个单元共128位,位地址分布是00H~7FH。(2)对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如PSW.3、ACC.5等。(3)对于定义了位名字的特殊位,可以直接用其位名表示,例如:CY、AC等。寻址方式寻址空间立即数寻址程序存储器ROM、数据存储器RAM直接寻址片内RAM低128B,特殊功能寄存器寄存器寻址通用寄存器R0---R7,其他寄存器A、B、DPTR寄存器间接寻址片内RAM低128B【@R0、@R1、SP(仅PUSH、POP)】片外RAM(@R0、@R1、@DPTR)变址寻址程序存储器、数据存储器、(@A+PC、@A+DPTR)相对寻址程序存储器256B(PC+偏移量)位寻址片内RAM的20H---2FH字节地址、部分特殊功能寄存器寻址方式及对应存储器空间(1)Rn(n=0~7)当前选中的工作寄存器R0~R7。(2)Ri(i=0,1)当前选中的工作寄存器组中,可作为间址寄存器的两个工作寄存器R0、R1。(3)#data8位立即数。(4)#data1616位立即数。(5)direct8位片内RAM单元(包括SFR)的直接地址。(6)addr1111位目的地址,用于ACALL和AJMP指令中。(7)addr1616位目的地址,用于LCALL和LJMP指令中。(8)rel补码形成的8位地址偏移量。(9)bit片内直接寻址位地址。(10)@间接寻址方式中,表示间址寄存器的符号。(11)/位操作指令中,表示对该位先取反再参与操作,但不影响该位原值。(12)(X)表示X中的内容。(13)((X))由X指出的地址单元中的内容。(14)→指令操作流程,将箭头左边的内容送入箭头右边的单元。寻址方式中常用符号注释练习说明下列指令中源操作数采用的寻址方式。项目预备知识:指令系统51系列单片机指令系统由111条指令组成。可分为五大类:数据传送指令(28条),算术运算指令(24条),逻辑运算及移位指令(25条),控制转移指令(17条),位操作指令或布尔操作(17条)。1、数据传送指令CPU在进行算术和逻辑运算时,总需要有操作数。所以,数据的传送是一种最基本,最主要的操作。在通常的应用程序中,传送指令占有很大的比例。数据传送是否灵活,迅速,对整个程序的编写和执行都起着很大的作用。2、算术运算指令算术运算指令主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加1、减1操作,BCD码的运算和调整等,都归类为算术运算指令。需要指出的是,除加、减1指令外,这类指令大多数都会对PSW(程序状态字)有影响。3、逻辑运算及移位指令逻辑运算和移位指令有与、或、异或、求反、左右移位、清0等逻辑操作,有直接寻址、寄存器寻址和寄存器间址寻址等寻址方式。这类指令一般不影响程序状态字(PSW)标志。4、控制转移类指令控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间。MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在256B范围内相对转移指令及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。5、位操作指令MCS-51系列单片机的硬件结构中有一个位处理器(又称布尔处理器),布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。MCS-51单片机有一个布尔处理机,它以进位标志位CY做为累加位C,以内部RAM可寻址的128个位为存储位。数据数据传送类指令一般的操作是把源操作数传送到目的操作数,指令执行后,一般是源操作数不改变,目的操作数修改为源操作数。可以在累加器A、工作寄存器R0~R7、内部数据存储器、外部数据存储器和程序存储器之间进行。1、数据传送指令(MOV)(1).累加器A为目的操作数类指令(4条)这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即、寄存器和寄存器间接寻址方式。具体如下:MOVA,direct;直
本文标题:项目一蜂鸣器的单片机控制.ppt
链接地址:https://www.777doc.com/doc-3736339 .html