




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机编程基础单片机编程基础单片机编程基础单片机编程基础2单片机编程语言单片机编程语言q机器语言机器语言 机器语言是单片机设计者给定的、以二进制表示的、机器语言是单片机设计者给定的、以二进制表示的、单片机能够识别的指令集。单片机能够识别的指令集。q汇编语言汇编语言 汇编语言是为便于表达机器语言制定的,以助记符表示汇编语言是为便于表达机器语言制定的,以助记符表示的指令集,汇编语言与机器语言基本上是一一对应的关的指令集,汇编语言与机器语言基本上是一一对应的关系。系。q高级语言高级语言 C、BASIC等。等。2 汇编指令系统及程序设计简介汇编指令系统及程序设计简介2.1 寻址方式寻址方式 q指令的机
2、器代码由操作码和操作数组成。其中操指令的机器代码由操作码和操作数组成。其中操作码规定了指令的性质和功能,操作数说明参与操作码规定了指令的性质和功能,操作数说明参与操作的数据或该数据所存放的地址。作的数据或该数据所存放的地址。q AT89系列单片机指令系统的寻址方式有系列单片机指令系统的寻址方式有7种,寄种,寄存器寻址、直接寻址、立即寻址、寄存器间接寻址、存器寻址、直接寻址、立即寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。变址寻址、相对寻址和位寻址。 单片机编程基础单片机编程基础5寻址方式寻址方式q寄存器寻址寄存器寻址寄存器寻址方式以指令中给出的某一寄存器的内容作为操作数。可以实现寄存器寻
3、址操作的寄存器包括寄存器组R0R7,累加器ACC,寄存器B,数据指针DPTR和进位Cy等。q直接寻址直接寻址直接寻址方式在指令中直接给出操作数所在存储单元的地址,该地址指出了参与运算或传送的数据所在的字节单元或位的地址。直接寻址方式中操作数存储的空间有以下3种:q特殊功能寄存器SFR;q片内RAM的低128B(00H7FH);q位地址空间。单片机编程基础单片机编程基础6q立即寻址立即寻址立即寻址方式在指令中直接给出参与操作的常数,操作码后面紧跟1个或2个字节的操作数(称为立即数)。立即寻址时操作数存放于程序存储器中,不占用内部RAM单元。在采用立即寻址的指令中立即数前面必须加上“”号标识,可以
4、是一个8位或16位的二进制常数,也可以用十进制或十六进制表示。q寄存器间接寻址寄存器间接寻址寄存器间接寻址方式以指令中指定寄存器的内容作为地址,而该地址单元的内容才是操作数。这是一种二次寻址方式,所以称为寄存器间接寻址。程序执行分两步完成:首先根据指令得到寄存器的内容,即操作数的地址;然后根据地址找到所需要的操作数,并完成相应的操作。寻址方式寻址方式单片机编程基础单片机编程基础7q变址寻址(基址寄存器变址寻址(基址寄存器+变址寄存器间接寻址)变址寄存器间接寻址) 变址寻址指令由基址寄存器和变址寄存器组成,16位寄存器DPTR(数据指针)或PC(程序计数器)作为基址寄存器,8位累加器A作为变址寄
5、存器。q相对寻址相对寻址 相对寻址主要是针对跳转指令而言的。对于跳转指令,转去的目标指令的地址是通过正在执行的指令地址来确定的,即以当前程序计数器PC值为基准,加上指令中给定的偏移量rel所得结果而形成实际的转移地址。q位寻址位寻址 AT89C52片内RAM有两个区域可以进行位寻址:一是20H2FH的16个单元共128位的位地址;二是字节地址为8的倍数的12个特殊功能寄存器,共92个位地址。 寻址方式寻址方式单片机编程基础单片机编程基础8qAT89C52AT89C52单片机的寻址方式多种,总的来说有以下几个单片机的寻址方式多种,总的来说有以下几个原则:原则:q对程序存储器只能采用立即寻址和变址
6、寻址方式;q对特殊功能寄存器空间只能采用直接寻址方式,不能采用寄存器间接寻址方式;q内部数据存储器高128B只能采用寄存器间接寻址方式,不能采用直接寻址方式;q内部数据存储器低128B既能采用寄存器间接寻址方式,又能采用直接寻址方式;q外部扩展数据存储器只能采用MOVX指令访问。寻址方式寻址方式2.2 指令系统指令系统 q数据传送指令(数据传送指令(29条)条)q算术运算指令(算术运算指令(24条)条)q逻辑运算指令(逻辑运算指令(24条)条)q位操作类指令(位操作类指令(17条)条)q控制转移类指令(控制转移类指令(17条)条)单片机编程基础单片机编程基础10q数据传送指令数据传送指令数据传
7、送指令操作可以在累加器A、工作寄存器R0R7、内部数据存储器、外部数据存储器和程序存储器之间进行。指令系统指令系统单片机编程基础单片机编程基础11q数据传送指令数据传送指令q以累加器A为目的操作数的指令,MOV(Move) q以寄存器Rn为目的操作数的指令 q以直接地址为目的操作数的指令 q以间接地址为目的操作数的指令q16位数据传送指令q查表指令,MOVC(Move Code)q累加器A与片外RAM数据传送指令,MOVX(Move External RAM) q堆栈操作指令,PUSH,POPq数据交换指令,XCH(Exchange),XCHD(Exchange Low-order Digit
8、),SWAP指令系统指令系统单片机编程基础单片机编程基础12q数据传送指令数据传送指令例2.5 共阴极数码管对应的显示代码程序。ORG0000HMOVA,30H ;PC=0000,双字节指令MOVA,#80H ;PC=0002,双字节指令MOVC A,A+PC ;PC=0004,双字节指令 ;PC=0006 0RG 0086H SEGTAB: DB 3FH,06H,5BH,4FH,66H;对应于字符0,l,2,3,4 DB 6DH,7DH,07H,7FH,67H;对应于字符5,6,7,8,9指令系统指令系统单片机编程基础单片机编程基础13q算术运算指令算术运算指令算术运算指令包括加、减、乘、除
9、基本四则运算和加1(增量)、减1(减量)运算。除加1和减1指令外,算术运算指令影响进位Cy、半进位Ac、溢出位Ov三个标志位。q1不带进位的加法指令,ADDq2带Cy进位的加法指令ADDC和带Cy的减法指令SUBB q3加l指令INC 和减1指令DECq4十进制调整指令,DA q5乘法指令,MUL q6除法指令,DIV 指令系统指令系统单片机编程基础单片机编程基础14q逻辑运算指令逻辑运算指令逻辑运算指令包括清0,求反、移位、与、或、异或等操作。操作助记符:CLR、CPL、RL、RLC、RR、RRC、ANL、ORL、XRL。q1逻辑与指令,ANL q2逻辑或指令,ORL q3逻辑异或指令,XR
10、L q4累加器清0和取反指令,CLR,CPL q5移位指令,RL(Rotate Left),RLC(Rotate Left With Carry Flag),RR(Rotate right),RRC(Rotate Right With Carry Flag) 指令系统指令系统单片机编程基础单片机编程基础15q位(布尔)操作类指令位(布尔)操作类指令AT89C52有1个布尔处理机,它具有一套处理位变量的指令集,它以进位标志Cy作为累加器C,以片内RAM地址20H2FH单元中的128位和地址为8的倍数的SFR的位地址单元作为操作数,进行位变量的传送、修改和逻辑操作等。q1位传送指令,MOV q2位
11、清0,置1,取反指令,CLR,SETB(Set Bit),CPLq3位运算指令,ANL,ORLq4位条件转移指令,JC,JNC ,JB,JNB,JBC 指令系统指令系统单片机编程基础单片机编程基础16q控制转移指令控制转移指令程序在执行过程中,有时因为操作的需要,不能按顺序逐条执行指令,而需要改变程序的运行方向,完成这些操作需要利用控制转移类指令。q1无条件转移指令,AJMP,LJMP,SJMP,JMP q2条件转移指令 累加器A判零转移指令,JZ,JNZ 比较转移指令,CJNE 减一条件转移指令,DJNZq3子程序调用和返回指令 调用指令,ACALL 返回指令,RET,RETIq4空操作指令
12、指令系统指令系统2.3 汇编语言指令格式汇编语言指令格式 q汇编语言执行指令格式汇编语言执行指令格式q汇编伪指令汇编伪指令单片机编程基础单片机编程基础18q汇编语言执行指令格式汇编语言执行指令格式 标号: 操作码操作数1,操作数2;注释 标号代表程序的起始地址、程序名称或转移的目标地址,由用户定义的符号组成。操作码与操作数应按规定要求书写,操作码是指令的核心,不可缺少。操作码和操作数之间必须用空格分隔,操作数与操作数之间必须用逗号“,”分隔。注释是为了提高程序的可读性对指令作的说明,注释前应加上分号“;”。汇编语言指令格式汇编语言指令格式单片机编程基础单片机编程基础19q汇编伪指令汇编伪指令q
13、1定位伪指令,ORGq2结束汇编伪指令,END q3数据说明伪指令 定义字节伪指令,DB 定义字伪指令,DW 定义存储空间伪指令,DS q4赋值伪指令,EQUq5数据地址赋值伪指令,DATAq6位地址赋值伪指令,BIT汇编语言指令格式汇编语言指令格式2.4 汇编语言程序设计概述汇编语言程序设计概述 q汇编语言的特点汇编语言的特点q汇编语言程序设计的步骤汇编语言程序设计的步骤q汇编语言程序的基本结构汇编语言程序的基本结构单片机编程基础单片机编程基础21q汇编语言的特点汇编语言的特点q用汇编语言编写的程序效率高,占用存储空间小,运行速度快;q汇编语言是面向计算机的;q汇编语言程序能够直接管理和控制
14、硬件设备;q汇编语言缺乏通用性,程序不易移植。汇编语言程序设计概述汇编语言程序设计概述单片机编程基础单片机编程基础22q汇编语言程序设计的步骤汇编语言程序设计的步骤q建立数学模型 q确定算法q制定程序流程图q确定数据结构q写出源程序q上机调试程序汇编语言程序设计概述汇编语言程序设计概述单片机编程基础单片机编程基础23q汇编语言程序的基本结构汇编语言程序的基本结构q顺序结构 q分支结构 单分支结构 多分支结构q循环结构汇编语言程序设计概述汇编语言程序设计概述单片机编程基础单片机编程基础24q汇编语言程序的基本结构汇编语言程序的基本结构q循环结构程序举例例2.13 AT89C52的晶振为12MHz
15、,设计10ms延时程序。解:12MHz晶振的机器周期为1,可用双重循环写出延时程序。根据指令的执行周期计算延迟时间。 ORG0000HDEL: MOV R7,#40 ;单周期DEL1:MOV R6,#125 ;单周期DEL2:DJNZ R6,DEL2 ;双周期 DJNZ R7,DEL1 ;双周期 RET汇编语言程序设计概述汇编语言程序设计概述3 单片机的单片机的C语言程序设计语言程序设计单片机编程基础单片机编程基础26C51和普通和普通C语言的异同语言的异同q单片机的单片机的C51语言和普通语言和普通C语言在运算符、函数、程序语言在运算符、函数、程序结构等方面是一样的。结构等方面是一样的。qC
16、51语言和语言和C语言在以下方面存在区别:语言在以下方面存在区别:q数据类型有所不同;数据类型有所不同;qC51语言可通过特殊的语言对寄存器、存储器、语言可通过特殊的语言对寄存器、存储器、IO口口进行读写;进行读写;qC51语言可通过某种方式定义中断处理函数;语言可通过某种方式定义中断处理函数;q单片机程序结构基本上都是前后台结构:后台程序为单片机程序结构基本上都是前后台结构:后台程序为无限循环程序,前台程序为中断程序。无限循环程序,前台程序为中断程序。单片机编程基础单片机编程基础27q数据类型数据类型 可分为基本数据类型和构造数据类型。构造数据类型由基本数据类型构造而成。qC51的数据类型分
17、类如下所示: C51数据类型数据类型charintlongfloatdoublearraystructunionenum字符型()整型()基本类型长整型()浮点型()双精度浮点型()数据类型数组类型()结构体类型()构造类型共用体()枚举()指针类型空类型单片机编程基础单片机编程基础28 C语言中的数据有常量、变量之分。 常量在程序运行的过程中,其值不能改变的量称为常量。C语言支持4种常量:整数常量、浮点数常量、枚举量常量、字符常量。 变量在程序执行过程中,其值能不断变化的量。使用一个变量之前必须进行定义,用一个标识符作为变量名并指出它的数据类型和存储类型,以便编译系统为它分配相应的存储单元。
18、 常量和变量常量和变量单片机编程基础单片机编程基础29qC51的存储类型的存储类型 51系列单片机的存储器采用哈佛结构。即其程序存储器和数据存储器分开,并有各自的寻址机构和寻址方式。以AT89C52为例,其具体结构如图3.1所示。存储类型存储类型单片机编程基础单片机编程基础30qchar data var;qbit bdata flag;quint idata temp;qfloat pdata press;quchar xdata array100;存储类型存储类型单片机编程基础单片机编程基础31q存储模式:存储模式决定了变量的默认存储类型,参数传递区和无明确存储类型说明变量的存储类型。qS
19、MALL:dataqCOMPACT:pdataqLARGE:xdata存储模式存储模式单片机编程基础单片机编程基础32q指针指针 指针是C语言的一个重要概念,也是特色之一。使用指针可以有效地表示复杂的数据结构,直接处理内存地址,而且可以更有效地使用数组。 q指针的概念 变量的指针就是变量的地址 q指针变量的定义指针变量定义的一般形式如下:类型标示符 *指针变量名q指针变量的引用 通过举例说明。应注意的是:“*”在指针变量定义时和在指针运算时所代表的含义是不同的。qC51的指针类型C51的指针的指针单片机编程基础单片机编程基础33q指针指针 qC51的指针类型 C51编译器支持“基于存储器”的指
20、针和“一般”指针两种类型。 基于存储器的指针:在编译时一般被“行内”编码,无须库调用。即指针所指的对象所在的存储空间由定义时C源代码中的存储类型决定。该指针只占用12个字节。 一般指针:包含3个字节。其中2个字节偏移量(即指针的地址)和1个字节存储器类型。为了表示这种指针必须用长整数来定义存储类型。C51的指针的指针单片机编程基础单片机编程基础34q指针指针 q基于存储器的指针 该指针不但指出了指针本身的存储类型(缺省时由编译时的存储模式决定),而且还明确的指出了指针所指向的对象变量的存储类型(不能缺省)。基于存储器的指针长度短,速度快,但因为它所指的对象变量有确定的存储器空间,所以这类指针缺
21、乏兼容性。 data char xdata *px;q一般指针定义指针时若未明确指明指针所指对象变量的存储类型,则该指针为一般指针。定义一般指针的方法与标准C语言相同。 char *ap;C51的指针的指针单片机编程基础单片机编程基础35q指针指针 对比一般指针和基于存储器的指针,可得出以下结论:q基于存储器的指针长度短,运行速度快。而一般指针由于其所指对象变量的存储器空间位置只有在运行期间才能确定,编译器在编译期间无法优化存储方式,必须生成一般代码以保证能对任意空间的对象进行存取,所以一般指针所产生的代码运行速度较慢。q一般指针可用于存取任何变量而不必考虑变量在AT89C52存储器空间的位置
22、,函数可利用一般指针来存取位于任何存储空间的数据。因此一般指针的兼容性较好。而基于存储器的指针所指的对象有确定的存储器空间,因此缺乏兼容性。C51的指针的指针单片机编程基础单片机编程基础36q特殊功能寄存器的定义特殊功能寄存器的定义 AT89C52单片机中除了程序计数器PC和4组通用寄存器组(R0R7)之外,其他所有寄存器均称为特殊功能寄存器(SFR),它们分散在片内RAM区的高128B中,它们只能采用直接寻址方式访问。 为了能直接访问这些SFR,C51扩充了类型说明符sfr、sfr16、sbit。利用它们可在C语言源程序中直接对AT89C52单片机的特殊功能寄存器进行定义。定义方法如下:sfr 特殊功能寄存器名=地址常数sfr16特殊功能寄存器名=地址常数qsfr Acc=0 xE0;qsfr16 P0=0 x80;特殊功能寄存器的定义和读写方法特殊功能寄存器的定义和读写方法单片机编程基础单片机编程基础37q特殊功能寄存器的定义特殊功能寄存器的定义SFR中有中有11个寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物医院品牌加盟医疗耗材供应与品牌合作推广合同
- 体育明星代言赛事活动赞助及权益转让合同
- 医学实验设备租赁及配套试剂供应协议
- 儿童摄影加盟体系技术授权与摄影设备采购合同
- 夫妻离婚房产使用权限过渡期合同书
- 职业技能培训机构教练员企业人才培养与输出聘用合同
- 2025至2031年中国柠檬乳浆市场现状分析及前景预测报告
- 2025至2030年海苔卷项目投资价值分析报告
- 2025至2030年中国语音识别电灯开关行业投资前景及策略咨询报告
- 2025至2030年中国汽车前大灯镀铝底漆市场分析及竞争策略研究报告
- 2025年邮政社招笔试试题及答案
- 2025年保密观知识测试题及答案
- (本科)旅游管理学2版全套教学课件完整版PPT
- 会计师事务所自查自纠报告范文3篇
- 信用评级ppt全套教学课件
- 抖音认证公函(企业认证申请公函)
- 《现代汉语语法》PPT课件(完整版)
- 柜式气体灭火系统培训
- 用人单位常见用工风险防范与应对培训讲义(PPT42张)课件
- 135调速器操纵手柄设计工艺卡片
- 《山东省消防条例》(2022年最新版)[1]
评论
0/150
提交评论