收藏 分享(赏)

第2讲:指令系统及开发语言.ppt

上传人:tkhy51908 文档编号:6909587 上传时间:2019-04-26 格式:PPT 页数:40 大小:417KB
下载 相关 举报
第2讲:指令系统及开发语言.ppt_第1页
第1页 / 共40页
第2讲:指令系统及开发语言.ppt_第2页
第2页 / 共40页
第2讲:指令系统及开发语言.ppt_第3页
第3页 / 共40页
第2讲:指令系统及开发语言.ppt_第4页
第4页 / 共40页
第2讲:指令系统及开发语言.ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、第二讲 指令系统及开发语言,主要内容:一、概述二、 指令系统三、汇编语言程序设计举例四、C51程序设计举例,一、指令系统概述,1、指令分类 MCS-51系列单片机共有111条指令按功能可分成5类指令:数据传送指令(29条)算术运算指令(24条)逻辑运算指令(24条)控制转移指令(17条)位操作类指令(17条),1) 指令执行时间快单周期指令 65条 (1us, 12MHz晶振)双周期指令 44条 (2us , 12MHz晶振)四周期指令 2条 (4us , 12MHz晶振) 2) 指令短单字节指令 49条 双字节指令 46条 三字节指令 16条 3) 单指令实现字节相乘或相除运算 4) 具有丰

2、富的位操作类指令,2、指令特点,3、寻址方式,7种寻址方式:立即寻址直接寻址寄存器寻址寄存器间接寻址相对寻址变址寻址位寻址,二、51单片机指令系统介绍,1、指令中常用符号说明 2、数据传送指令 3、算术运算指令 4、逻辑运算指令 5、控制转移指令 6、位操作类指令,1、指令中常用符号说明,Rn 当前寄存器区的RoR7(其中n07) Ri 当前寄存器区中的R0和R1(其中i0,1) direct 8位直接字节地址(片内RAM和SFR空间) #data 8位立即数。 #data16 16位立即数。 addr16 16位地址值。 Addr11 11位地址值。 rel 8位带符号地址偏移量(12812

3、7)bit 片内RAM和SFR中的可直接寻址位 间接寻址寄存器或基址寄存器的前缀( ) 表示括号中的内容 ( ) 表示间址寻址的内容,2、数据传送指令(1),MOV A, Rn MOV A, direct MOV A, Ri MOV A, #data MOV Rn, A MOV Rn, direct MOV Rn, #data,2、数据传送指令(2),MOV direct, A MOV direct, Rn MOV direct, direct MOV direct, Ri MOV direct, #data MOV Ri, A MOV Ri, direct,MOV DPTR, #data16

4、 MOVC A, A+DPTR MOVC A, A+PC MOVX A, Ri MOVX A, DPTR MOVX Ri, A MOVX DPTR, A,2、数据传送指令(3),PUSH direct POP direct XCH A, Rn XCH A, direct XCH A, Ri XCHD A, Ri SWAP A,2、数据传送指令(4),3、算术运算指令,ADD A, Rn ADD A, direct ADD A, Ri ADD A, #data ADDC A, Rn ADDC A, direct,ADDC A, Ri ADDC A, #data SUBB A, Rn SUBB A

5、, direct SUBB A, Ri SUBB A, #data,INC A INC Rn INC Ri DEC A DEC Rn,DEC direct DEC Ri INC DPTR MUL AB DIV AB DA A,4、逻辑运算指令,ANL A, Rn ANL A, direct ANL A, Ri ANL A, #data ANL direct, A ANL direct, #data,ORL A, Rn ORL A, direct ORL A, Ri ORL A, #data ORL direct, A ORL direct, #data,XRL A, Rn XRL A, Ri

6、XRL A, #data XRL direct, A XRL direct, #data,CLR A CPL A RL A RLC A RR A RRC A,5、控制转移指令,ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP A+DPTR,JZ rel JNZ rel CJNE A, direct, rel CJNE A, #data, rel CJNE Ri, #data, rel DJNZ Rn, rel DJNZ direct, rel NOP,6、位操作类指令,CLR C CLR bit SE

7、TB C SETB bit CPL C CPL bit ANL C, bit ANL C, /bit,ORL C, bit ORL C, /bit MOV C, bit MOV bit, C JC rel JNC rel JB bit, rel JNB bit, rel JBC bit, rel,三、汇编语言程序设计举例,举例1:设计一个报警程序,要求当报警按键按下后,蜂鸣器发出报警声。设P1.0口驱动蜂鸣器P1.1口作为报警按键输入P1.2口驱动发光报警接口电路设计见右图,ORG 0000HLJMP STARTORG 0100H START: MOV SP,#60H LOOP1: JB P1

