资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单片机系统设计技术,主讲教师:,栗 华,山东大学信息科学与工程学院,大学生电子设计竞赛培训,1,单片机系统设计的重要性:,在工业测、控领域中,单片机作为智能测控系统的“大脑”,占据了核心位置的地位。在电子设计竞赛中,往往设计的对象也都是智能测控系统,自然,单片机系统的设计也就具有成了系统设计中一个至关重要的组成部分。,2,在前期单片机原理与应用课程的基础上,,扩展介绍利用单片机,这一智能单元来设计一个智能电子系统时所需要,的各种接口知识、单元知识、和系统实现时所需要的各种系统知识,,,使大家不仅学习并理解单片机,更要学会如何使用单片机来构建我们自己的应用系统,,让单片机按照我们的意图来为我们服务。从而,为大家参加电子设计大赛,在规定的时间内完成智能电子系统的设计与实现储备足够的经验知识和应用技能 ,最终能够在电子设计大赛中取得良好的成绩,为以后的职业生涯也能够奠定良好的基础。,培训目的:,3,(1 )单片机基本知识的回顾,,重点是回顾单片机的内部组成结构、特点以及在应用单片机的这些内部构件时应该注意的问题。,(2 )单片机有关接口设计方法及常用接口芯片介绍,,从系统设计的角度出发,以功能实现为依据,分类介绍一些常用的接口设计方法。,(3 )单片机系统设计有关技术,,从系统实现的角度,介绍系统设计时应该考虑的一些问题,为了使系统能够长期可靠地运行应该采取哪些技术。,培训的内容:,4,第一章 单片机应用系统设计基础,一、综述,1、单片机系统设计的内容,智能 应用系统的设计一般包括,单片机系统设计,、,接口设计,和,多种类型的辅助电路,(如:模拟信号调理电路、功率驱动电路、电源电路等)设计内容。而单片机系统设计往往是其中最主要、最复杂的设计部分。,5,2,、单片机的定义与特点,单片机全称为单片微型计算机(,Single Chip Microcomputer,),又称微控制论器(,M,icro-,C,ontroller,U,nit,)或嵌入式控制器(,Embedded Controller,)。它是将传统计算机的各种基本组成部件(如:,CPU,、,ROM,、,RAM,、并行,I/O,口、串行,I/O,口、定时计数器、中断控制、系统时钟和系统总线控制等)微型化并集成到一块芯片上的微型计算机。,单片机有体积小、集成度高、功能强、功耗低、性能价格比高、易于实现各种智能系统,。,6,3、,单片机的种类,按,总线宽度分成4位单片机、8位单片机、16位单片机、32位单片机。,(1)4位单片机,:主要用于各种小型智能电子设备如:计算器、遥控器、玩具控制、电子钟、简单游戏机、游戏杆等。目前主要集中在日本的一些厂家如:OKI的MSM64164C、MSM64481、NEC的75006x系列、EPSON的SMC62系列等。,(2)8位单片机,:用于各种中等智能电子设备,产品种类最多、功能较强、性价比最高、应用最广泛。8位单片机分成两大类:一类是MCS-51系列及其兼容机,另一类是非MCS-51系列。,7,(a)MCS51系列单片机:,特点是结构简单、内部资源比较丰富,易学易用、资料齐全、应用广泛,是一种传统的单片机。 有: Intel的8031、8051、8751,ATMEL的89C5x系列和89S5x等,WINBOND的W77E5x、W78E5x,PHILIPS的P87LPC7x、P89C5x、P87C5x,ST公司的uPSD系列等。,(b)非MCS51系列单片机:,和MCS-51不兼容,有各自的特点,如:,ATMEL公司的AVR单片机,(常用的是:Atmega32、Atmega64、Atmega128等,特点是:,芯片上拥有Flash存储器,一般不用外部扩展程序存储器. 片内有EEPROM也方便了数据的保存。采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力. 另外还有一些丰富的外部接口如A/D、PWM、SPI等),。,8,Motorola单片机,: 从M6800开始,开发了广泛的品种,4位,8位,16位32位的单片机, 8位机M6805,M68HC05系列,8位增强型M68HC11,M68HC12 , 16位机M68HC16, 32位机M683XX. Motorola单片机的特点之一是,在同样的速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境,.,Motorola单片机在家电、汽车电子和通信产品领域应用较广。,9,MicroChip单片机,: MicroChip单片机的主要产品是PIC 16C系列和17C系列8位单片机,CPU采用RISC结构,分别仅有33,35,58条指令,采用Harvard双总线结构,运行速度快,低工作电压,低功耗,较大的输入输出直接驱动能力,价格低,小体积. 适用于用量大,档次低,价格敏感的产品,.在自动化设备,智能仪器仪表, 工业控制等领域,PIC系列单片机占据了主导地位.,(3)16位单片机,:总线宽度为16位,CPU执行速度和效率都比8位单片机都有很大提高。目前以Intel的MCS-96/196系列、,TI公司的MSP430系列,、Motorola公司的68HC11为主。主要用于工业控制、智能仪器仪表、,便携式电子设备,、智能IC卡读写系统等领域。,10,(4)32位单片机,:32位单片机是单片机市场的发展趋势,其,特点是资源和接口更丰富、内部采用RISC架构和哈佛总线结构,CPU处理速度和处理能力更强、支持基于操作系统的开发,因此能够实现更加复杂的处理任务、人机界面也更灵活,。ATMEL、MOTOROLA、SAMSUNG、HITACH等厂家都有32位单片机产品,这些产品一般以ARM嵌入式处理器内核为基础(ARM公司自己并不生产嵌入式处理器,而是研究和发展嵌入式处理器的内核知识产权核,即IP核,然后将IP核的生产和使用许可协议卖给各IC生产厂家),所以32位单片机一般都是指ARM系统。,11,二、MCS-51单片机的内部资源,系列,片内存储器(字节),定时器,计数器,并行,I/O,串行,I/O,中,断,源,片内ROM,片内,RAM,无,有ROM,有EPROM,Intel,MCS-51,子系列,8031,80C31,8051,80C51,(4K字节),8751,87C51,(4K字节),128,字节,2x16,4x8位,1,5,Intel,MCS-52,子系列,8032,80C32,8052,80C52,(8K字节),8752,87C52,(8K字节),256,字节,3x16,4x8位,1,6,ATEML,89C系列,(常用型),1051(1K)/ 2051(2K)/ 4051(4K),(20条引脚DIP封装),128,2,15,1,5,89C51(4K)/ 89C52(8K),(40条引脚DIP封装),128/256,2/3,32,1,5/6,12,ATMEL 51单片机选型指南,Devices,Flash (KBs),IAP,ISP,EEPROM (Kbytes),RAM (Bytes),Fmax (MHz),Vcc,I/O Pins,UART,16B- Timers,WDT,SPI,(V),AT89C2051,2,-,-,-,128,24,2.7-6.0,15,1,2,-,-,AT89C4051,4,-,-,-,128,24,2.7-6.0,15,1,2,-,-,AT89S51,4,-,YES,-,128,33,4.0-5.5,32,1,2,Yes,-,AT89S52,8,-,YES,-,256,33,4.0-5.5,32,1,3,Yes,-,AT89S8253,12,-,YES,2,256,24,2.7-5.5,32,1,3,Yes,Yes,AT89C51ED2,64,UART,API,2,2048,60,2.7-5.5,32,1,3,Yes,Yes,AT89C51RD2,64,UART,API,-,2048,60,2.7-5.5,32,1,3,Yes,Yes,13,1、程序存储器配置,三、单片机的存储器配置,(一)程序存储器,14,2、与程序存储器配置有关的伪指令:,伪指令:,指的是汇编程序用的一些控制信息的指令,它们只能被汇编程序所识别,不是单片机的CPU可执行的指令。,伪指令,主要用来指定程序位置,定义一个数据块,为中间运算结果保留一部分存储空间,或者定义一些变量的别名以及表示程序的结束等。,定位伪指令ORG,格式:,标号:,ORG,m,m是一个16位二进制数,代表地址。,功能:,它放在一段程序或数据块的前面,说明紧跟其后的程序段或数据块的起始地址就是指令中的16位地址。,15,例如:,ORG 0000H,AJMP MAIN,ORG 0003H,AJMP INT0_S,ORG 000BH,AJMP T0_S,ORG 0013H,AJMP INT1_S,ORG 001BH,AJMP T1_S,ORG 0023H,AJMP SI_S,ORG 0100H ;Main program,MAIN: MOV P1,#0FEH, ,AJMP $,INT0_S:, ,RETI,16,3、与常数表格定义有关的伪指令:,功能:,在程序存储器从标号开始的连续单元开始定义一些字节数据单元,用来存放指令中指出的这些常数和字符。,例如:,ORG 2000H,TAB1: DB 30H , 8AH , 7FH , 73,DB 5 , A , BCD,30H,8AH,7FH,49H,35H,41H,42H,43H,44H,2000H,2001H,2002H,2003H,2004H,2005H,2006H,2007H,2008H,(1)定义字节伪指令DB(Define Byte),格式:,标号: DB X1,X2, ,Xn,Xi:,单字节二进制、十进制、十六进制数,或以 括起来的字符串,数据符号。,17,(2)、定义字伪指令DW(Define Word),格式:,标号: DW Y1,Y2,Yn,Yn:双字节二进制、十进制、十六进制数。,功能:,同DB,不同的是为16位数据。执行汇编时,机器会自动按高8位先存入,低8位后存入的格式排列。,例如:,ORG 1500H,TAB2: DW 1234H , 80H,12H,34H,00H,80H,1500H,1501H,1502H,1503H,18,1、数据存储器配置,(二)数据存储器,19,2、内部存储器的分布,20,(1)工作寄存器区,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有,的RAM区,普通RAM区,位寻址区,工作寄存器区,R0,R2,R1,R3,R4,R5,R6,R7,07H,02H,01H,00H,06H,04H,05H,03H,08H,1FH,工作寄存器区3,工作寄存器区2,工作寄存器区1,工作寄存器区0,0FH,10H,17H,18H,21,片内RAM前32个单元(00H1FH)是工作寄存器区 (由PSW中的RS1,RS0决定),CY,AC,F0,RS0,OV,P,RS1,PSW.7,PSW.0,PSW.4 PSW.3,例如:,SETB PSW.3,; (PSW.3) 1,CLR PSW.4,; (PSW.4) 0,其功能是将PSW中的RS0置为1, RS1清0,选择当前工作寄存器区为1区,。,22,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有,的RAM区,普通RAM区,位寻址区,工作寄存器区,27H,22H,21H,20H,26H,24H,25H,23H,28H,2FH,单元地址,07 06 05 04 03 02 01 00,0F 0E 0D 0C 0B 0A 09 08,17 16 15 14 13 12 11 10,1F 1E 1D 1C 1B 1A 19 18,27 26 25 24 23 22 21 20,2F 2E 2D 2C 2B 2A 29 28,37 36 35 34 33 32 31 30,3F 3E 3D 3C 3B 3A 39 38,47 46 45 44 43 42 41 40,7F 7E 7D 7C 7B 7A 79 78,位地址,总共128个可按位寻址的位,片内RAM中有128个可按位寻址的位。,位地址:00H7FH,分布在:20H2FH单元,(2)位寻址区,23,位操作,又称布尔操作,它是,以位为单位进行的各种操作,。,MCS-51单片机内部设置了一个,位处理器(布尔处理机),,它有自己的,累加器C,(PSW中的进位标志位CY),自己的,存储器,(即:内部RAM中的20H2FH共128个位,以及特殊功能寄存器中的可以进行位寻址的各个位),同样,也有相应的位操作指令集,共,17条,,用来完成,位传送,位运算和基于位的转移,。,位操作指令中的位地址有4 种表示形式,以下表示的都是PSW中的位5 :,直接地址方式,(如,,0D5H,);,点操作符方式,(如,,0D0H.5,、,PSW.5,等);,位名称方式,(如,,F0,,,RS0,,,RS1,),;,伪指令定义方式,。,24,格式:,位地址别名 BIT 位地址,功能:,使程序中的所出现的位地址别名均表示BIT后面的位地址。一般放置在程序开始的位置。,例如:,LEFT BIT P1.0,RIGHT BIT P1.1,ORG 0100H,SETB LEFT ;左转,LCALL WAIT30S ;等待30秒,CLR LEFT,SETB RIGHT;右转,位地址赋值伪指令BIT,25,(3)普通RAM区,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有,的RAM区,普通RAM区,位寻址区,工作寄存器区,26,堆栈:,在片内RAM中,常常要指定一个专门的区域来存放某些特别的数据,它遵循顺序存取和后进先出(LIFO/FILO)的原则,这个RAM区叫,堆栈,。,功用:,1)子程序调用和中断服务时CPU自动将当前PC,值压栈保存,返回时自动将PC值弹栈。,2)保护现场/恢复现场,3)数据传输,27,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有,的RAM区,普通RAM区,位寻址区,工作寄存器区,SP栈顶,下一个进栈的数据将存在此,数据进栈,已经进栈的数据存放在此,初始 SP,复位后 SP=07H,,数据,进栈时,:首先,SP自动增 1,,,放进数据,,,SP,仍指着栈顶,堆栈区由特殊功能寄存器,堆栈指针SP,管理,堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,通常,放在RAM区的靠后的位置,。,89C51的堆栈一般设在30H7FH的范围内。,入栈,28,从堆栈取出数据时,:,取出,的数据是最近放进去的一个数据,也就是,当前栈顶的数据。然后SP再自动减1,,仍指着栈顶,00H,20H,2FH,7FH,1FH,30H,80H,FFH,52子系列才有,的RAM区,普通RAM区,位寻址区,工作寄存器区,SP栈顶,当前要出栈的数据,数据出栈,SP-1指向下一个将要出栈的数据,初始 SP,出栈,29,特殊功能寄存器,(SFR),,,又称专用寄存器。它专用于控制、管理单片机内部算术逻辑部件、并行,I/O,口锁存器、串行口数据缓冲器、定时器,/,计数器、中断系统等功能模块的工作,,,SFR,的地址空间为,80H,FFH,。,MCS-51,有,18,个专用寄存器,,,其中,3,个为双字节寄存器,,共占,21,个字节,。,MCS-52,有,21,个专用寄存器,,,其中,5,个为双字节寄存器,,,共占,26,个字节,。,SFR,中共有,12,个专用寄存器可以位寻址,,,他们的字节地址可以被,8,整除,,,共有,93,个可寻址位,。,(4)特殊功能寄存器区,30,注意:,除A、B,DPTR 外,其他SFR只能采用直接寻址方式。如:MOV A,P0。对于内部RAM具有高128字节即:80HFFH的MCS-52单片机而言,这些RAM与SFR地址重迭,只能用寄存器间接寻址访问,而不能用直接寻址方式访问。,31,32,四、CPU时序及有关概念,一条指令可以分解为若干基本的微操作,而这些微操作所对应的脉冲信号,在时间上有严格的先后次序,这些次序就是计算机的时序。时序是非常重要的概念,它指明单片机内部以及内部与外部互相联系所遵循的规律。, 震荡周期:,指为单片机提供定时信号的振荡源的周期。, 时钟周期,:,又称状态周期或S周期,因为时钟发生器就是上述的2分频触发器,所以它是振荡周期的两倍,,33, 机器周期:,一个机器周期由6个状态(12个振荡脉冲)组成,即6个时钟贮存器期,12个振荡周期。, 指令周期:,指执行一条指令所占用的全部时间,一个指令周期通常含有1,4个机器周期。,34,单片机各种周期的相互关系,若外接晶振为,12MH,Z,,MCS-51单片机的四个周期的具体值为:,振荡周期=,1/12s,;,时钟周期=,1/6s,;,机器周期=,1s;,指令周期,=,1,4,s,;,35,五、单片机的存储器访问,(一)寻址方式,寻址方式:,指令中的操作数给出参与运算的数和数的地址,,确定操作数地址的方式,为,寻址方式,。寻址方式的多少是计算机功能强弱的重要标志。,MCS-51,指令寻址方式主要有,7,种:,(1)寄存器寻址,(2)立即寻址,(3) 寄存器间接寻址,(4)直接寻址,(5)基址寄存器变址寄存器间接寻址,(6)相对寻址,(7)位寻址,36,1、寄存器寻址,指令直接给出该寄存器名称,该寄存器的内容就是操作数,这种寻址方式就是,寄存器寻址,。,采用寄存器寻址可以获得较高的传送和运算速度。,寄存器寻址方式寻址范围:,(1)内部RAM中的,32,个,工作寄存器R0R7,;,(2),A、B、CY(或C)、DPTR,;,例如:,MOV A,R0 ;(A)(R0),MOV DPTR , #1234H,37,2、立即寻址,操作数以常数的形式,出现,直接跟在操作码后面,以指令字节的形式,存放在ROM,中,由于不需再去寄存器或存储器中去取数,,可以从指令机器码中立即得到,,因此,这种寻址方式为,立即寻址,。,立即数前面冠以“#”号,表示这是一个数,而不是地址。立即数可以是8位,也可以是16位。如:,MOVA,#0FH,MOV P1,#00000111B,MOV R3,#18,立即数,主要用来给寄存器或存储器赋初值,并且只能用于源操作数,而不能用作目的操作数,。,38,3、直接寻址,在指令直接给出操作数所在的存储单元的地址的寻址方式称为,直接寻址,。,直接寻址的寻址范围:,(1)内部数据存储器的低128字节,,00H7FH;如:MOV A,40H;(A) (40H),(2)特殊功能寄存器,,注意除A、B,DPTR 外,其他SFR只能采用直接寻址方式。如:MOV A,P0。,39,4、间接寻址,指令中指出某一个寄存器的内容作为操作数的地址的寻址方法叫做,寄存器间接寻址,。寄存器间接寻址以符号“”指明。,其寻址范围:,(1)以R0,R1为地址指针,,,寻址内部RAM 007FH,和外RAM的低256B;如:MOV A,R0,(2)以DPTR,或R0、R1(须用P2指定高8位地址)为地址指针,,寻址外部RAM空间和扩展I/O口。,如:MOVX A,R0 ;访问外部RAM 00HFFH,MOVX DPTR,A ;访问外部RAM 0000HFFFFH,50H,R0,2FH,A,50H,2FH,内部RAM,MOV A,R0,40,5、变址寻址,以,基址寄存器,(PC、 DPTR),和变址寄存器,(A),的内容作无符号数相加,形成16位地址,,,该地址就是操作数所在的地址,这种寻址方式就是变址寻址。变址寻址常用来访问程序存储器,完成,查询表格,功能。两种形式,:,MOVC A,A+PC ;(A)(A)+(PC),MOVCA,A+DPTR ;(A)(A)+(DPTR),例: MOVC A,A+DPTR,41,6、相对寻址,指令中给定地址的相对偏移量rel,,以PC当前值为基地址,加上rel所得结果为操作数实际地址,的寻址方式,为,相对寻址,。,用于程序存储器访问,常出现在相对转移指令中。,当前PC值=PC源地址+转移指令字节数,目的地址=当前PC值+rel。,rel:有符号数,单字节补码,-128+127。负数表示向上转移,正数表示向下转移。,例如:,JZ 08H,,表示累加器A,为零时,从源地址(设为:2050H),向下转移10个字节。,42,7、位寻址,MCS-51中具有一些可以直接寻址的位,并且可以对这些位进行操作,,指令中直接给出位的地址,的寻址方式为,位寻址,。,位寻址空间是:,内部RAM中的20H2FH共16个字节128个位和SFR中的93个位,。,例如:,SETB PSW.3,; (PSW.3) 1,其功能是将PSW中的RS0置为1。指令代码为:,D2H D3H,,其中的第2个字节,D3H就是PSW.3的位地址,。,43,(二)程序存储器访问的有关指令-ROM查表指令,(1) DPTR内容为基址,程序存储器除存放程序外,还可存放一些常数,这些常数的数 据结构一般称为,表格。,查表指令,就是把存放在程序存储器(ROM)中的表格数据读出,传送到累加器A 的指令,。查表指令采用,变址寻址方式,,共有,2,条指令,这两条指令都是,单字节双周期指令,。,MOVC A,A+DPTR ;A (A)+(DPTR),44,(2) PC 内容为基址,MOVC A,A+PC ;,A (A)+(PC),取出该单字节指令后PC的内容增1,,以增1后的当前值去执行16位无符号数加法,将获得的基址与变址之和作为16位的程序存储器地址,。然后将该地址单元的内容传送到累加器A。指令执行后PC的内容不变。,优点:,不改变PC的状态,根据A的内容取表格常数。,缺点:,(a)表格只能存放在查表指令以下的256个单元内。,(b)当表格首地址与本指令间有其他指令时,须用调整偏移量,调整量为下一条指令的起始地址到表格首址之间的字节数。,45,补充:单片机非线性运算快速实现的基本方法,(1)查表法,查表是非线性运算和非数值计算数据处理中常用的方法之一。,利用查表可以免去复杂的计算,节省时间,具有灵活性强、运行速度高及实时性好的特点。表分为有无序表和有序表;一维表、二维表、三维表及多维表等。常用的表格一般是线性表,这种表中的数据元素具有线性一维关系。,查表就是根据变量x,在表格中查找函数值y,使得y = f(x)。,换句话说,查表就是根据输入值来确定表的地址,然后从该地址中找出相应的函数值。,采用这种方法首先要根据自变量的变化范围和精度要求制作一个表格,把有关数据固化在程序存储器中,一旦表格内容确定之后就不能再改变。然后编写查表程序,通过输入值来寻找表格中的相应值。这样就使运算量变的较少,甚至完全不用进行运算,就可获得满足精度要求的输出。因此,在数字信号处理中,特别是在智能化测试仪表和数字发动机控制应用中,查表法是经常使用的一种操作。,46,(2)查表法举例,【例3.5 】累加器A中存有压缩的BCD码,将其转化为八段显示码,并将结果送至P1口(送高位)和P2口(送低位)。如A中数据为48H,则P1口连接的数码管显示4,P2口连接的数码管显示8(假设所使用的数码管都是共阳极数码管)。,分析:这是一个典型的查表程序。所显示数字与所输出的二进制数(显示码)之间的关系为:,显示字符,0,1,2,3,4,5,6,7,8,9,显示码,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,47,参考程序为:,ORG 0000h,SJMP START,ORG 0030H,START:,MOV R0,A ;备份BCD数,ANL A,#0FH ;取低位,MOV DPTR,#TABLE,MOVC A,A+DPTR ;取低位显示码,MOV P2,A ;从P2口输出显示码,MOV A,R0 ;恢复BCD数,ANL A,#0F0H ;取高位,SWAP A,MOVC A,A+DPTR ;取高位显示码,MOV P1,A ;从P1口输出显示码,SJMP $,TABLE: DB 3FH,06H,5BH,4FH,66H,DB 6DH,7DH,07H,7FH,6FH,END,48,(2)插值法,在智能仪表和数字发动机控制应用中,表格插值是经常要做的一种操作,,对一些计算精度要求不高但运行速度要求较高的场合,应避开复杂的计算,尽量采用通用性强、实时性好的分段线性插值法或二次抛物线插值法来逼近真实函数值。,49,分段线性插值法:,假设:已知函数Y= f(X)的曲线如右图 所示。按一定要求将X轴分为x,0,、x,1,、 x,i,、x,i+1,、 x,n,,则对应的函数输出为y,0,、y,1,、 y,i,、y,i+1,、 y,n,,它们都是已知的。把曲线上两两相临的分段点用直线连接起来,如图中虚线所示,当n取得足够大时,这些虚线可以近似的代替原曲线,这就是一般分段线性插值法的原理。显然,对于落在(x,i,,x,i+1,)区间内的输入x,有相应的输出近似值:,Y =y,i,+ (x-x,i,),=y,i,+ k,i,(x-x,i,),50,因此,可将n点输入输出对照值储存在程序存储器内,当输入量x落在第i段内时,可通过三个步骤算出相应的输出值,,第一步:查表,在区间x,i,x,i+1,上找到点x的位置,计算x-x,i,;,第二步:计算k,i,;,第三步:求得结果y= y,i,+ k,i,(x- x,i,)。,显然,采用线性插值逼近法时,,只要分段数n取得足够大,就可以获得要求的精度。,一般的,只要分段点取得合理,分段数愈多,则逼近精度愈高,但同时所要求的计算机内存容量也将增加。,因此,应该根据精度要求和函数曲线的斜率及曲率大小来决定分段点的选取。只要给定了允许误差和函数的理论计算公式,就可以求得合理的分段点,使得既满足精度要求又尽可能地减少分段数目。,51,线性插值节点选取的一般方法,采用分段线性插值近似算法时,首先要考虑如何选取插值节点的问题。解决这一问题的出发点是:,在满足精度要求的前提下,使插值节点数目减至最少,从而使表格存储器的容量减少,节省硬件资源,同时使插值搜索过程加快,。,(a)固定步长选取法,固定步长选取法就是沿X轴等距离地选取插值节点,又称为,等距选取法,。,采用固定步长的插值节点时,可以减少表格的长度,仅存储xmin、xmax、n值以及纵坐标上各节点的函数yi值。,该方法的主耍缺点是,,当被逼近函数的曲率或斜率变化较大时,为了使曲率或斜率较大的区域不超差,插值间距需取得较小。因而插值节点数将大大增加,使表格变长,运行也变长。,所以,固定步长插值法适用于非线性程度不大的函数。,52,(b)非固定步长选取法,非固定步长选取法根据函数曲线形状的变化而修正插值间距的大小,又称为,非等距选取法。,对于非线性程度较大的函数,插值节点数可以大大减少,但是在表格中,需要对每个节点存放三个常教xi 、yi 和ki ,显然,表格的长度较长,占用的存储单元较多。当然也可以在表格中只存储xi 、yi这两个常数,然后在插值过程中再去计算ki值,但这样作增加了运算量,使运行速度减慢,这在某些应用场合是不允许的。,53,54,(三)外部数据存储器访问的有关指令,MCS-51单片机CPU对片外扩展的数据存储器RAM或I/O接口进行数据传送的指令。,采用,寄存器间接寻址,,通过累加器A来完成。,片外数据的传送是通过,P0口,和,P2口,配合来完成的,其中P2口输出高8位地址,P0口分时输出低8位地址和数据。这类数据传送指令,共有4条指令,,其中,2条读,指令,,2条写,指令,这4条指令都是,单字节双周期指令,。,寄存器间接寻址,A,(Ri),1110001i,MOVX A, Ri,源操作数寻址方式,指令功能,机器语言指令,汇编语言指令,寄存器间接寻址,A,(DPTR),11100000,MOVX A, DPTR,寄存器寻址,(Ri) (A),1111001i,MOVX Ri, A,寄存器寻址,(DPTR) (A),11110000,MOVX DPTR, A,55,(四)堆栈操作指令,栈顶的位置(地址)由,栈指针SP指示,(即SP的内容是栈顶的地址)。在80C51中,堆栈的,生长方向是向上的,(地址增大)。系统复位时,SP的内容为07H。通常用户应在系统初始化时对SP重新设置(SP的值越小,堆栈的深度越深,),。,堆栈操作有,进栈和出栈,操作,即压入和弹出数据。常用于现场保护和恢复。这类指令,共有2条,,这2条指令都是,双字节双周期指令,。,直接寻址,11010000,POP direct,#data,直接寻址,(SP),(direct),11000000,PUSH direct,direct,源操作数寻址方式,指令功能,机器语言指令,汇编语言指令,SP,(SP)+1,(direct),(SP),SP,(SP)-1,56,六、MCS-51单片机的汇编指令简介,(一)指令分类,1、按指令字节数分类,MCS-51指令含有的操作码和操作数都有相应的二进制代码,,根据指令包含的字节数的多少不同,单片机指令系统(共111条指令)分成,单字节指令,(49条,),、,双字节指令,(45,条,),和,三字节指令,(17,条,),。,2、按指令的执行时间分类,单片机指令系统(共111条指令)根据指令执行的时间长短分类,可以分成:,(1) 单周期指令,(64条),(2) 双周期指令,(45条),(3) 四周期指令,(只有乘除2条),。,57,3、按指令的功能分类,单片机指令系统(共111条指令)根据指令所完成的功能分类,可以分成:,(1) 数据传送类指令,(28条),(2) 算术运算类指令,(24条),(3) 逻辑运算及移位类指令,(25条),(4) 控制转移类指令,(17条),(5) 位操作(布尔操作)类指令,(17条),58,(二)指令简介,1、数据传送类指令,数据传送类指令,一般不影响程序状态字PSW寄存器,。,只有在往累加器A中传送数时有可能影响PSW的奇偶位P,其它位不受影响。当然,往PSW寄存器里面传送数据肯定影响PSW。,传送类指令可以,分成两大类,。,一是采用MOV操作符,称为,一般传送指令,;,二是采用非MOV操作符,称为,特殊传送指令。,59,60,MCS-51单片机一般数据传送指令数据传递关系图,61,立即数,可以为累加器,A,、寄存器,Rn,和,DPTR,、直接寻址或间接寻址的,RAM,赋初值,,只能作为源操作数,,不能作为目的操作数。,累加器,A,可以和寄存器,Rn,、直接寻址或间接寻址的,RAM,之间相互赋值,既可以作为源操作数,也可以作为目的操作数。,直接寻址的,RAM,可以和累加器,A,、寄存器,Rn,、直接寻址或间接寻址的,RAM,之间相互赋值,既可以作为源操作数,也可以作为目的操作数。,间接寻址的,RAM,可以和累加器,A,、直接寻址的,RAM,之间相互赋值,既可以作为源操作数,也可以作为目的操作数。但不能和寄存器,Rn,与间接寻址的,RAM,之间相互赋值。,寄存器,Rn,可以和累加器,A,、直接寻址的,RAM,之间相互赋值,既可以作为源操作数,也可以作为目的操作数。但不能和寄存器,Rn,与间接寻址的,RAM,之间相互赋值。,62,特殊数据传送指令,63,2、算术运算类指令,包括、加1、减1、十进制调整指令,共有24条。,64,65,算术运算类指令,一般影响PSW中的CY、AC、OV、P 标志位,。,进位(借位)标志CY为无符号整数的多字节加法、减法、移位等操作提供了方便;溢出标志OV可方便的控制补码运算;辅助进位标志AC用于BCD码运算。,66,加减 1 指令仅,INC A、,DEC A,影响P标志,(即使有进位或借位,CY也不变)。其余指令都不影响标志位的状态。,DA A指令,的功能是对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整(加6修正),,,只影响CY位,。,该指令的使用条件:,(1)只能紧跟在加法指令(ADD/ADDC)后进行,(2)两个加数必须已经是BCD码,(3)只能对累加器A中结果进行调整,67,DIV AB,指令的,功能,是将累加器A中的无符号8位二进制数除以寄存器B中的无符号8位二进制数 ,,商的整数部分存放在累加器A中,余数部分存放在寄存器B中,。当除数为0时,则结果的A和B的内容不定,且溢出标志位(OV)=1。而标志CY总是被清0。,MUL AB,指令,的功能是,将累加器A与寄存器B中的无符号8位二进制数相乘,,,乘积的低8位留在累加器A中,高8位存放在寄存器B中。,当乘积大于FFH时,溢出标志位(OV)=1。而标志CY总是被清0。,68,3、逻辑运算和循环移位类指令,69,70,逻辑“与”指令,常常用于屏蔽字节中的某些位,。若清除某位,则用“0”与该位进行逻辑“与”,若保留某位,则用“1”与该位进行逻辑“与”。,逻辑“或”指令,常常用于使字节中的某些位置“1”,。若置“1”某位,则用“1”与该位进行逻辑“或”,若保留某位,则用“0”与该位进行逻辑“或”。,逻辑“异或”指令,常用于使字节中的某些位取反,。若用“1”与某位进行逻辑“异或”则该位取反 ,若保留某位,则用“0”与该位进行逻辑“异或”。还可以利用异或指令对某个单元进行自身异或,以实现清零操作。,逻辑运算指令(共18条),可以完成与、或、异或、清0和取反操作,当以累加器A为目的操作数时,对P标志有影响。,71,A7,A0,A7,A0,CY,RR A,RRC A,A7,A0,A7,A0,CY,RL A,RLC A,右移:,左移:,使累加器A的各位逐位,左移1位相当于原内容乘2,;使累加器A的各位逐位,右移1位相当于原内容除2,;预先清零CY,采用带进位位的左移和右移,能够保留乘除产生的进位和余数 。,72,4、控制转移类指令,控制程序的转移要利用转移指令。MCS-51的转移指令(共17条)分,无条件转移、条件转移及子程序调用与返回等,。利用这些控制转移类指令可以方便地实现程序的向前、向后跳转,并根据条件分支运行、循环运行、调用子程序等。,73,74,AJMP,指令的转移范围为,AJMP,下面一条指令的存储地址相同的,2KB,区间内,,可以向前也可以向后,指令的执行不影响,PSW,的状态标志位。,SJMP rel ,,rel 是一个带符号的偏移字节数(2的补码),取值范围为 128 127,(00H7FH对应表示0 127,80HFFH对应表示1281)。负数表示反向转移,正数表示正向转移。,JMP A+DPTR,指令具有散转功能,可以代替许多判别跳转指令。,其转移地址由数据指针DPTR的16位数作为基址和累加器A的8位数作为相对偏移量进行无符号数相加形成,,并将相加结果直接装入PC。该指令执行时对标志位无影响。 该指令常用于多分支转移。,75,散转程序举例:,【,例3.21,】 根据R0的值转向7个分支程序。,R010,转向SUB0;,R020,转向SUB1;, ,R0=60,转向SUB6;,分析:,程序流程如下图所示。,76,参考程序如下:,ORG 2000H,MOVDPTR,#TAB;取转移指令表首地址,MOV A,R0 ;取数,MOV B,#10,DIV AB ;A10,商在A中,CLR C,RLC A ;A2A,JMP A+DPTR ;PC A+DPTR,TAB:,AJMP SUB0 ;转移指令表,AJMP SUB1,AJMP SUB2,AJMP SUB6,77,RET,指令,的功能是从堆栈中弹出由调用指令压入堆栈保护的断点地址,并送入指令计数器,PC,,,从而,结束子程序,的执行。程序返回到断点处继续执行。,RETI,指令是专用于中断服务程序返回的指令,除正确返回中断断点处执行主程序以外,并有清除内部相应的中断状态寄存器,(以保证正确的中断逻辑),与中断优先,开放低级中断的功能,。,78,5、位操作类指令,79,【,例3.18,】利用位逻辑指令,模拟下图3.11所示的逻辑电路功能。,位操作程序举例:,实现该功能的程序如下:,PR2: MOV C,P1.1 ;(CY) (P1.1),ORL C, P1.2 ;(CY) (P1.1)V (P1.2) ,得出A点逻辑状态,ANL C, P1.0 ;(CY) (P1.0)A点状态,CPL C ; 取反,得出B点逻辑状态,MOV F0, C ;F0内暂存B点状态,MOV C,P1.3 ;(CY) (P1.3),ANL C, P1.4 ;(CY) (P1.3)(P1.4),CPL C ; 取反,得出C点逻辑状态,ORL C, F0 ;B点状态与C点状态进行逻辑或,MOV P1.5, C ;运算结果送入P1.5,RET,80,七、MCS-51单片机的辅助电路,寄存器 复位状态,寄存器 复位状态,PC 0000H,ACC 00H,B 00H,PSW 00H,SP 07H,DPTR 0000H,P,0,P,3,FFH,IP ( 00000),IE (000000),TMOD 00H,TCON 00H,TH0 00H,TL0 00H,TH1 00H,TL1 00H,SCON 00H,SBUF (),IE (00000),单片机的复位状态,81,上电复位电路和开关复位组合电路,82,单片机的时钟电路,内部时钟方式,、,外接时钟方式,83,八、MCS-51单片机的最小系统,84,8051/8751最小应用系统的特点是:,(1),全部I/O口线均可作为并行口,供,用户使用。,(2),内部存储器容量有限,(只有128B的RAM和4KB地址,空间)。,(3),应用系统开发具有特殊性,。因为P0和P2口在开发系统,时作为数据、地址总线,而在应用系统中如果作为普,通I/O口,调试时不方便硬件调试,只能用模拟的方法,调试。,85,第二章 中断、定时计数器、串行接口,86,一、定时,MCS-51有几个定时器/计数器?,MCS-51有,2个定时器/计数器T0和T1,在单片微机控制系统中为什么要使用它们?,在单片微机控制系统中,常要求一些外部实时时钟,以实现,定时或延时,;也常要求有一些外部计数器,以实现,对外部事件进行计数,。,T0/T1是几位的计数器/定时器?,T0/T1是,16位,的计数器/定时器,通过编程的方式可以用来设定为定时器或者为计数器。,(一)、MCS-51定时器/计数器,87,计数器/定时器本质区别是什么?,计数器/定时器的基本核心是一个加1计数器,加1计数器的脉冲有两个来源:,外部脉冲源,;,内部的时钟振荡器,。,*,定时器,对内部的时钟振荡器标准脉冲计数,*,计数器,对外部脉冲计数,88,与计数器/定时器相关的特殊功能寄存器有哪几个?,工作方式控制寄存器,-,-,方式,位计数器,位计数器,计数初值可以重新装入的位计数器,对分为两个独立的位定时器计数器,,对停止计数,定时计数方式选择位,:,定时,,,计数,位,D7,D6,D5,D4,D3,D3,D1,D0,TMOD,GATE,C/T,MI,M0,GATE,C/T,M1,M0,89,GATE:门控位的作用:,当,GATE=0,时,定时计数器的启动不受外部中断信号的影响,只要用软件使,TR0,(或,TR1,)置,1,就能启动定时器,T0,(或,T1,)。,当,GATE=1,时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚,INT0 (P3.2),或,INT1,(P3.3),信号和,TR0,共同控制。当,TR0=1,时,外中断引脚信号引脚,INT0(P3.2),或,INT1(P3.3),的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。,90,定时器控制寄存器,用于用于T-用于中断控制,溢出中断,标志,:溢出自动置,硬件自动清或,供软件查询和清,定时器,运行控制,位,由软件置或清,用于中断控制,位,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,TCON,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,91,、,、,、,功能,:,寄存计数初值,,均可以通过软件赋值,系统复位时,均为,讨论,,,当工作于方式时,,是,的高位,,,是,的低位,组成,的位计数器,,,加到后,再加便溢出,置,为“”,当工作于方式时,,,是,的高位,,,是,的低位,组成,的位计数器,,,加到后,再加便溢出,置,为“”;,当工作于方式时,,,是,的计数初值寄存器,,,是,的位计数器,组成,的,位计数器,,,加到后,再加便溢出,置,为“”,同时将,中的计数初值装入,,于是,又在,的新值基础上计数,周而复始。(,自动装入常数,),92,当工作于方式时,只使用于定时器,把分成两个独立的位定时器计数器,,位定时器,位定时器计数器,93,定时器工作方式的选择,定时器有4种工作方式,选择哪一种,首先要看这几种工作方式所允许的最大时间间隔。,当时钟为6MHz时,一个机器周期为2s由于定时器是对机器周期计数的,所以:,8,位定时器最大定时间隔,=2,8,2S=512s,13,位定时器最大定时间隔,=2,13,2S=16.384ms,16,位定时器最大定时间隔,=2,16,2S=131.07ms,94,定时器定时常数的选择,定时器定时时长与装入TL0、TH0或TL1、TH1的常数有关,定时常数TC的计算公式为:,其中,f为单片机应用系统的晶体频率;X与系统采用的定时方式有关,方式0、1、2、3的X分别是13、16、8、8。,例:当 =6MHz,采用方式1,求定时10ms的定时常数。T=10ms=10,000us,X=16,根据方式公式可以得到:,TC=2,16,-10000*f/12=60536=0EC78H,即:,TL0=78H,TH0=ECH,95,我们可以将定时器/计数器的编程要点概括如下:,确定方式控制字,MOV TMOD,,,#,DATA,予置时或计数初值,MOV THX,,,#DATAH,MOV TLX,,,#DATAL,启动定时,/,计数器工作,SETB,TRx,查询,WAIT,:,JBC TFX NEXT,SJMP WAIT,允许定时,/,计数中断,相应命令为:,SETB EA,SETB,ETx,重新装入定时,/,计数初值,NEXT,:,MOV THX,,,#DATAH,MOV TLX,,,#DATAL,定时器/计数器的编程要点,96,(二)、实时时钟及其软硬件实现方法,单片机的实时时钟通常由,两种方法,实现:,(1)通过内部的定时/计数器,结合软件的方式,实现,这种方式一般适合于定时时间精度要求不高的场合,。,(2)通过采用时钟芯片,,比较典型的有:Motorola公司的MC146818,Dallas公司的DS12887和DS1302和Philips公司的PCF8563、PCF8583。早期的时钟芯片一般采用并行接口的方式:如MC146818,,,现在流行的则是采用SPI、I2C总线等接口的串行芯片,,如,DS1302,和,PCF8563,。,这种实现方式精度较高,还能节省大量的单片机CPU指令周期,所以广泛被人们使用。,97,1、DS1302芯片简介,实时时钟DS1302芯片内部除了有时钟管理外,还有31B的RAM,使用SPI串行接口仅需用到三个口线( RES 复位、 I/O 数据线和SCLK)与单片机进行通信。可以提供秒、分、时、日、月、年的信息,每月和闰年的天数还可以自动进行调整,可以选择12小时或24小时工作方式。DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW。 DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。,98,DS13
展开阅读全文