单片机第二次讲课_第1页
单片机第二次讲课_第2页
单片机第二次讲课_第3页
单片机第二次讲课_第4页
单片机第二次讲课_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Microchip

为您供给完整的嵌入式掌握解决方案射频收发器红外通讯功率驱动马达继电器打印头数字外围器件PWMRealTimeClock加密器件(Keeloq)语音处理协处理器LED驱动VF驱动LCD驱动放大器传感器滤波器SRAMA/D转换器

MicrocontrollersD/A周密电压基准总线通讯-CANbus-USB电源治理-稳压器-监视器电源高电压I/ODTMF编解码串行不挥存储器电位器收发器-RS232/485-CANbus-USBMicrochip强项复合强项Telcom强项129种型号,12个系列的产品可供选择增加型FLASH,OTP(EPROM),EEPROM,和ROM等多种程序存储器强大的模拟接口牢靠的工业级产品和敏捷的移植性64/68-PinFamily40/44-PinFamily28-PinFamily18/20-PinFamily14-PinFamily8-PinFamily80/84-PinFamily.5KWord-2KWord1KWord-2KWord.5KWord-4KWord.5KWord-16KWord2KWord-16KWord4KWord-16KWord8KWord-16KWord无缝移植PICmicro单片机移植特性PICmicro40-pin和28-pin系列

管脚和指令的兼容性PIC16CR63

PIC16CR72

PIC16F876

PIC16C62B

PIC16C72A

PIC16F873

PIC16C63A PIC16C73B PIC18C242PIC16C66

PIC16C76 PIC18C252

PIC16F73 PIC18F242 PIC16F76

PIC18F252

PIC16C773 PIC18F458

PIC16C745

RC0/T1OSO/T1CKIOSC2/CLKO/RA6RC1/T1OSI/CCP212345678910111213141516171819202827262524232221MCLR/VPPRA0/AN0RA1/AN1RA2/AN2/Vrl/Vref-RA3/AN3/Vrh/Vref+RA4/TOCKIRA5/SS/AN4/AVDD/LvdinAVSSOSC1/CLKIRC2/CCP1RC3/SCK/SCLRB7/PG0/RB6/PGC/RB5/RB4/RB3/PGM/CCP2RB2/INT2/RB1/INT1RB0/INT0VDDVSSRC6/TX/CKRC5/SDO/D+RC4/SDI/SDA/D-RC7/RX/DTPICmicro28LFamilyRC0/T1OSO/T1CKIOSC2/CLKO/RA6RC1/T1OSI/CCP212345678910111213141516171819204039383736353433323130292827262524232221MCLR/VPPRA0/AN0RA1/AN1RA2/AN2/Vrl/Vref-RA3/AN3/Vrh/Vref+RA4/TOCKIRA5/SS/AN4/LvdinRE0/RD/AN5RE1/WR/AN6RE3/CS/AN7AVDDAVSSOSC1/CLKIRC2/CCP1RC3/SCK/SCLRD0/PSP0/C1IN+RD1/PSP1/C1IN-RB7/PG0/KBI3RB6/PGC/KBI2RB5/KBI1RB4/KBI0RB3/PGM/CCP2/CANRXRB2/INT2/CANTXRB1/INT1RB0/INT0VDDVSSRD7/PSP7/PDRD6/PSP6/PCRD5/PSP5/PBRD4/PSP4/ECC/PARC6/TX/CKRC5/SDO/D+RC4/SDI/SDA/D-RD3/SPS3/C2IN-RD2/PSP2/C2IN+RC7/RX/DTPICmicro40LFamilyPIC16CR65

PIC16C74B

PIC16F877PIC16C64

PIC16C77

PIC16F874

PIC16C65B

PIC16F74

PIC18C442PIC16C67

PIC16F77

PIC18C452

PIC16C765

PIC18F442

PIC16C774

PIC18F452

PIC18F458

将来的产品会连续保持管脚和指令的兼容性有关存放器文件存放器RAM数据存储器专用存放器地址通用存放器地址P44定义伪指令主要是定义存放器地址编程主要是和存放器打交道特殊功能存放器status最主要CDCZRP0RP1程序存储器13位宽的程序存储器P388K程序存储器的容量分为4页8K*1414是指令的位数p56面对字节操作6位操作码7位操作数d是结果存放