8、.1, $JNB P1.1, $LCALL SOUNDSJMP LOOP1,SOUND: MOV R7, #5 SOUND1: CLR P1.0MOV R0, #20LCALL DELAYSETB P1.0MOV R0, #10LCALL DELAYDJNZ R7, SOUND1RET,DELAY: MOV R1,#100 ;100ms DELAY1: MOV R2,#200 ;1ms DELAY2: NOPNOPNOPDJNZ R2, DELAY2DJNZ R1, DELAY1DJNZ R0, DELAYRET,四、C51程序设计举例,1、C51是专用于51单片机硬件开发的C语言。 2、C5

9、1与标准C的区别,大致可分为8类:a)8051存储类型及存储区域;b)存储模式;c)存储器类型声明;d)变量类型声明;e)位变量与位寻址;f)特殊功能寄存器;g)C51指针;h)函数属性。,a)存储类型及存储区域code: 程序存储区内部数据存储区:data:直接寻址区,内部RAM低128位(00H7FH)idata:间接寻址区,整个内部RAM(00HFFH)bdata:可位寻址区(20H2FH)外部数据存储区:xdata:可指定64K外部RAM(0000H0FFFFH)pdata:能访问1页(256Byte)的外部RAM特殊功能寄存器:sfr:字节寻址 比如 sfr P0=0x80;为PO口

10、地址为80H sfr16:字寻址,如sfr16 T2=0xcc;指定Timer2口地址 T2L=0xcc T2H=0xCD;sbit:位寻址,如sbit EA=0xAF,b)存储模式,存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种(在C51编译器选项中选择): Small模式 所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。 Compact模式 所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较Small宽裕,速度较Small慢

11、,较large要快,是一种中间状态。 Large模式 所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。,C)存储器类型声明,变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明 例: data uar1;char code array “hello!”; unsigned char xdata arr104;,d)变量类型声明,C51提供以下几种扩展数据类型: bit :位变量值为0或1 sbit :从字节中定义的位变量 0或1 sfr :sfr字节地址 0255

12、 sfr16 :sfr字地址 065535 其余数据类型如:char,enum,short,int,long,float等与ANSI C(标准C)相同。,e)位变量与位寻址,位变量定义用bit,存储于内部RAM的20H2FH 可位寻址区说明:可作如下定义: int bdata i; unsigned char bdata arr3, 然后: sbit bit0i0;sbit bit15=i15; sbit arr07=arr07;sbit arr17=arr17;,f)特殊功能寄存器 g)C51指针一般指针的声明与标准C的相同,不过同时还可以说明指针的类型,如:char * xdata ptr

13、;ptr为一个指向char数据的指针,而ptr本身放于外部RAM区,以上的long,char等指针指向的数据可存放于任何存储器中。 存储器指针基于存储器的指针说明时即指定了存贮类型,如: char data * str;str指向data区中char型数据 int xdata * pow; pow指向外部RAM的int型整数。,h)函数属性,C51中函数的声明: 普通函数的声明:uint RecOder(uchar a)uint:函数返回的值类型为uintRecOder:函数名(uchar a):括号中为对传递变量的声明 中断函数的声明:void SerialISR ( ) interrupt

14、 4 using 1SerialISR:中断函数名interrupt 4:中断类型号,4为串口中断using 1:指定存储工作区,可缺省,由编译器指定,3、Keil C51开发软件介绍,Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和 C 语言的程序设计,界面友好,易学易用。 与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,

15、Keil C51生成的目标代码效率相当高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。,KEIL软件开发基本步骤:a)新建工程;b)选择单片机型号;c)新建工程文件,即代码,并将其添加到工程中;d)编译修改编译编译通过;e)软件调试;f)硬件调试。,4、Keil中C语言的书写风格,好的程序应该是简洁、易懂的,除了从程序的逻辑性出发,还应该形成良好的书写风格。主要有以下几个方面:1)缩进格式;2)大符号的位置,如 ;3)变量的命名;4)函数的命名;5)程序的分块,尽量使函数功能单一;6)添加注释。,举例一: include sbit Led=P12; /P要大

16、写,否则和头文件 sbit Bell=P10; /中的定义不相符,编译 sbit Sw1=P11; /出错 void main( ) if(Sw1=0) /如果有按键Led=0; /亮LedBell=0; /蜂鸣器响else Led=1; /灭LedBell=1; /蜂鸣器关 ,举例二:将示例一中查询按键的程序放入定时中断中,每隔一定的时间都会对按键进行查询。void SysIni( )TMOD=0x02; /定时器0,工作方式2TCON=0x00;TL0= 0x80; /定时器0装载初值TH0=0x80;ET0=1; /开定时器中断0EA=1; /开中断TR0=1; /启动定时器0 void KeyScan( ) interrupt 1 using 1if(Sw1=0) /如果有按键Led=0; /亮LedBell=0; /蜂鸣器响else Led=1; /灭LedBell=1; /蜂鸣器关,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报