單片機第二次講課_第1頁
單片機第二次講課_第2頁
單片機第二次講課_第3頁
單片機第二次講課_第4頁
單片機第二次講課_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Microchip

為您供給完整的嵌入式掌握解決方案射頻收發(fā)器紅外通訊功率驅動馬達繼電器打印頭數(shù)字外圍器件PWMRealTimeClock加密器件(Keeloq)語音處理協(xié)處理器LED驅動VF驅動LCD驅動放大器傳感器濾波器SRAMA/D轉換器

MicrocontrollersD/A周密電壓基準總線通訊-CANbus-USB電源治理-穩(wěn)壓器-監(jiān)視器電源高電壓I/ODTMF編解碼串行不揮存儲器電位器收發(fā)器-RS232/485-CANbus-USBMicrochip強項復合強項Telcom強項129種型號,12個系列的產(chǎn)品可供選擇增加型FLASH,OTP(EPROM),EEPROM,和ROM等多種程序存儲器強大的模擬接口牢靠的工業(yè)級產(chǎn)品和敏捷的移植性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

將來的產(chǎn)品會連續(xù)保持管腳和指令的兼容性有關存放器文件存放器RAM數(shù)據(jù)存儲器專用存放器地址通用存放器地址P44定義偽指令主要是定義存放器地址編程主要是和存放器打交道特殊功能存放器status最主要CDCZRP0RP1程序存儲器13位寬的程序存儲器P388K程序存儲器的容量分為4頁8K*1414是指令的位數(shù)p56面對字節(jié)操作6位操作碼7位操作數(shù)d是結果存放

PCL低8位可讀可寫PCH高5位PCLATH

PIC單片機架構

尋址模式操作數(shù)尋址-9位(512字節(jié))尋址范圍直接尋址低7位的數(shù)據(jù)地址直接在指令中描述高2位在STATUS存放器中(又稱存放器組號BANK)Bcfstatus,rp0間接尋址用FSR存放器作為8位地址指針與INDF協(xié)作另外1位在STATUS中描述(p48)用編譯器內含的宏來簡化高位地址的設定直接尋址:BANKSEL(如bankselTRISA)間接尋址:BANKISEL(如bankiselPORTB)馬上數(shù)尋址指令中含有一個8位的馬上數(shù)如指令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相對尋址實現(xiàn)查找表范例

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跨頁查表首先依據(jù)表首址推斷是否跨頁,然后再設置PCLATH應用筆記movlwHIGHTable gethigh5bitsofbtfscstatus,c ;pagecrossed?addlw1 ;yesthenincrement ;highaddressmovwfPCLATH ;loadhighaddressin ;latchAN556 ImplementingaTableRead地址起始地址ORG000hnopgotomain中斷效勞子程序地址ORG004h

中斷效勞子程序返回到中段響應時的地址,是隨機的retfie偽指令定義文件存放器地址.依據(jù)規(guī)定〔P44)定義通用存放器地址.自己定義〔P44)定義數(shù)據(jù)

怎么區(qū)分偽指令定義的是地址還是數(shù)據(jù),依據(jù)程序例如:countequ21h程序中用到是數(shù)據(jù)movlwcount21h就是數(shù)據(jù)程序中用到是地址movwfcount21h就是地址如何觀看文件存放器010203040f0010內容0020--

RAMEEPROMFLASH的用途RAM512〔實際可用缺乏512〕相當于內存,掉電數(shù)據(jù)喪失P44上面是專用存放器,地址不行修改,下面是通用存放器,用戶可以任憑用EEPROM電可擦除可編程ROM,掉電后數(shù)據(jù)不喪失,本錢高FLASH閃速電可擦除可編程ROM,用做程序存儲器,本錢低編程留意事項1、留意大小寫2、逗號3、通用存放器的安排不要沖突4、標號與call指令要全都堆棧什么狀況下用到堆棧?CALL中斷堆棧工作方式先進后出

堆棧的深度說明什么?嵌套級數(shù)8層實際能用7層留意的問題:堆棧溢出換體問題文件存放器的構造簡潔消失的問題看門狗用途在程序跑飛時自動復位用法喂狗,清計數(shù)器中斷p179隨機發(fā)生一級中斷,不考慮優(yōu)先級中斷源13種中斷標志位:1表示有中斷,0去除中斷外部中斷INT與RB0內部中斷由程序定中斷返回指令RETFIE中斷效勞子程序的入口地址用開發(fā)系統(tǒng)留意事項RB6RB7引腳保存首條指令必需是NOP占了8級堆棧中一級SLEEP指令在調試期間不能使用調試程序只能設置一個程序斷點數(shù)據(jù)總線寫端口W存放器寫方向掌握存放器讀端口I/O管腳數(shù)據(jù)鎖存方向鎖存VssVDD復位????I/O腳帶ESD愛護二極管DQQDQQPIC單片機周邊模塊