PCL低8位可读可写PCH高5位PCLATH

PIC单片机架构

寻址模式操作数寻址-9位(512字节)寻址范围直接寻址低7位的数据地址直接在指令中描述高2位在STATUS存放器中(又称存放器组号BANK)Bcfstatus,rp0间接寻址用FSR存放器作为8位地址指针与INDF协作另外1位在STATUS中描述(p48)用编译器内含的宏来简化高位地址的设定直接寻址:BANKSEL(如bankselTRISA)间接寻址:BANKISEL(如bankiselPORTB)马上数寻址指令中含有一个8位的马上数如指令movlw,addlw,retlw,等PIC单片机架构

程序跳转8K字(PC宽度为13位)的寻址范围PC确定寻址(p56)用于CALL和GOTO指令指令中含有11位的地址码最高2位在PCLATH存放器的位4,3PC相对寻址通过计算让程序基于当前的PC作相对跳转(ADDWFPCL,1)把计算结果直接写到PC存放器中必需先把目的地址的高5位写到PCLATH存放器再写PCL(PC低8位)存放器用编译器内含的宏设定PCLATH存放器SELSUB1/CALLSUB100000000XXXXXXXXPIC单片机架构

PC相对寻址实现查找表范例

org 0x10 clrf PCLATH movf DisplayValue,W call SevenSegmentDecode movwf PORTB goto ContinueSevenSegmentDecode addwf PCL,F retlw B’00111111’;decode0 retlw B’00000110’;decode1 retlw B’01011011’;decode2 retlw B’01001111’;decode3 retlw B’01100110’;decode4 retlw B’01101101’;decode5 retlw B’01111101’;decode6 retlw B’00000111’;decode7 retlw B’01111111’;decode8 retlw B’01101111’;decode9ContinuebegafdcPIC16CXX-049714SATRB0RB1RB2RB3RB4RB5RB6abcdefggafdcWRegisterI/OPortB0110110100000101movf DisplayValue,Wcall SevenSegmentDecodeaddwf PCL,Fretlw B’01101101’;decode5movwf PORTB01101101查表程序不跨页查表最大2K跨页查表首先依据表首址推断是否跨页,然后再设置PCLATH应用笔记movlwHIGHTable gethigh5bitsofbtfscstatus,c ;pagecrossed?addlw1 ;yesthenincrement ;highaddressmovwfPCLATH ;loadhighaddressin ;latchAN556 ImplementingaTableRead地址起始地址ORG000hnopgotomain中断效劳子程序地址ORG004h

中断效劳子程序返回到中段响应时的地址,是随机的retfie伪指令定义文件存放器地址.依据规定〔P44)定义通用存放器地址.自己定义〔P44)定义数据

怎么区分伪指令定义的是地址还是数据,依据程序例如:countequ21h程序中用到是数据movlwcount21h就是数据程序中用到是地址movwfcount21h就是地址如何观看文件存放器010203040f0010内容0020--

RAMEEPROMFLASH的用途RAM512〔实际可用缺乏512〕相当于内存,掉电数据丧失P44上面是专用存放器,地址不行修改,下面是通用存放器,用户可以任凭用EEPROM电可擦除可编程ROM,掉电后数据不丧失,本钱高FLASH闪速电可擦除可编程ROM,用做程序存储器,本钱低编程留意事项1、留意大小写2、逗号3、通用存放器的安排不要冲突4、标号与call指令要全都堆栈什么状况下用到堆栈?CALL中断堆栈工作方式先进后出

堆栈的深度说明什么?嵌套级数8层实际能用7层留意的问题:堆栈溢出换体问题文件存放器的构造简洁消失的问题看门狗用途在程序跑飞时自动复位用法喂狗,清计数器中断p179随机发生一级中断,不考虑优先级中断源13种中断标志位:1表示有中断,0去除中断外部中断INT与RB0内部中断由程序定中断返回指令RETFIE中断效劳子程序的入口地址用开发系统留意事项RB6RB7引脚保存首条指令必需是NOP占了8级堆栈中一级SLEEP指令在调试期间不能使用调试程序只能设置一个程序断点数据总线写端口W存放器写方向掌握存放器读端口I/O管脚数据锁存方向锁存VssVDD复位••••I/O脚带ESD爱护二极管DQQDQQPIC单片机周边模块

