




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PIC单片机原理及运用(第二版)美国微芯公司授权上海技术培训中心2005.01第1章微型计算机概论 微型计算机是一种既有快速运算才干,又有极强逻辑判别才干和大容量存储功能的电子设备,它是20世纪人类最杰出的科学发明之一。 本章引见微型计算机的根底知识,主要内容有微型计算机的开展历史及运用领域、计算机硬件、软件系统的根本组成。 1.1 微型计算机的开展历史及运用 我们今天所说的计算机,是指利用电子技术实现计算并具有逻辑判别和程序存储功能的设备。 1.1.1 微型计算机的开展历史 从计算机开展的历史看,微型计算机已属于第四代计算机,而微型计算机的开展又曾阅历了四代。 1.1.2 微型计算机的运用
2、科学计算 数据处置 过程控制 计算机辅助设计/辅助制造 (CAD/CAM) 计算机网络 1.1.3 微型计算机系统主要技术目的 字长 :计算机的字长取8的整数倍数, 如8位、16位、32位、64位等 速度 :计算机的速度目的可用主频及运算 速度来评价 G、万次/秒存储系统容量 :内存和外存MG 1.2 微型计算机系统的组成 计算机的硬件通常包括运算器、存储器、控制器、输入设备及输出设备等五个部分 1.2.2 软件系统 软件系统是一台计算机中的系统软件、运用软件、程序设计言语和支持软件及各种文档的总称。 系统软件:包括操作系统、效力程序、汇编程序、解释程序和编译程序等。 运用软件:是用汇编言语或
3、高级言语为处理某种实践问题而编写的程序。 程序设计言语:通常分为面向机器的汇编言语和面向用户的高级言语。 1.3 微控制器系统 在计算机的开展历史上,特别是在第一台小型控制器件构成以后,沿着两条完全不同的用途、不同的价钱、和不同的技术内涵,而被充实于我们的日常生活中。 1.3.1 单片机系统 单片机的开展过程和性能的日益完善,实践上是对传统控制技术的一场革命,开创了微控技术的新天地。 现代控制系统的中心内涵就是嵌入式计算机运用系统MCU,而单片机就是最典型、最广泛、最普及的嵌入式计算机运用系统。 单片机的降临,主要也是源于其性能价钱比。普通单片机用于控制的目的,而对于其承当的计算功能却要求不高
4、,只需能按照一定的程式进展在线检测和即时控制任务。目前,各个单片机消费厂家还是立足于8位单片机的竞争,由于从其降临以来,不断成为运用最广泛的器件。2002年美国MICROCHIP和MOTOROLA两家公司,已占据着世界8位单片机产量最高的前两个芯片制造商。 普通的单片机的构造可以用图1.2所示的方块图描画,用三大总线DB、AB、CB实现模块之间的信息传送。单片机内部构造 单片机的主要运用 人有所思,单片机就可为。单片机的运用必将随着社会的开展和技术的提高,而获得更宽广运用。系列化的单片机 ?电信家用电器工业控制仪器仪表汽车玩具 单片机有哪些特点 单片机具备体积小、价钱低、性能强、速度快、用途广
5、、可靠性高、灵敏性强等优点,它与通用的计算机相比,还具有以下一些特点:存储器ROM和RAM的相互独立采用面向控制的指令系统输入/输出端口的强大功能 1.3.2 PIC系列单片机 PIC系列单片机,可以满足用户的各种需求。从中档产品PIC16F877作为切入点,提供非常完备、易学易用的MPLAB-ICD集成开发环境。 特别是对于单片机的新手,仿佛从茫然迷惑的大海搭上一艘便利平稳的小船,感到非常轻松自若。 第2章 PIC单片微机的组成 PICPeriphery Interface Chip单片微机是美国Microchip公司消费的PIC系列单片机。 PIC系列单片机的硬件系统设计简约,指令系统设计
6、精炼。在一切的单片机种类中,PIC具有性能完善、功能强大、学习容易、开发运用方便、人机界面友好等突出优点。 2.1 PIC系列单片机概述 Microchip公司是一家专门努力于单片机开发、研制和消费的制造商,其产品设计起点高,技术领先,性能优越。 它不是在普通微型计算机CPU的根底上加以改造,而是独树一帜,采用全新的流水线构造、单字节指令体系、嵌入闪存以及10位A/D转换器,使之具有杰出的性能,代表着单片机开展的新方向。 PIC系列单片机,具有高、中、低三个档次,可以满足不同用户开发的需求,适宜在各个领域中的运用。 它具有如下特点: 2.1.1 PIC系列单片机特点单片机总线构造 单片微型计算
7、机通常采用两种体系构造:一种是普林斯顿体系构造;另一种是哈佛体系构造。 在普林斯顿体系构造中,其程序存储器和数据存储器一致编址,也就是说两种存储器位于同一逻辑空间。这种单片机的取指令和存取数据必需分时地进展,影响了执行指令的速度。 哈佛体系构造的程序存储器和数据存储器独立编址,也就是说两种存储器有不同的逻辑空间。 PIC系列单片机采用哈佛总线构造,在芯片内部数据总线和指令总线分别,允许采用不同的字节宽度。这样,就为实现指令提取和执行的“流水作业提供构造保证,即在执行一条指令的同时对下一条指令进展取指操作。 两总线的分别,也为PIC实现全部指令的单字节化和单周期化发明条件,从而大大提高CPU执行
8、指令的速度和任务效率。1. 哈佛总线构造 单片机总线构造比较 从同一存储器空间取指令和取操作数据。 限制了数据流量。 从两个独立的存储空间分别取指令和存取操作数。 数据流量添加。 针对程序区和数据区可以设计不同的数据线宽度。程序和数据存储器冯-纽曼构造8-位CPU程序存储器数据存储器8-位12/14/16-位哈佛构造CPU PIC系列单片机的指令系统,由于采用RISC技术,和普通单片机指令系统通常有上百条指令相比要少得多。 2RISC技术 PIC系列单片机只需4种寻址方式:存放器间接寻址、立刻数寻址、直接寻址和位寻址,比较容易掌握。 PIC系列单片机的程序、数据、堆栈三者各自采用相互独立的地址
9、空间,前两者的地址访问需求用户特别留意四个分区的范围,而堆栈过程用户不用参与和操心。 代码紧缩率,就是指一样程序存储器空间所能包容有效指令的数量。3指令特征 由于PIC系列单片机采用CMOS构造,使其功率耗费极低,是目前世界上最低功耗的单片机种类之一。 其中有些型号,在4MHz时钟下任务时耗电不超越2mA,而在睡眠方式下耗电可低到1A以下。 因此,PIC系列单片机,尤其适用于野外挪动仪表的控制以及户外免维护的控制系统。 5功耗低 I/0端口驱动负载的才干较强,每个输出引脚可以驱动多达20-25mA的负载,既可以高电平直接驱动发光二极管LED、光电藕合器、小型继电器等,也可以低电平直接驱动,这样
10、可大大简化控制电路。 不过,请读者留意,每个引脚的驱动才干并不表示端口引脚同时都具有这样的效果。普通端口驱动才干约60-70mA,而一切输入输出驱动小于200mA,详细数据可参考有关数据手册。 6驱动才干强 PIC主要是采用哈佛总线构造,可以同时进展指令读取和指令执行的流水线作业方式。 如:MCS-51 12M,指令执行时间为1s4s PIC 12M时钟周期,指令执行时间为0.30.6s 7运转速度高 PIC系列单片机的一些型号具有同步串行口,可以满足I2C主控/从动和SPI主控总线要求。I2C和SPISerial Peripheral Interface分别是PHILIPS公司和MOTORO
11、LA公司研制的两种广泛流行的串行总线规范,是一种在芯片之间实现同步串行数据传输的技术。 利用单片机串行总线端口可以方便而灵敏地扩展外围器件,目前已在许多电子产品中得到广泛运用。 8同步串行数据传送方式 2.1.2 PIC16F877的构造 从其执行功能思索,可以将单片机分成两大组件,即根本功能模块和公用功能模块。 PICl6F87X系列单片机有双列直插式28引脚和40引脚及外表贴装式44引脚等几种封装方式。 多数I/O引脚都设计有第2功能,甚至第3功能。采用引脚复用技术,以便使单片机添加功能而又不增大体积和引脚数量。 2.1.3 PIC16F877的引脚 F877单片机内部配置了较完善的多个存
12、储器,可分为数据存储器和程序存储器两种,为普通用户提供很大的方便。 但它们在方式上,具有很丰富的内涵。 2.2 存储器概述 F877单片机内部配置了8K l4位的闪烁FLASH程序存储器,可以很方便进展在线擦除和烧写,寿命可达1000次以上。 在PIC系列单片机教学实验和科研开发中,显示出无穷的魅力和广大的运用前景。 相应的地址编码范围为0000HlFFFH。 2.2.1 程序存储器 程序存储器构造 F877单片机内部配置两类数据存储器,普通RAM数据存储器和EEPROM失电坚持数据存储器。 RAM总的地址空间为512个单元,其中包括部分无效单元,但每一个有效单位均可以象存放器一样进展移位、置
13、位、复位和位测试等操作。 PIC单片机的数据存储器和其他单片机一样,在配置构造上可分为通用存放器和特殊功能存放器两大类,前者给用户运用,而后者通常定义给某些功能模块,是一种具有特殊目的的功能存放器。 2.2.2 数据存储器 同时在PIC16F877片内又配置另一种可掉电维护的数据存储器EEPROM,共有2568位宽的存储单元,可以长期存放用户或系统的重要参数:如时间、配置及数据表格等,是一种非常重要的硬件资源。数据存储器单元功能分配 体BANK0 体BANK1 体BANK2 体BANK3 存储器是单片机中一个非常重要的部件,专门用于存放指令、数据和运算结果。 分析F877单片机存储器构架,可以
14、从其配置的三大模块着手进展,它们是: 8K l4位FLASH程序存储器 5128位数据存储器RAM 2568位可掉电维护数据的EEPROM存储器模块。 第3章 PIC存储器 存储器从运用功能上来分,可分为随机存储器RAMRandom Access Memory和只读存储器ROMRead Only Memory两类。 3.1 存储器分类 F877程序存储器具有13位宽的程序计数器PC。PC指针所产生的13位地址最大可寻址的程序存储器空间为8K,相应的地址编码范围为0000HlFFFH。 F877归属于中档单片机,其指令字节宽度为14位,内部构架配置了8K l4位的闪烁FLASH程序存储器。 3.
15、2 程序存储器构架 普通将整个程序存储器以2KB为单位进展分页PAGE,如图3-1所示F877单片机,8KB程序存储器共分作4页,分别称为“页0、“页l、“页2和“页3。 程序计数器高8位PCLATH的Bit4-Bit3位构成程序存储器分页的选择位,对应的地址空间如下: PCLATH Bit4:Bit3: 0 0 页0:0000H 07FFH 0 1 页l:0800H 0FFFH 1 0 页2:1000H 17FFH 1 1 页3:1800H 1FFFHPIC16F877 单片机架构程序存储器最大8K字(13 位) 程序存储空间程序空间按页面划分,每页2K字 (11 位);最多四页。页面选择
16、PCLATH复位向量地址 0000h中断向量地址 0004hPage 00000h0004h07FFhInterruptResetPage 10800h0FFFhPage 21000h17FFhPage 31800h1FFFhPCLATH = 00PCLATH = 01PCLATH = 10PCLATH = 11 程序存储器中有2个单元地址比较特殊,除了具备同其他单元地址一样的普通用途外,还具有专门用途: 0000H:用作单片机系统的复位矢量; 0004H:用作系统特殊模块的中断矢量。 复位矢量中断矢量 F877用于存储数据的RAM单元比普通单片机RAM的功能要强大得多,它除了具备普通RAM的
17、功能之外,每一个单元都能实现移位、置位、复位和位测试等通常由存放器才干完成的功能操作。 3.3 数据存储器构架 RAM数据存储器和FLASH程序存储器一样在空间构架上,进展类似方式进展分区。按横向陈列,分为4个“体BANK,从左到右分别记为“体0、“体1、“体2和“体3,每个体为128个8位宽的存储器单元。 RP1:RP0 体域 存放器地址 0 0 体0: 000H 07FH 0 1 体1: 080H 0FFH 1 0 体2: 100H l7FH 1 1 体3: 180H lFFH 数据存储器分区数据存储器四个存储体每个 128 字节特殊功能存放器存储体选择经过 Status中的 RP0,1
18、和 IRP512单元368有效GPRGPRsSFRsBank0000h01Fh020h07FhGPRsSFRsBank1080h09Fh0A0h0FFh0F0hGPRsSFRsBank2100h11Fh120h17Fh170hGPRsSFRsBank3180h19Fh1A0h1FFh1F0hRP RP RP RP = 00 = 01 = 10 = 11 有些存放器单元在4个体上是相互映射的,如形状存放器STATUS、间接寻址存放器INDF、程序计数器低8位PCL、文件选择存放器FSR、程序计数器高8位PCLATH和中断控制存放器INTCON。 所谓互为映射就是说,在4个体内的一样位置,物理上对
19、应同一个存放器单元,所以该单元具备4个不同的地址。 相互映射 F877单片机的通用存放器GPRGeneral Purpose Registers,可由用户自行支配存放随机数据。 地址区域:F0HFFH、170Hl7FH和1F0H1FFH,都可以索引或映射到体0的16个RAM单元。 这样安排是为了便于中断效力程序的设计和数据处置,就可以在程序设计中可以有效突破体的限制而定义通用的变量函数 3.3.1 通用存放器 特殊功能存放器SFRSpecial Function Registers是用于公用目的的存放器,每个存放器单元,甚至其中的每一位,都有它本人特定的称号和用途。 主要涉及PIC内核构造、外
20、围功能模块的配置和数据通讯方式的定义,是单片机赖于正常运转的任务平台。所以,特殊功能存放器又称为公用存放器。 可以根据它们不同的用途分为两类:一类是与CPU内核相关的存放器;另一类是与外围模块相关的存放器。 3.3.2 特殊功能存放器 形状存放器的内容用来记录算术逻辑单元ALU的运算结果形状、CPU的特殊运转形状以及RAM数据存储器体间选择等信息。 1形状存放器STATUS Bit0C:进位/借位标志,被动参数。 0:执行加法或减法指令时,假设最高位无进位或有借位; 1:执行加法或减法指令时,假设最高位有进位或无借位。 Bit1DC:辅助进位/借位标志,被动参数。 0:执行加法或减法指令时,假
21、设低4位向高4位无进位或有借位; 1:执行加法或减法指令时,假设低4位向高4位有进位或无借位。Bit2Z:零标志,被动参数。 0:算术或逻辑运算结果不为0; 1:算术或逻辑运算结果为全0。 形状标志位 Bit6-Bit5RP1-RP0:RAM数据存储器体选位,仅用于直接寻址。 两位复合选择RAM数据存储器4个体,详细关系如下: RP1、RP0 = 0 0 选中体0 RP1、RP0 = 0 1 选中体1 RP1、RP0 = 1 0 选中体2 RP1、RP0 = 1 1 选中体3 Bit7IRP:RAM数据存储器体选位,仅用于间接寻址。 0:选择数据存储器低位体: 即体0FSR的Bit7=0或体1
22、FSR的Bit7=1;1: 选择数据存储器高位体: 即体2FSR的Bit7=0或体3FSR的Bit7=1。 数据存储器体选位 在RAM数据存储器中,有一个非常特别的存放器INDF它的专有功能是与FSR存放器配合,实现间接寻址。 当访问地址INDF时,实践上是访问以FSR内容为地址的数据存储器RAM单元。 2间接寻址的存放器INDF和FSR 在直接寻址中,体选码来自形状存放器STATUS的RP1和RPO位,体内的单元地址直接来自指令机器码。而在间接寻址中,体选码由STATUS的IRP位和FSR存放器的BIT7组成 直接寻址/间接寻址方式的表示图 程序计数器PC指针宽13位,它的内容指向CPU将要
23、执行的下一条指令所在程序存储器单元的地址。 低8位PCL有本人的地址,可读可写;而高5位PCH和其它单片机不一样,即没有本人的地址,不能用软件访问,也就不能直接写人,只能用存放器PCLATH装载的方式进展间接写人。 3与PC相关的存放器PCL和PCLATH 两种情况下PC值的装入过程 PCLATH对于高5位PCH的装载分两种情况: 一种情况是当执行以PCL为目的的写操作指令时,PC的低8位来自算术逻辑单元ALU,PC的高5位来自PCLATH的低5位; 另一种情况是当执行跳转指令GOTO或调用子程序指令CALL时,PC的低11位来自指令码中直接携带的11位地址,高2位由PCLATH3-4提供。
24、程序存储器: PC 绝对寻址OP CODEkkkk14-位 call 和goto指令kkkkkkk 经过 CALL 和 GOTO修正 PC (程序指针)kkkkkkkkkxxxkkxxxPCLATH存放器有效的 13-位程序存储器地址11-位 来自指令2-位来自PCLATHkkkkPCH PCL 13-位程序指针PCLATH 内部数据总线 558movlwHIGH DelaymovwfPCLATHmovlwLOW DelaymovwfPCL *对于读PC值时: 仅从PCL读低8位值, PCH不会被载入到PCLATH程序存储器: PC 相对寻址 主要用于设置定时/计数器TMR0、前后分频器、外部
25、INT中断以及B端口的弱上拉功能等各种控制位。 4选项存放器OPTION_REG Bit2-Bit0PS2-PS0:分频器倍率选择位 Bit3PSA:前后分频器分配位,自动参数。0: 分配给TMR0,作为TMR0的前分频器;1: 分配给WDT,作为WDT的后分频器。Bit4T0SE:TMR0用于计数器,计数脉冲信号边沿选择位,自动参数。0: RA4/T0CKI引脚上的上升沿增量;1: RA4/T0CKI引脚上的下降沿增量。Bit5T0CS:定时/计数器TMR0时钟源选择位,自动参数。0: 用内部指令周期时钟CLKOUT作为TMR0的触发脉冲;1: 用T0CKI引脚上的外部时钟作为TMR0的触发
26、脉冲。Bit6INTEDG:INT中断信号触发边沿选择位,自动参数。0: BR0/INT引脚上的上升沿触发;1: BR0/INT引脚上的下降沿触发。Bit7RBPU:B端口弱上拉使能位,自动参数。0: RB0-RB7引脚弱上拉使能;1: RB0-RB7引脚弱上拉不使能。 主要用于中断控制方式的设置。5中断控制存放器INTCON端口存放器PORTA BCDE端口I/O定义存放器TRISA BCDEDi = 0 定义为输出形状Di = 1 定义为输入形状 6端口存放器 指令是单片机的指点中心,就是指挥CPU按要求进展一系列操作的命令。普通来说,单片机都具有本人特有的指令系统,相互之间大都互不兼容。
27、 PIC单片机系列按照不同用户的要求分成三个不同的运用档次。 第4章 PIC指令系统 指令的执行时间总是分解成两部分:取指过程和执行过程,取指的快慢直接与指令的字节数有关,而指令的执行快慢与时钟的振荡频率有关。 在以往的单片机构造中,程序存储器和数据存储器的地址空间和数据传输通道都相互并用,必需采用分时操作顺序执行。 而PIC单片机指令的执行过程是遵照着一种全新哈佛总线体系构造的原那么,充分利用计算机系统在程序存储器和数据存储器之间地址空间的相互独立性,取指过程和执行程序可以流水线操作同时进展。 4.1 指令流水线操作原那么 Flush Fetch 4Fetch SUB_1 Tcy0 Tcy1
28、 Tcy2 Tcy3 Tcy4 PIC单片机指令流水线表示Execute 1Fetch 31. MOVLW 55h Fetch 1Execute 3Fetch 2Execute 2 Fetch 42. MOVWF PORTB3. CALL SUB_14. BSF PORTA, BIT3 在这种寻址方式中,操作数或其中之一另一个是W是立刻数, 随指令码携带,而无需再到其他地方去寻觅。指令中的操作数为8-位常数.运用立刻数寻址方式的指令有: movlw, addlw, retlw, etc. 如: ADDLW16H指令寻址方式阐明 1.存放器立刻寻址14-位 立刻寻址指令OP CODEkkkkkk
29、kk2.存放器直接寻址7-位 直接从指令中获取2-位从STATUS 存放器中获取如:IORWF26H,09-位 有效存放器地址IRPRP1RP0OP CODETOPDZDCCSTATUS 存放器14-位指令fffffffRP1RP0fffffff7-位来自指令字2-位来自STATUS 存放器3.存放器间接寻址8-位 间接地址来自 FSR (选择存放器).1-位 来自 STATUS 存放器. 例如:MOVWF INDFIRPfffffffffIRPRP1RP0TOPDZDCCfffffffSTATUS 存放器8-位 FSR 存放器有效的 9-位存放器地址8-位来自 FSR1-位来自STATUS
30、存放器 这是一种比较特别的寻址方式,是经过两个存放器INDF和FSR的组合而实现功能的。操作数是FSR存放器内容位指针,所指向存放器单元的内容。 间接寻址实例运转机制: a 清从0 x20 to 0 x7F一切的RAM区域 b间接地址载入FSR c 每一次对INDF运转,由FSR指向的存放器被运用 例子:movlw0 x20movwfFSRLOOPclrfINDFincfFSR,FbtfssFSR,7gotoLOOP0000 00000000 0000FSR = 20hINDF00h04h20h7Fh数据记忆区 这是PIC单片机的特征之一,它可以对一切的RAM数据存储器进展位寻址,即置位和清零
31、等。 如:BSF 26H,4;26H原为26H 4.位寻址 每条指令的字节长度为14位,主要由阐明指令功能的操作码和参与指令处置的操作数组成。 操作码部分,简称助记符,如表4-2中心助记符,是借用英语单词来间接表达和定义其操作功能。 操作数部分,是按照操作码的操作功能,对操作数进展处置。 根据操作数的源地址和目的地址的访问性质,可以有多种表现方式:主要有直接寻址、间接寻址、立刻寻址和位寻址四类。 4.2 指令集阐明 中心助记符 指令系统补充字符阐明 数据传送类指令共有4条指令,主要功能是将数据从源地址或立刻数传送至目的地址中。 4.2.1 数据传送类指令 【例题4-1】 请利用数据传送类指令编
32、写一段子程序,将立刻数20H传送到通用存放器20H中。 【例题4-2】 请利用数据传送类指令编写一段子程序,将通用存放器20H和30H中的内容进展交换。 算术运算类指令是PIC单片机指令系统中,承当运算功能的重要部分,共有6条指令。主要有加减指令、增量和减量指令 4.2.2 算术运算类指令 【例题4-3】 请将通用存放器20H、30H构成的16位数据与通用存放器40H、50H构成的16位数据相加后放入40H、50H 中,知其和不会超出65535。 逻辑运算类指令是一组比较复杂的指令,方式较多,可以对位和字节进展逻辑操作。主要有与、或、异或、清零、置位、取反和左右移位等14条指令 4.2.3 逻
33、辑运算类指令 【例题4-4】 请将数据存储器20H和30H中的数据分别与立刻数20H、30H相与和相或后相加,结果放入40H存储器中,请编写相应的程序。 【例题4-5】 请编写一个完好的程序,将数据存储器20H低4位和30H高4位组合成一个八位二进制数据,并从RC端口输出。 控制转移类指令,是在指令系统中方式灵敏、功能较强的一组指令,共11条。它们是构成程序循环和跳转的关键要素,普通可以分为有条件跳转和无条件跳转两大类。 4.2.4 控制转移类指令 这是一种比较特殊的转移方式,根据位测试或加减1后的内容判别条件的成立与否,而决议程序继续执行还是间跳执行指令。 当前判别语句A下一条语句B 再下一
34、条语句C1.相对转移间跳 PIC指令系统的绝对转移,主要由CALL和GOTO语句引出。在指令机器码内部本身并没有携带完好的转移目的地址,只包含低11位地址,而高2位将由PCLATH存放器给出。 【例题4-6】 请将通用存放器单元20H-2FH,分别对应赋值20H-2FH,请编写相应的软件程序。 2.绝对转移和调用 【例题4-7】 请分析以下程序片段,并指出当程序执行完后,涉及到的一切存储器单元的结果。 MOVLW22HMOVWF22HMOVWFFSRADDWFINDF,FINCFINDFSWAPF22H,WRLF22H,WDECFFSR,FMOVWFINDFBSFINDF,7【例题4-6】编写
35、散转指令程序 Microchip公司为PIC系列单片机配备了功能强大、基于Windows、易学易用的软件集成开发环境MPLAB。 该开发环境可以使人们在本人的微机系统上,对PIC系列单片机进展程序的创建、录入、编辑以及汇编,还能方便而灵敏地实现程序的模拟运转和动态调试,可以对实践运用系统进展在线仿真和功能模块开发。 第5章 PIC集成开发系统 PIC单片机指令系统和其它单片机一样,是较为低级的言语系统,是一套控制和指挥CPU任务的编码,即机器言语。 单片机只能识别和执行由二进制数组成的机器言语,然而,这样一种二进制代码的机器言语是很难为人们直接了解和分析。 为了能较好表达人们的设计思绪,便于记
36、忆和运用,人们在低级言语之上设计出一种新的符号言语,即汇编言语。 第6章 汇编言语程序设计 PIC单片机指令系统和其它单片机一样,是较为低级的言语系统,是一套控制和指挥CPU任务的编码,即机器言语。 为了能较好表达人们的设计思绪,便于记忆和运用,人们在低级言语之上设计出一种新的符号言语,即汇编言语。 6.1 汇编言语指令格式 根据指令的功能和作用,只需操作码是必需存在的,它主要决议了指令的操作性质,而其它部分是指令语句的重要补充和阐明,有时可以缺省。 标号位于指令助记符前面,它普通是用于表示指令所在的地址,例如表示主程序或子程序的起始地址、转移语句的入口地址等。 1.标号 标号并不是指令的必需
37、部分,只需那些欲被其他语句援用的指令之前,才必需附加标号。标号不一定和语句同行,可以单独在语句上方作为一行运用。标号最多可以由32个字母、数字和其它一些字符组成,但第一个字符必需是字母或下划线。标号不能用系统保管字,即系统禁用指令助记符、存放器名、标志符等作为标号,如:ADD、PCLATH等。一个标号只能表示一个地址,不允许多个地址用一个标号反复定义。标号的定义和援用必需一致,其中的大小写可以混写但必需一样。标号必需顶格书写,终了不用冒号。 运用标号的要点是: 操作码决议着指令的操作类型和操作性质,是汇编言语语句中的中心要素,每一条汇编指令都不可短少,而其它三部分有些指令可以缺省。 2. 操作
38、码 操作码所对应的指令助记符,其中的符号大小写可以混写,而不会影响操作码的含意,这一点和标号、操作数符号变量的表达方式是有本质区别。指令助记符不能顶格书写,当前面没有标号时,必需至少保管一个空格。操作码中心助记符部分比较简单,初学者必需熟习复合助记符部分的功能。 有关操作码指令助记符的要点是: 在PIC汇编言语语句中,操作数的方式和内容最为丰富,它是指令助记符操作的对象,普通以数据或地址的方式出现,也可以用符号变量所表示的数据或地址。 3.操作数 运用操作数的要点是: 假设操作数有二项,中间应该用逗号半角分开。以A、B、C、D、E、F开头的数,前面应加0作为引导。MPASM编辑环境默许进制为十
39、六进制,也可按用户需求进展重新设置。操作数部分的符号变量必需区分大小写。注重d参数的运用,目的地址为: Fd=1;Wd=0。 各种进制168的表示方式 注释内容用分号引出,是汇编言语语句功能的一种补充阐明,主要是便于人们阅读、分析、修正和程序的调试。 4. 注释 用半角分号引出注释内容,可以紧跟指令之后,也可以独立一行或多行书写,但每一行均需由分号引出。注释内容可以英文书写,也能用中文书写来源于文本编辑内容。 运用注释的要点是: 各种单片机的汇编程序除了指令系统语句以外,普通都还定义许多非正式指令的语句,即伪指令。大多数伪指令汇编时并不产活力器码,仅为源程序提供汇编控制信息。6.2 系统伪指令
40、 格式:ORG nnnn 阐明:ORG伪指令指出紧跟在该伪指令后的机器码指令的汇编地址,即经汇编后生成的机器码目的程序或数据块在单片机程序存储器中的起始存放地址。 1.定位伪指令:ORGOrigin 格式:符号名 EQU nn 阐明:EQU伪指令几乎每一个程序中都用到,其操作含意是使EQU两端的值相等。普通在PIC的程序设计中,原那么上每次遇到新的符号参数,都必需在前面补充定义符号名的初始数值或存储器地址。 符号名一旦被EQU赋值,其值便不能被再重新定义。这里的符号名,既可以是PIC中的特殊功能存放器、一个常数,或者是表示一个通用数据存储器地址。 2.赋值伪指令:EQUEquate 实践上对于
41、伪指令:ABC EQU20H,其中ABC既可以以为是符号变量,由于ABC代表20H地址;又可以以为是符号常量,由于ABC可以代表符号常量20H。 所以对于一个定义的符号量,应结合援用的指令进展分析才干真正确定符号量的类型。 分析 ABC EQU20H【例题6-2】正确区别符号变量和符号常量之间的关系ABCEQU 20H;定义符号量ABC ORG 0000H NOPMOVLW 77HMOVWF 20HMOVLW 88HMOVF ABC,0;ABC为数据存储器地址20HMOVLW ABC ;ABC为常量20HNOP END 在符号名定义和援用过程中,必需保证大小写属性的一致性,留意不能混合运用以及
42、所代表角色功能。 假设有定义:ABCEQU20H在援用符号名ABC时,不能改动其大小写的属性,即Abc、aBC或ABc与ABC是不一样的,在汇编时均会发生出错信息。 格式:END 阐明:END伪指令表示汇编言语源程序*.ASM的终了,MPASM汇编器汇编时遇到END就以为程序已终了,对其后的程序段不再进展汇编。 3.程序终了伪指令:END 格式:LIST 可选项,可选项, 阐明:LIST伪指令用于设置各种汇编参数,以便控制整个汇编过程或对打印输出的列表文件进展格式化。 1P 例如:P16F877 2R 例如:RDEC十进制; RHEX十六进制; RBIN二进制; 默以为十六进制。4.列表选项伪
43、指令:LIST 格式:INCLUDE “文件名 阐明:INCLUDE伪指令的主要功能是将外部预先编写好的指定文件纳入根源程序的汇编内容,这样可以减少反复劳动,提高编程效率。 如:P16F877.INC为F877单片机的复位矢量、公用存放器的地址及其控制位和形状位的位地址的原始定义,有些参考书把P16F877.INC称为F877的头文件。 5.外调程序伪指令:INCLUDE 格式:RADIX 阐明:RADIX伪指令用于设置在MPLAB-ICD集成开发环境中采用的进制方式,如定义十进制、八进制和十六进制等参数,MPLAB-ICD集成开发系统缺省为十六进制。 例如:RADIX DEC ;定义为十进制
44、 RADIX HEX ;定义为十六进制 RADIX OCT ;定义为八进制6.进制定义伪指令:RADIX 在PIC单片机中,有两个概念是令初学者感到头痛的事情,也是本课程的难点和重点,对于正确进展程序设计至关重要。 一个是数据存储器四体的体选方式,需求时辰思索每一个访问的特殊功能存放器和通用数据存储器的体位;另一个是程序存储器四页的页选方式,特别是在发生转移或跳转时,须亲密留意能否会发生页面转换。 6.3 存储器选择方式 F877单片机的数据存储器是一个具有空间为512字节的存储器,其中只需19个字节是无效存储单元。为了能完全选择512字节内的数据,需求9根地址线。 而根据9根地址线的组合方式
45、不同,构成两种迥然不同的寻址方式:即直接寻址和间接寻址。 6.3.1 数据存储器体选方式 根据直接寻址和间接寻址操作码携带址址信息情况,普通把512字节包括无效地址的数据存储器分成4个区域,在PIC中被称为“体BANK。 体0000H07FH 体1080H1FFH 体2100H17FH 体3180H1FFH数据存储器体域 在指令机器码中操作数所携带的寻址信息是低7位地址,这不是一个完备的数据信息,每一个体中均会有一个相关的地址与之对应。要独一确定地址单元,还必需依托其它的数据线进展复合选择。 利用形状标志STATUS位中的RP1和RP0,与直接寻址机器码中低7位地址共同选择相应数据存储器的内容
46、参与操作。 1.直接寻址访问数据存储器 在指令机器码中真正携带的寻址信息是低8位地址,这也不是一个完备的数据信息,在整个数据存储器中有二个相关的地址与之对应。 要独一确定地址单元,也必需依托另一根数据线进展复合选择。主要是依托形状标志位的IRP,才干准确选择相应数据存储器的内容参与操作。 2.间接寻址访问数据存储器 F877单片机的程序存储器FLASH是一个具有空间为8K14位的存储器,其中14位为单元字节长度。为了能完全选择8K的程序存储器,需求合成13根地址选择线。 6.3.2 程序存储器页选方式 复位地址0000H,直接给出13根地址选择线;中断地址0004H,直接给出13根地址选择线;
47、指令存放器,是在每一个指令的执行周期自动加1而构成当前程序的执行方向;执行以PCL为目的地址的算术逻辑类指令;调用子程序方式,即CALL语句以及相应的前往语句RETRUN、RETFIE、RETLW。转移指令方式,即GOTO语句;程序存储器指令语句的选择 主要有以下几种途径: 执行以PCL为目的地址的算术逻辑类指令执行跳转指令call、goto、retrun、retfie、retlw 两类指令的执行过程中的装载效能 ABC EQU 20H ORG 0100H BANKSEL ABC MOVLW 00H ;常数00送入W MOVWF ABC ;W送入ABC存储器中 ORG 0100H PAGESE
48、L ABC GOTO ABC ;转移至ABC ORG 1000H ABC MOVLW 00H;常数00送入W MOVWF 20H;W送入20H中 补充伪指令 PAGESEL、BANKSEL 在程序设计中,除主程序以外还有一部分很重要的内容就是关于子程序的设计,它是为完成特定的目的而构成的复合程序。 6.4常用子程序的设计 转移和循环程序,主要是经过跳转、判别和位测试指令来构成的。 1.跳转指令 GOTO 2.判别指令 INCFSZ、DECFSZ 3.位测试指令 BTFSS、 BTFSC6.4.1 转移和循环子程序 【例题6-6】比较两个数据存放器20H和30H内容的大小,将较大的数送入40H中
49、。 【例题6-6】请将通用存放器单元20H-2FH,分别对应赋值20H-2FH,请编写相应的软件程序。 【例题6-7】假定RB0接入一个按键K,当K按下时,RB0为高电平,而K为常态时,RB0为低电平。请编写按键K的监控扫描片段程序,DELAY10MS为10M延迟程序,程序框图如6-4所示。 单片机的延时程序,在程序设计中具有很重要的位置。延时的设计,普通可以经过两种方式:硬件延时和软件延时。 所谓硬件延时,就是由单片机系统的定时器实现;而软件延时,是经过循环程序实现。普通来说,前者适用于准确定量延时,而后者常用于初略定性延时。 【例题6-8】简单循环的软件延时子程序。 【例题6-9】请编写1
50、0MS软件延时子程序。 【例题6-10】请编写1S软件延时子程序。 6.4.2 软件延时子程序 数据查表子程序在某些特殊场所是非常有用的,如共阴极LED八段显示器以及其它具有固定显示方式的场所,需根据其显示数值去查找对应参考数据库编码输出。 6.4.3 数据查表子程序 【例题6-11】将RC端口与共阴极LED八段显示器相连,从0-9循环显示,间隔时间为1秒,请编写相应的软件程序。 八段显示数值0-9编码 00000000XXXXXXXXPIC单片机架构PC相对寻址 查表实例movlwHIGH DecodemovwfPCLATHmovf DisplayValue,WcallDecodemovwf
51、PORTBgotoContinueDecodeaddwfPCL,FretlwB00111111 ;decode 0retlwB00000110 ;decode 1retlwB01011011 ;decode 2retlwB01001111 ;decode 3retlwB01100110 ;decode 4retlwB01101101 ;decode 5retlwB01111101 ;decode 6retlwB00000111 ;decode 7retlwB01111111 ;decode 8retlwB01101111 ;decode 9ContinuebegafdcRB0RB1RB2RB3
52、RB4RB5RB6bcdefgW 存放器I/O B口01101101 00000101 01101101 gafdcbe 【例题6-12】将RC端口与八个LED显示器相连,请按照表6-4即跑马灯流动显示方式,间隔时间为1秒,请编写相应的软件程序。 在PIC指令系统中并没有类似的语句,但假设借助于PIC单片机指令的特殊功能,同样可以轻松地构成分支跳转。 分支跳转实践上是多条件判别指令,条件本身是一个整数或事件,而跳转出口应该是整数的信息前往或事件功能内容的详细表现。 在程序方式上,分支功能跳转子程序与数据查表子程序的构造类似,只是它是用GOTO语句替代了RETLW语句。 6.4.4 分支功能跳转
53、子程序 假定W为某个按键的输入值JIANGNADDWFPCL,F ;确定相对偏移量GOTOPKEY0 ;执行PKEY0键盘定义功能GOTOPKEY1;执行PKEY1键盘定义功能GOTOPKEY2;执行PKEY2键盘定义功能 . . . GOTOPKEYN;执行PKEYN键盘定义功能 本节给出一些常用的数学运算类子程序,主要有加、减、乘、除等子程序,还有为外扩系统设计中的数码显示所需的BCD码和二进制数据的互换子程序。 均涉及入口条件及出口条件,在调用时务必加以留意。普通入口条件是指参与操作的相关源数据,用S1、S2source等表示,而操作结果用R1、R2result等表示。高低8位数据分别用
54、H、L表示,另外用Z表示中8位数据。 可以将这些固定变量参数定义在PIC16F877的头文件内,并且单元定义位于映射区域70H7FH,这样就可以不受程序所在页面的影响。 6.4.4 常用数学运算类子程序 将两个无符号16位数相加,编写双精度运算程序。 将两个无符号16位数相减,编写双精度运算程序。 将两个无符号16位数相乘,编写双精度运算程序。 将两个无符号16位数相除,编写双精度运算程序。 将一个5位数65 535 的BCD码转换成二进制数。 将一个16位二进制数转换成BCD码 ui,阐明逼近存放器所生成的数字量太大,应将逼近存放器里的最高位去掉,改置次高位D6为“1;假设ua ui,阐明所
55、生成的数字量还不够大,应保管该位为“1,此外还需把下一次高位D5置 “1,依此方法逐位比较下去,直至确定最低位D0是“0还是“1。 12.2 A/D转换器主要技术目的 A/D转换器有三个主要的技术目的:转换时间转换速率、分辨率和转换精度。 1转换时间和转换速率 转换时间是A/D完成一次转换所需求的时间,转换时间的倒数即为转换速率。 2分辨率 3转换精度 A/D转换器的转换精度定义为一个实践A/D转换器在量化值上的差值。可用绝对误差或相对误差表示。 A/D转换器的量化精度称为分辨率,习惯上用输出二进制位数或BCD码表示。例如AD574模数转换器,可输出二进制数12位,即用 212个分割对待测模拟
56、量进展量化。 12.3 ADC模块构造和操作原理 12.3.1 F877片内ADC模块 F877内部嵌入的ADC模块是10位数字量精度,共有8个模拟通道。与ADC模块有关的存放器比较多,共有11个。 ADC控制存放器0:ADCON0 ADC控制存放器1:ADCON1ADC结果存放器:ADRESH :ADRESL 中断控制存放器:INTCOM中断标志存放器:PIR1 中断屏蔽存放器:PIE1A口方向存放器:TRISAE口方向存放器:TRISEE口数据存放器:PORTE1. A/D控制存放器ADCON0 Bit0/ADON:A/D转换器开关位。0:封锁ADC,令其退出任务形状,可以不耗费电流;1:
57、起用ADC,令其进入任务形状。Bit2/GODONE:A/D转换启动控制位兼作形状位。 在ADON=1的前提下:0: A/D转换曾经完成自动清零或表示未进展A/D转换; 1: 启动A/D转换过程或阐明A/D转换正在进展。 Bit5- Bit3/CHS2-CHS0:A/D转换模拟信道选择位。 选择公共通路与哪一个模拟输入端接通。其中AN5AN7通道只需40脚封装的型号才具备。CHS2-CHS0:000:选择信道0,RA0AN0; 001:选择信道1,RA1AN1; 010:选择信道2,RA2AN2; 011:选择信道3,RA3AN3; 100:选择信道4,RA5AN4; 101:选择信道5,RE
58、0AN5; 110:选择信道6,RE1AN6; 111:选择信道7,RE2AN7。Bit7- Bit6/ADCS1-ADSC0:A/D转换时钟及其频率选择位。ADCS1-ADSC0: 00:选择系统时钟,频率为fosc/2;01:选择系统时钟,频率为fosc/8;10:选择系统时钟,频率为fosc/32; 11:选择内部阻容RC振荡器,频率为fR C。 . ADC控制存放器ADCON1 主要用于控制相关引脚的功能选择。对于RA和RE端口的各条引脚功能进展设置,它们可以被设置成模拟输入、或者参考电压输入、或者通用数字I/O引脚。 . ADC控制存放器ADCON1 Bit3- Bit0/PCFG3
59、-PCFG0: A/D转换引脚功能选择位。 Bit7/ADFM:A/D转换结果格式选择位,自动参数。 0:结果左对齐,ADRESL存放器的低6位读作0; 1:结果右对齐,ADRESH存放器的高6位读作0 例如:PCFG3-PCFG0=0011,RE2-RE0定义为通用数字I/O引脚,RA5、RA2、RA1和RA0定义为模拟信道,RA3引脚定义为外接正参考电压REF+,VSS引脚定义为内接负参考电压REF-。 3方向控制存放器TRISA、TRISE 方向控制存放器TRISA、TRISE和ADCON1配合运用,有控制ADC模拟通道引脚的功能。作为模拟输入时,方向存放器中相应位必需被置位。假设方向存
60、放器相应位被清零,把相应引脚设置为输出方式,也就成通用数字I/O引脚。 ADC模块的转换行为与ADCON1存放器内PCHS2-PCHS0位的形状无关,转换模拟信道是由ADCON0的CHS2-CHC0确定的。 第13章 PIC系统功能 IC系列单片机在片内集成了一系列具有独特功能的外围公用电路。采用这样的芯片构成的运用系统不仅可以提供最大的系统可靠性,而且由于最大限制地减少外部器件,降低了系统本钱和系统功耗。PIC强大的系统功能及完善的配置方式,对于从事单片机运用开发工程人员来说,提供了非常大的方便。 13.1PIC系统功能及配置 就系统功能及配置情况,PIC系列单片机可以说功能强大、配置完善,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共同经营货车合同范本
- 个人法制宣传教育工作总结
- 个人工作岗位调动申请书
- 业主授权委托书
- 个人之间合伙合同范本
- 企业餐厅布置租房合同范本
- 买卖房合同范本简易
- 原材供货合同范本
- 与律师事务所签署合同范本
- 前程无忧合同范本
- 建筑工地三级安全教育卡
- ID5S606B 600V高低侧栅极驱动芯片兼容PN7103-骊微电子
- 大学生人文知识竞赛报名表
- 小升初阅读理解专题课件
- 血浆吸附疗法课件
- 人教部编版九年级下册历史第四单元 经济大危机和第二次世界大战单元测试题
- 个人理财实务教学课件
- (完整版)新版PEP小学英语五年级下册教材分析
- 研发经费填报指标说明及核算方法
- 一年级思维训练(课堂PPT)
- 绿色光年20162017双上海闵行区江川绿色光
评论
0/150
提交评论