數(shù)字輸入/輸出端口內部弱上拉電阻(軟件設定)使RB4-RB7腳處于高電平RB0-RB3輸出低電平0任何按鍵按下都會把RB4-RB7腳的電平拉低,由此可以產(chǎn)生中斷該中斷可以喚醒單片機不必定時查詢,可節(jié)省定時器資源PIC16CXX-049714SATRB0RB1RB2RB3RB4RB5RB6RB7123A456B789C*0#D用于ESD愛護的電阻(選件)PIC單片機周邊模塊

數(shù)字輸入端口:端口B狀態(tài)變換中斷功能PIC單片機周邊模塊

定時器1(續(xù))同步電路Fosc/4T1OSO/T1CKI溢出時中斷標志T1IF被置位時鐘輸入T1CKPS1:T1CKPS02同步化的TMR1ON睡眠掌握輸入8位數(shù)據(jù)總線T1OSITMR1HT1OSCEN預分頻1,2,4,8TMR1L8位數(shù)據(jù)總線T1SYNCTMR1CSPIC單片機周邊模塊

用定時器1做實時時鐘在定時器1的振蕩器輸入腳上接一32.786kHz的晶體:定時器1靠自己的振蕩器遞增工作.系統(tǒng)主振可以選用較快速且低本錢的RC振蕩器.在單片機睡眠時定時器1照樣計數(shù).當定時器1計數(shù)溢出時產(chǎn)生中斷.另外,RC振蕩器的頻率也可用32KHz的晶體來測量標定.T1OSIOSC1PICmicro?+5VRCYT1OSOCC設定TMR1H存放器的初值可以加快溢出率:TMR1H=80h1秒溢出TMR1H=C0h0.5秒溢出詳情請參閱應用筆記AN580.PIC單片機周邊模塊

用定時器1做實時時鐘PIC單片機周邊模塊

同步串行口(SSP)可配置成在SPI?模式或是I2C?模式SPI模式可編程的數(shù)據(jù)波特率單片機跑33MHz時,最高波特率主控模式(MI2C):8.25Mbaud附屬模式(I2C):3.68Mbaud,單字節(jié)發(fā)送發(fā)送/接收時的時鐘極性(脈沖沿)可編程支持全部四種SPI模式I2C模式支持標準(100kHz)和快速(400kHz)I2C協(xié)議SPIisatrademarkofMotorolaSemiconductorI2CisatrademarkofPhilipsSemiconductorsAN554

SoftwareImplementationofI2CBusMaster

PIC單片機周邊模塊

串行通訊口(SCI/USART)可進展全雙工異步或半雙工同步通訊8或9位數(shù)據(jù)格式發(fā)送和接收都有雙緩沖器獨立的發(fā)送和接收中斷最低有效位(LSB)開頭發(fā)送和接收特地的波特率發(fā)生器,不占任何定時器資源主頻20MHz時,最高波特率可達:同步通訊:5Mbaud異步通訊:312.5Kbaud/1.25Mbaud具備9位可尋址模式AN555

SoftwareImplementationofAsynchronousSerialI/O

注:復位后的缺省狀態(tài)為模擬輸入狀態(tài)PIC單片機周邊模塊

8位A/D模塊功能框圖(輸入電壓)VAINVREF(參考電壓)VDD

(1)PCFG2:PCFG0CHS2:CHS0AN7AN6AN5AN4AN3/VREFAN2AN1AN01111101011000110100010008位

A/D轉換器特殊功能請查閱器件手冊以確認該器件所具有的特殊功能

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