数字输入/输出端口内部弱上拉电阻(软件设定)使RB4-RB7脚处于高电平RB0-RB3输出低电平0任何按键按下都会把RB4-RB7脚的电平拉低,由此可以产生中断该中断可以唤醒单片机不必定时查询,可节省定时器资源PIC16CXX-049714SATRB0RB1RB2RB3RB4RB5RB6RB7123A456B789C*0#D用于ESD爱护的电阻(选件)PIC单片机周边模块

数字输入端口:端口B状态变换中断功能PIC单片机周边模块

定时器1(续)同步电路Fosc/4T1OSO/T1CKI溢出时中断标志T1IF被置位时钟输入T1CKPS1:T1CKPS02同步化的TMR1ON睡眠掌握输入8位数据总线T1OSITMR1HT1OSCEN预分频1,2,4,8TMR1L8位数据总线T1SYNCTMR1CSPIC单片机周边模块

用定时器1做实时时钟在定时器1的振荡器输入脚上接一32.786kHz的晶体:定时器1靠自己的振荡器递增工作.系统主振可以选用较快速且低本钱的RC振荡器.在单片机睡眠时定时器1照样计数.当定时器1计数溢出时产生中断.另外,RC振荡器的频率也可用32KHz的晶体来测量标定.T1OSIOSC1PICmicro®+5VRCYT1OSOCC设定TMR1H存放器的初值可以加快溢出率:TMR1H=80h1秒溢出TMR1H=C0h0.5秒溢出详情请参阅应用笔记AN580.PIC单片机周边模块

用定时器1做实时时钟PIC单片机周边模块

同步串行口(SSP)可配置成在SPI™模式或是I2C™模式SPI模式可编程的数据波特率单片机跑33MHz时,最高波特率主控模式(MI2C):8.25Mbaud附属模式(I2C):3.68Mbaud,单字节发送发送/接收时的时钟极性(脉冲沿)可编程支持全部四种SPI模式I2C模式支持标准(100kHz)和快速(400kHz)I2C协议SPIisatrademarkofMotorolaSemiconductorI2CisatrademarkofPhilipsSemiconductorsAN554

SoftwareImplementationofI2CBusMaster

PIC单片机周边模块

串行通讯口(SCI/USART)可进展全双工异步或半双工同步通讯8或9位数据格式发送和接收都有双缓冲器独立的发送和接收中断最低有效位(LSB)开头发送和接收特地的波特率发生器,不占任何定时器资源主频20MHz时,最高波特率可达:同步通讯:5Mbaud异步通讯:312.5Kbaud/1.25Mbaud具备9位可寻址模式AN555

SoftwareImplementationofAsynchronousSerialI/O

注:复位后的缺省状态为模拟输入状态PIC单片机周边模块

8位A/D模块功能框图(输入电压)VAINVREF(参考电压)VDD

(1)PCFG2:PCFG0CHS2:CHS0AN7AN6AN5AN4AN3/VREFAN2AN1AN01111101011000110100010008位

A/D转换器特殊功能请查阅器件手册以确认该器件所具有的特殊功能

÷4OSCCAL存放器设定特殊功能

振荡器选项LP,XT,HSOSC•••内部时基振荡器选择Fosc0Fosc1Fosc2外部RC振荡器VDD内部RC振荡器时钟输出访能CLKOUTCLKIN依据工作频率和电压范围选择单片机,如工作频率:16CXX-04对应于16CXX-20工作电压:16Cxx对应于16LCXXX假设单片机用外部独立的时钟信号,则可以把单片机配置成除RC振荡模式外的任何振荡器选项。给用户供给了很大的设计敏捷性LP振荡器模式功耗最少。RC振荡模式本钱最低:只需外接一个电阻和电容。特殊功能

振荡器选项XT振荡模式适用于一般的工作频率,可以使用晶体或陶瓷谐振器试验箱用的是4MHS振荡模式适用于高频的振荡的晶体,如20MHzLP振荡模式适用于一般的工作频率,如32.768KHz特殊功能

振荡器选项一般单片机都有4至5种不同的振荡模式选项可以通过芯片的配置位来设定,包括OTP型的单片机特殊功能

