欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    片机原理及应用.ppt

    • 资源ID:6176579       资源大小:293.51KB        全文页数:68页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    片机原理及应用.ppt

    单片机原理及应用2,51单片机并口及并口应用51单片机晶振和复位51单片机指令集编者:康戈文,51单片机的并行接口,51单片机I/O具有4组,每组8位,共32位并行接口,按“第二功能”不同,结构也稍有不同。P0口:并口/数据地址总线P1口:并行接口P2口:并口/地址高8位P3口:并口,每个引脚还有不同功能:RXD;TXD;INT0;INT1;T0;T1;WR;RD,标准并行接口电路框图,51单片机P1口,引脚,51单片机P0口,读引脚,51单片机P2口,51单片机P3口,51单片机并口应用小结,并口基本功能:只要写“1”到锁存器,就可以读取引脚数据。并口第二功能随指令变化:使用MOVX/MOVC指令时,P0/P2口自动切换到“地址、数据”方式P3口第二功能是“直通”的,可以直接输出:WR、RD、TXD,直接输入:INT0、INT1、T0、T1、RXD。由程序和电路直接相应(预先设定功能,采用相应指令),并口输出应用举例,单片机连接光耦合器件,89C51晶振电路,电容:2033pf(常:30pf)晶体:1.216MHZ(常:12M),指令时序,时序要点:,一个指令周期1,2或者4个机器周期一个机器周期12个晶振周期一个机器周期输出两个ALE脉冲即:ALE的输出频率fALE(1/6)fOSC如果使用晶振频率为12MHZ,则fALE 2MHZ,指令执行时间1,2,4微秒。,复位电路,上电复位时序,复位后寄存器状态,PC0000 程序从0000开始执行,ROM的这个地址也称为“复位地址”PSW=0 其中RS1,RS1=0,默认主程序使用寄存器组0SP=07 堆栈从RAM的07地址开始,一般需要更改堆栈栈底值P0P3=FFH 引脚输出高电平IE=0X000000B 所有中断被关闭IP=0X000000B 所有中断无优先级TMOD=00 定时器T0,T1模式0TCON=00 定时器不工作.SCON=00 串行口默认使用方式0PCON=0XXX0000B 无电源管理,无波特率2倍设置其他如ACC;DPTR;TH0;TL0;TH1;TL1;SBUF等可以不关心。,地址数据扩展电路,A8A15,A8A15,A8A15,A0A7,A0A7,A0A7,扩展后的地址数据时序,P0,ALE,P2,373出,74LS373 是一种“透明”的8D锁存器,当LE引脚为“高”时,输出输入。低电平时锁定数据。Intel 8282 类似,但引脚不一样。不能用其它锁存器代替。,51单片机(汇编)指令集,任何CPU的指令都使用“二进制”机器码!用数字(代码)表达需要CPU执行的功能显然是极不方便的!采用“助记符”表达“二进制机器码”,便于编写程序。“助记符”也称为“助记符指令”。用“助记符”编写的程序,称为“汇编语言程序”“助记符二进制机器码”过程称为“汇编”“二进制机器码 助记符”过程称为“反汇编”常用的指令表达方式为:标号:助记符 操作对象1(结果),操作对象2,寻址方式,Addressing 地址(动名词),翻译为“寻址”一般意义:可以访问的所有地址空间的“地址表达式”指令中的意义:“地址”的表达形式:直接用“地址码”表达称为“直接寻址”用“寄存器内容”表达称为“寄存器间接寻址”寄存器作为访问对象称为“寄存器寻址”直接使用常数(立即数)称为“立即寻址”固定地址偏移称为“变址寻址”,也称:基址变址当前程序地址相对偏移相对寻址操作数是位寄存器或者位变量位寻址不同CPU还有其它表达方式(寻址方式),51单片机指令通用符号,Rn 代表R0,R1R7中任意一个,即:n=0,17Ri 代表R0或R1,即:i=0.1#data 代表8位立即数(常数)#data16 代表16位立即数(常数)Direct 代表直接地址:8位地址码(变量名)或寄存器 名:寄存器除A,Rn外)rel 带符号的8位相对偏移地址Addr 11 addr16 11位或者16位地址Ri 用Ri的内容表达地址(8位地址)DPTR 用DPTR的内容表达地址(16位地址)LABEL 程序入口的名称BIT 位变量、位寄存器,如:P1.0,C,ACC.7等,51单片机寻址表达式1,直接寻址:操作对象是地址、变量名、SFR中的寄存器名。例如:MOV 20H,A MOV SP,#30H PUSH ACC(寄存器)间接寻址:通过寄存器指出访问地址,寄存器只能使用R0,R1或DPTR,在寄存器前面冠以符号。例如:MOV R1,A MOVX DPTR,A 此表达方法可以方便地用于循环程序,51单片机寻址表达式2,寄存器寻址:对寄存器操作。寄存器指:Rn和A,其余“寄存器”不算。例如:MOV R4,A INC R7立即寻址:操作数是常数(立即数)。常数前冠以符号#,例如:MOV A,#30 MOV 20H,#30H位寻址:操作数是位寄存器或者位变量,例如:MOV P1.0,C SETB P1.1,51单片机寻址表达式3,变址寻址:基本地址偏移量。基本地址用DPTR表达,偏移量用A表达,在寄存器前面冠以符号。例如:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR相对寻址:当前程序地址(相对偏移)即PC+rel,相对偏移是一个8位符号数rel,其范围128127之间,表达为另一个程序入口的label,此label的距离不能太远,汇编器自动计算出相对偏移。主要用于“条件转移”指令,例如:DJNZ R7,label JNC label,51单片机指令内部传送指令,立即寻址MOV A,#DATAMOV Rn,#DATAMOV Ri,#DATAMOV Direct,#DATA直接寻址:MOV A,DirectMOV Direct,AMOV Direct,RnMOV Ri,DirectMOV Direct1,Direct2,51单片机指令内部传送指令,间接寻址MOV A,RiMOV Ri,AMOV Direct1,Ri寄存器寻址MOV A,RnMOV Rn,AMOV Direct1,Rn,51单片机指令外部传送指令,MOVX DPTR,AMOVX Ri,AMOVX A,DPTRMOVX A,RiMOVC A,A+DPTR 查表指令MOVC A,A+PC补充:MOV DPTR,#data16 唯一16位传送,51单片机指令堆栈操作指令,PUSH Direct 存储器内容存入堆栈POP Direct 堆栈内容回存到存储器注意,累加器A出入栈时,写为:PUSH ACC 和 POP ACC堆栈指令只对“直接地址”有效!对A、Rn无效,51单片机指令数据交换指令,XCH A,RnXCH A,directXCH A,Rn半字节交换指令:XCHD A,Ri 只交换低四位 SWAP A 累加器A的高4位和低4位交换,相当于字节循环移位4次,字节拆分程序举例,MOV MEM,#0MOV MEM+1,#0;对MEM的连续两个存储器清零MOV R0,#MEM;用R0表达MEM地址MOV A,HEX;读取待拆数据,假定为“0ABH”XCHD A,R0;MEM中为“0BH”,A中为“A0H”INC R0SWAP A;A中高低4位互换,“A0H”变“0AH”MOV R0,A;存“0AH”到MEM+1 此程序常用作显示前的处理,一个数码管只能显示1个16进制数据,1字节数据要用2个数码管才能显示。,51单片机指令算术运算指令,加法:带进位加法:ADD A,Rn ADDC A,RnADD A,direct ADDC A,directADD A,Rn ADDC A,RnADD A,#data ADDC A,#data后者吧“C”作为最低位连同数据一起进行相加,常用于16位加法的高8位相加。C是真正意义上的“进位”低8位相加后的进位。,51单片机指令算术运算指令,减法,必须带上“借位”SUBB A,Rn SUBB A,directSUBB A,RnSUBB A,#data一般使用时,先要使C=0即:CLR C,16位减法时,高8位运算不要清除C,51单片机指令加1减1指令,INC A DEC AINC Rn DEC RnINC direct DEC directINC Ri DEC Ri它们的操作不影响状态标志PSW,即:FFH+1=0 或 0-1=FFH,不会产生进位或者借位标志,51单片机指令乘除法指令等,乘除法指令:MUL AB A*B=BA结果:高8位在B,低8位在ADIV AB A/B=AB 结果:商在A,余数在B十进制调整指令 DA ABCD码加减之后,将结果又恢复成BCD码数据指针加1指令 INC DPTR16位数据指针只能加1,不能减1,1字节16进制数转换成3字节BCD数举例,设HEX中存放着一个16进制(2进制)数,如果要将它送到数码管进行显示,首先要将其转换成3字节的BCD数,每字节的值=09。假定转换结果存放到BUFF的连续3个单元中,依次为:百位;十位和个位。数据转换程序如下:CHDBCD:MOV R0,#BUFFMOV A,HEXMOV B,#100DIV ABMOV R0,A;存百位,INC R0MOV A,B;余数再除MOV B,#10DIV ABMOV R0,A;存十位INC R0MOV R0,B;存个位RET显然,BCD数(键盘输入的数)要转换成2进制或者16进制数,用乘法就可以了!只是这里举例的数都小于255。对“大于255”的数,需要用16位乘除法子程序处理。,51单片机指令逻辑运算指令,与ANL A,RnANL A,directANL A,RiANL A,#dataANL direct,AANL direct,#data,或ORL A,RnORL A,directORL A,RiORL A,#dataORL direct,AORL direct,#data,指令的最后一个字符“L”意义为“逻辑”,51单片机指令逻辑运算指令,异或XRL A,RnXRL A,directXRL A,RiXRL A,#dataXRL direct,AXRL direct,#data,异或:两者的对应8位,各位相同时,结果为0,不同为1。前面讨论的“与”、“或”、“异或”,都是字节中对应位进行运算。,51单片机指令累加器指令,累加器清零 CLR A结果等于:MOV A,#00H累加器取反 CPL A结果:A的各位变反,例如:MOV A,#01110000BCPL A结果:A=10001111B,51单片机指令移位指令,只能对累加器A操作全部都是“旋转”而不是“移位”!(Rotate)因此指令全都带有“R”开头分为:不含“进位”和“带进位”两种操作方式;又分为向左和向右两种逻辑方式,共4条指令,51单片机指令移位指令,RL ARR ARLC ARRC ASWAP A,高低4位互换,等效于执行4次“RR A”或者执行4次“RL A”指令,51单片机指令无条件转移指令,LJMP addr16长转移,可转到64KB范围的任意地址。PC=addr16。3字节指令。AJMP addr11绝对转移,当前PC地址保留高5位,其余11位被addr11替换。范围2KB,但不对称。2字节指令SJMP rel短转移,采用相对地址,范围相对当前PC值的128127字节之间。单字节指令。以上addr16,addr11和rel在编程时使用“标号label”JMP A+DPTR散转。DPTR内存放“散转表”起始地址,A是散转序号表间隔。“散转表”是由若干转移指令组成的数据表。,散转表举例,间隔2字节举例:MOV DPTR,#JTAB1MOV A,FUNC_NOCLR CRLC A;乘间隔2JMP A+DPTRJTAB1:AJMP FUNC0AJMP FUNC1AJMP FUNC2AJMP FUNC3,间隔4字节举例:MOV DPTR,#JTAB1MOV A,FUNC_NOCLR CRLC ARLC A;乘间隔4JMP A+DPTRJTAB1:NOPLJMP FUNC0NOPLJMP FUNC1NOPLJMP FUNC2,51单片机指令条件转移指令,条件转移指令全部使用相对转移,其转移的目的地不能太远(128127之间)。当目的地较远时,可以设置两次跳转(加一个“跳板”)此处我们连同“位条件”一起作讲解符号“rel”表示相对寻址,编程时使用“label”,51单片机指令条件转移指令,对累加器判零转移。指令中看不见“A”JZ rel JNZ rel比较,不相等转移。唯一使用两个逗号的指令CJNE A,#data,relCJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel两数相减只改变标志,不保留结果。可以再判“借位C”从而判大小。,51单片机指令条件转移指令,减1后,不为零转DJNZ Rn,relDJNZ direct,rel常用于循环计数。注意关键字:JZ,JNZ,CJNE,DJNZJ=Jump;Z=Zero;C=CompareE=Equal;N=Not,51单片机指令位条件转移指令,对进位CJC relJNC rel对“位”状态JB BIT,rel JNB BIT,rel指令里的“B”字表示BIT=“1”,NB表示BIT=“0”,下面意义相同JBC BIT,rel当BIT=1时转移,并顺便将BIT清除使BIT=0,循环延时程序举例,查指令表,DJNZ Rn,rel指令执行时间为2个机器周期,如果使用12M频率的晶振,则执行一次“DJNZ”指令需要2uS时间。如果此指令执行200次,可以延时0.4mS.可以设计延时30mS的程序,DJNZ应当执行:30000uS/2uS=15000=150*100次(或者25060)。程序如下:DELAY30MS:MOV R7,#100(#60)DELAY:MOV R6,#150(#250)DJNZ R6,$DJNZ R7,DELAY RET这里符号“$”表示转移到本行前。凑15000时,注意每个数不能超过255(1字节)通常内循环取较大的数,外循环取较小的数,这样延时误差可以减小些,判数据大小举例,假定A中有一个数,不知道大小,当其data时转到label1,当其data转到label2,当其data时转到label3,程序如下:CJNE A,#data,label0LJMP label3Label0:JC label2LJMP label1,51单片机指令调用和返回指令,调用指令LCALL addr16子程序可在64KB中任意地址,PC=addr16ACALL addr11绝对调用,当前PC地址保留高5位,其余11位被addr11替换。范围2KB,但不对称。调用指令针对子程序,编程时使用子程序入口的标号(label)子程序结束时有“返回”指令,可以回到调用前的下一条指令处。“当前PC值”指:读取调用指令后,PC自动指向“下一条指令”,因此当前PC值就是下一条指令地址。,51单片机指令调用和返回指令,返回指令子程序返回:RET中断返回:RETI子程序(含中断服务)调用过程:发生“调用”时,CPU自动把当前PC值送入堆栈保存,根据指令不同用addr16或者addr11更新PC值,从而读取子程序指令并执行。当读到“返回RET;RETI”指令时,CPU从堆栈中取回原来的PC值,读取调用前的“下一条指令”,从而返回“断点”处。RETI指令还能清除中断响应时所置位的优先级状态触发器。,51单片机指令布尔操作指令,位传送MOV C,bitMOV bit,c清0和置1CLR bitCLR CSETB bitSETB C,51单片机指令布尔操作指令,逻辑运算“与”、“或”、“非”与 ANL C,bitANL C,/bit或 ORL C,bitORL C,/bit非 CPL CCPL bit 注:/bit=bit位控制转移前面已经讲过,关键字如下:JCJNCJBJNBJBC,空操作指令,NOP 执行(耽误/延迟)一个机器周期,对标志有影响的指令,51单片机的汇编语言(宏汇编),只有指令助记符还不能编写出好程序,需要增添一些“伪指令”。伪指令用于控制汇编软件如何处理和按什么规则编译程序。伪指令不会产生“机器码”不同的汇编器(仿真器、仿真软件)具有一些不同的“伪指令”规定。下面将介绍一些常用的伪指令,ASM51汇编语言格式,Label:标号,冒号结尾,表示程序入口。字母开头,通常少于8个字符。指令助记符:也可以是伪指令,后面如果有操作数的话必须有“空格”或“TAB键”将其与操作数分开操作数1:既是操作对象又是操作结果如果存在操作数2、3时,需要在前面用逗号隔开注释:前面用分号开头【】表示不一定存在,不是必须的,【label:】指令助记符【操作数1】【,操作数2】【,操作数3】【;注释】,ASM51汇编保留字和特殊符号,保留字常指:指令;寄存器名;伪指令,以及运算符号如:/等,这些字符串不能用于作为标号、变量等,运算符不能用于标号、变量当中。运算符可以用于操作数中,起到运算作用。例如:MOV MEM+3,A,意义为:将A的内容送到MEM之后的第三个存储单元。符号“$”在转移指令中当作label使用时,表示转到$符号所在行的前面,例如:SJMP$表示在本行作“死循环”。等效于:ABC:SJMP ABC,ASM51汇编器通用伪指令,ORG 地址 定义程序/数据的起始地址END 汇编到此结束,其后面的内容将被忽略。同时也是程序结束的标志。EQU 等值命令。定义变量地址或者常数名称。例如:ABC EQU 30HDB 定义8位数据段(表格类常数)DW 定义16位数据段(表格类常数)DS 预留一个数据段(单片机中不常用,因为只能在程序段中定义,而ROM不能修改)BIT 定义位变量地址,用法与EQU相同。例如:fire bit p1.0,ASM51汇编伪指令ORG举例,ORG 0000HLJMP MAINORG 0003HLJMP INT0SAV;跳转到INT0服务程序ORG 000BHLJMP T0SAV;跳转到T0服务程序ORG 30HMAIN:主程序意义:主程序从地址0000开始,实际又跳转到30H开始的主程序。INT0发生中断时,程序从0003H开始执行,并调转到INT0SAV程序执行。T0发生溢出中断时,从000BH开始执行。这几个地址值是51单片机规定的固定地址,在“中断系统”中再详细讨论,ASM51汇编伪指令EQU/BIT,TEMPEQU 30H;定义变量TEMP地址为30HT_MODEQU 40H;定义定时器模式控制字常量40HEQU之前的字符串可以理解为变量名,也可以理解为常量名,只要应用时前面加上“#”就是常量了!例如:MOV TEMP,#TEMP这条指令使30H地址内存入30H常数SFLAG BIT P1.0;定义SFLAG变量为P1.0引脚SIGN EQU 00H;定义SIGN变量为位地址00H有些编译器可以用EQU完全代替BIT来定义“位”,ASM51汇编伪指令DB/DW,TAB1:DB 0C0H,0F9H,0A4H,0B0H,099HDB TAB2:DW 0C0F9H,0A4B0H,09992HDW 两个表格都定义了同样的内容共阳LED数码管显示代码表(段码表),它们分别依次代表:“0”;“1”;“2”;“3”;的显示代码。通过查表指令可以找出相应的显示代码。,汇编语言程序的一般结构,程序的一般结构按照下面顺序组成:用EQU/BIT定义变量、常量、端口用ORG指令和LJMP/AJMP定义中断向量表主程序:初始化堆栈、内存、端口、中断系统、允许中断,然后进入一个扫描循环体。独立模块区:子程序、中断服务程序等程序模块区。用END作为程序结束。程序用图示方式表达为下页,线性程序的全部结构,一般程序的一般结构,程序的局部可以设计成如下结构之一顺序结构循环结构分支结构子程序调用结构:模块化结构,顺序结构与循环结构,已知RED;GRE和YEL为连续3个存储单元,将其依次右移1位。ROTATE:MOV A,YEL MOV C,ACC.0 MOV A,RED RRC A MOV RED,A MOV A,GRE RRC A MOV GRE,A MOV A,YEL RRC A MOV YEL,A RET,ROTATE:MOV A,YELMOV C,ACC.0MOV R0,#REDMOV R7,#3;循环3次LOOP:MOV A,R0RRC AMOV R0,AINC R0DJNZ R7,LOOPRET当字节数多时,循环结构可以省去许多语句。,分支结构 子程序调用,“分支”通常都是有条件的按“功能号”分支,就是“散转”按条件分支,可以是标志位,可以是运算结果,相当于“如果满足条件就否则就”,MAINLOOP:LCALL KEYSCANGCJNE A,#80H,KEYPROLCALL DISPLAYAJMP MAINLOOPKEYPRO:CJNE A,#0FH,KEY_NOFLCALL F_PROCAJMP MAINLOOPKEY_NOF:CJNE A,#0EH,KEYNELCALL E_PROCAJMP MAINLOOPAJMP MAINLOOP,查表举例,指令MOVC A,A+DPTR和 MOVC A,A+PCSERCH1:MOV A,BUFFMOV DPTR,#TAB1 MOVC A,A+DPTRLJMP DISPLAYSERCH2:MOV A,BUFFADD A,#03H;*MOVC A,A+PCLJMP DISPLAYTAB1:,TAB1:DB 0C0H,0F9H,0A4HDB 0B0H,099H,092HDB 082H,0F8H,080HDB 090H表格中依次定义了从“09”的共阳LED数码管显示“7段码”*:LJMP DISPLAY指令占用3字节,即:MOVC指令到TAB之间相距3字节。,作业4.2 4.3 4.4 4.5 4.6 4.11 4.12 大作业流量计量仪软件硬件设计(要求能测量、显示流量值,硬件原理图、软件原代码),

    注意事项

    本文(片机原理及应用.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开