振蕩器選項LP,XT,HSOSC???內部時基振蕩器選擇Fosc0Fosc1Fosc2外部RC振蕩器VDD內部RC振蕩器時鐘輸出訪能CLKOUTCLKIN依據(jù)工作頻率和電壓范圍選擇單片機,如工作頻率: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%所推舉的不同模式下的頻率范圍只是一個閱歷值客戶選擇晶體參數(shù)和特性建議客戶應慎重選擇振蕩晶體客戶必需針對具體的設計去驗證得到一個最正確的振蕩模式選項LP/XT/HS的不同在于芯片內建立振蕩的反向放大器增益不同,LP時增益最小,HS時增益最大如:4MHz的工作頻率有可能要設成HS模式建議用戶用示波器觀看OSC2腳的波形示波器的接入對振蕩電路的影響要小正確的波形必需是一個標準的正弦波,沒有任何畸變和失真,正常工作條件(常溫常壓)下,最好有75%Vdd以上的峰-峰值在兩個極端點測試:最低溫度+最高電壓;最高溫度+最低電壓。振蕩器必需能保證正常工作。特殊功能

振蕩器選項TheMicrochipOscillatorMostMicrocontrolleroscillators,includingMicrochip’sareaPiercedesign.OscillatorModeisselectedbasedonthefrequency.InvertingAmplifiergainincreasesforhigherfrequencymodesC1,C2andRsareselectedtooptimizetheoscillatorcircuit.Cload=AN588-PIC16/17OscillatorDesignGuide

Fact1-BASICPIC16/17OSCILLATORDESIGNGUIDE

特殊功能

睡眠模式執(zhí)行SLEEP指令就可以把單片機置成睡眠模式,此時:系統(tǒng)主振停振處理器保持現(xiàn)有狀態(tài)(靜態(tài)設計)假設看門狗以翻開,它將連續(xù)運行芯片耗電最少-主要是漏電流睡眠時的電流消耗:典型值為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規(guī)律或ANDWF f,d W和f規(guī)律與XORWF f,d W和f規(guī)律異或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 帶進位循環(huán)右移RLF f,d 帶進位循環(huán)左移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帶馬上數(shù)返回RETFIE - 中斷返回RETURN - 子程序返回CALL k 調用子程序GOTO k 強行跳轉(k為9位地址描述)MOVLW k W置馬上數(shù)IORLW k W和馬上數(shù)規(guī)律或ADDLW k W和馬上數(shù)相加SUBLW k 馬上數(shù)減去WANDLW k W和馬上數(shù)規(guī)律與XORLW k W和馬上數(shù)規(guī)律異或字節(jié)操作位操作馬上數(shù)和掌握操作f=存放器,k=馬上數(shù)(8位),b=位地址<0,7>,d=目的地(1=f,0=W)PICmicro單片機指令集

字節(jié)操作14位內核之字節(jié)操作指令構成操作碼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 字節(jié)操作指令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單片機指令集

字節(jié)操作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單片機指令集

字節(jié)操作SaveoneinstructionwhenusingtwoconsecutiveNOPsUseGOTO“nextinstruction”insteadGOTOtakestwocycles,sotimingispreservedNOPNOP2instructions,2cyclesGOTO $+11instruction,2cyclesSoftwareTip

編程技巧

節(jié)省指令DestinationbitdeterminesWorFforresultLookatdatamovementandre-structureExample:A+B->AMOVF B,WADDWF A,F2instructionsMOVF A,WADDWF B,WMOVWF A3instructionsSoftwareTip

編程技巧

節(jié)省指令Solution1:

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

“REG”

和W中的值SoftwareTip

編程技巧

節(jié)省指令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

編程技巧

節(jié)省指令任務:交換

“REG”

和W中的值真的會實現(xiàn)我們的要求嗎?

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實戰(zhàn)應用

軟件看門狗策略ToforceWDTresetonpower-up:CheckforRAMpatternatpower-upIfpatternisnotthere:InitializeRAMpatternForceWDTresetForceWDTresetifcodejumpstounusedprogrammemory實戰(zhàn)應用

軟件看門狗策略MaintainsubroutinecallandexecutioncountersIncrementcallcounterforeverysubroutinecallIncrementexecutioncounteratthetopofeverysubroutineAtthetopofmainloop,checkifcallandexecutioncountersareequalIfnotequal,forceaWDTresetSoftwareTip

編程技巧

子程序計數(shù)器開發(fā)工具MPLAB-ICDProjectManagerBuilt-inEditorSourceLevelDebuggerMPASMAssembler編程語言編程器MPLAB-SIM模擬器軟件模擬器硬件仿真器第三方工具MPLINKMPLIBMPLAB?集成開發(fā)環(huán)境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集成開發(fā)環(huán)境實時的代碼運行可單步執(zhí)行可設一個硬件斷點可以觀看變量3.0V至5.5V的工作電壓范圍32kHz至20MHz的運行速度通過57.6K的串行電纜和PC電腦

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論