振荡器选项-XT-

HS-

LP-RC-INTRC标准的晶体振荡器高频晶体振荡器低频晶体振荡器外部RC振荡器内部RC振荡器100kHz-4MHz4MHz-20MHzDC-200kHzDC-4MHz4MHz5%所推举的不同模式下的频率范围只是一个阅历值客户选择晶体参数和特性建议客户应慎重选择振荡晶体客户必需针对具体的设计去验证得到一个最正确的振荡模式选项LP/XT/HS的不同在于芯片内建立振荡的反向放大器增益不同,LP时增益最小,HS时增益最大如:4MHz的工作频率有可能要设成HS模式建议用户用示波器观看OSC2脚的波形示波器的接入对振荡电路的影响要小正确的波形必需是一个标准的正弦波,没有任何畸变和失真,正常工作条件(常温常压)下,最好有75%Vdd以上的峰-峰值在两个极端点测试:最低温度+最高电压;最高温度+最低电压。振荡器必需能保证正常工作。特殊功能

振荡器选项TheMicrochipOscillatorMostMicrocontrolleroscillators,includingMicrochip’sareaPiercedesign.OscillatorModeisselectedbasedonthefrequency.InvertingAmplifiergainincreasesforhigherfrequencymodesC1,C2andRsareselectedtooptimizetheoscillatorcircuit.Cload=AN588-PIC16/17OscillatorDesignGuide

Fact1-BASICPIC16/17OSCILLATORDESIGNGUIDE

特殊功能

睡眠模式执行SLEEP指令就可以把单片机置成睡眠模式,此时:系统主振停振处理器保持现有状态(静态设计)假设看门狗以翻开,它将连续运行芯片耗电最少-主要是漏电流睡眠时的电流消耗:典型值为0.1-2.0A留意该值为芯片本身的功耗用户应当尽量避开在芯片睡眠时还有外围负载驱动RC模式较晶体更易唤醒PICmicro单片机指令集(35条)

汇总NOP - 空操作MOVWF f 把W内容送fCLRW - 去除WCLRF f 去除fSUBWF f,d f减去WDECF f,d f递减1IORWF f,d W和f规律或ANDWF f,d W和f规律与XORWF f,d W和f规律异或ADDWF f,d W和f相加MOVF f,d 传送fCOMF f,d f取反INCF f,d f递增1DECFSZ f,d f递减1,结果为0则跳RRF f,d 带进位循环右移RLF f,d 带进位循环左移SWAPF f,d f凹凸4位内容交换INCFSZ f,d f递增1,结果为0则跳BCF f,b f位清0BSF f,b f位置1BTFSC f,b f位测试,为0则跳BTFSS f,b f位测试,为1则跳SLEEP - 进入低功耗休眠模式CLRWDT - 清看门狗RETLW k W带马上数返回RETFIE - 中断返回RETURN - 子程序返回CALL k 调用子程序GOTO k 强行跳转(k为9位地址描述)MOVLW k W置马上数IORLW k W和马上数规律或ADDLW k W和马上数相加SUBLW k 马上数减去WANDLW k W和马上数规律与XORLW k W和马上数规律异或字节操作位操作马上数和掌握操作f=存放器,k=马上数(8位),b=位地址<0,7>,d=目的地(1=f,0=W)PICmicro单片机指令集

字节操作14位内核之字节操作指令构成操作码dfffffffd=目的地标志位

d=0结果送W d=1结果送ff=7位存放器地址例如:ADDWF REG,WADDWF f,dNOP - MOVWF f CLRW - CLRF f SUBWF f,d DECF f,d IORWF f,d ANDWF f,d XORWF f,d ADDWF f,d MOVF f,d COMF f,d INCF f,d DECFSZ f,d RRF f,d RLF f,d SWAPF f,d INCFSZ f,d 字节操作指令MOVWF MoveWtofSyntax: MOVWFfOperands: 0<=f<=127Operation: (W)->(f)Status: NoneEncoding: 0000001ffffffWords: 1Cycles: 1

Example:

MOVWF FSR BeforeInstruction FSR =0xFF W =0x4F AfterInstruction FSR =0x4F W =0x4FPICmicro单片机指令集

字节操作SUBWF SubtractWfromfSyntax: SUBWFf,dOperands: 0<=f<=127 d={0,1}Operation: (f)-(W)->destStatus: C,DC,ZEncoding: 000010dfffffffWords: 1Cycles: 1

Example:

SUBWFFSR,0 BeforeInstruction FSR =0x03 W =0x02 C =? Z =? AfterInstruction FSR =0x03 W =0x01 C =1 Z =0PICmicro单片机指令集

字节操作SaveoneinstructionwhenusingtwoconsecutiveNOPsUseGOTO“nextinstruction”insteadGOTOtakestwocycles,sotimingispreservedNOPNOP2instructions,2cyclesGOTO $+11instruction,2cyclesSoftwareTip

编程技巧

节省指令DestinationbitdeterminesWorFforresultLookatdatamovementandre-structureExample:A+B->AMOVF B,WADDWF A,F2instructionsMOVF A,WADDWF B,WMOVWF A3instructionsSoftwareTip

编程技巧

节省指令Solution1:

MOVWFTEMP1 ;SaveW MOVFREG,W ;SaveREG MOVWFTEMP2 MOVFTEMP1,W;Old<W>->REG MOVWFREG MOVFTEMP2,W;Old<REG>->WNeeds:2TEMPRegisters 6Instructions 6Tcy任务:交换

“REG”

和W中的值SoftwareTip

编程技巧

节省指令Solution1:

MOVWFTEMP1 ;SaveW MOVFREG,W ;SaveREG MOVWFTEMP2 MOVFTEMP1,W;Old<W>->REG MOVWFREG MOVFTEMP2,W;Old<REG>->WNeeds:2TEMPRegisters 6Instructions 6TcySolution2XORWF REG,W

XORWF REG,F

XORWF REG,WNeeds:0TEMP 3Reg’s 3Instructions 3TcySoftwareTip

编程技巧

节省指令任务:交换

“REG”

和W中的值真的会实现我们的要求吗?

W

RegA B :StartA

B B :1xorA

B B

(A

B) :2xor(A

B)

B

(A

B) B

(A

B) :3xorB A :ReduceAfterresetI/OpinisHigh-ZR1/CdeterminesoscillatorsfrequencyOutput“1”onI/OpinR1/R2determinesOscFrequencyWorksalsowithadditionalcapacitorsPICI/OOSC1+5V硬件技巧

双时钟RC振荡器WatchdogeffectivenessisonlyasgoodasthesoftwarecontrollingitUse

one

CLRWDTinstructionfortheentireprogramPlaceCLRWDTinthemainloopDonotplaceCLRWDTinISRoranysub-routinesSelecttheminimumWDTtimeoutperiodthatmainlooptimingcantolerateCanbeasshortas9ms!InitializeunusedmemoryasGOTOwdtreset (self-loop)toforcetimeout实战应用

软件看门狗策略ToforceWDTresetonpower-up:CheckforRAMpatternatpower-upIfpatternisnotthere:InitializeRAMpatternForceWDTresetForceWDTresetifcodejumpstounusedprogrammemory实战应用

软件看门狗策略MaintainsubroutinecallandexecutioncountersIncrementcallcounterforeverysubroutinecallIncrementexecutioncounteratthetopofeverysubroutineAtthetopofmainloop,checkifcallandexecutioncountersareequalIfnotequal,forceaWDTresetSoftwareTip

编程技巧

子程序计数器开发工具MPLAB-ICDProjectManagerBuilt-inEditorSourceLevelDebuggerMPASMAssembler编程语言编程器MPLAB-SIM模拟器软件模拟器硬件仿真器第三方工具MPLINKMPLIBMPLAB®集成开发环境PICSTART®PlusPROMATE®IIICEPIC††第三方工具MPLAB-ICE2023CCompilers†

Hi-Tech,IAR,CCSMPLAB-C17MPLAB-C18In-CircuitDebugger(ICD)在线调试器

功能模块图+9V电源MPLAB-ICD模块MPLAB-ICD插头MPLAB-ICD演示板PIC16F877模块连接线RS-232电缆MPLAB-ICD特点采样MPLAB集成开发环境实时的代码运行可单步执行可设一个硬件断点可以观看变量3.0V至5.5V的工作电压范围32kHz至20MHz的运行速度通过57.6K的串行电缆和PC电脑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论