PIC24系列单片机原理与开发.pdf

上传人:wj 文档编号:11595422 上传时间:2023-06-01 格式:PDF 页数:199 大小:4.56MB
下载 相关 举报
PIC24系列单片机原理与开发.pdf_第1页
第1页 / 共199页
PIC24系列单片机原理与开发.pdf_第2页
第2页 / 共199页
PIC24系列单片机原理与开发.pdf_第3页
第3页 / 共199页
PIC24系列单片机原理与开发.pdf_第4页
第4页 / 共199页
PIC24系列单片机原理与开发.pdf_第5页
第5页 / 共199页
PIC24系列单片机原理与开发.pdf_第6页
第6页 / 共199页
PIC24系列单片机原理与开发.pdf_第7页
第7页 / 共199页
PIC24系列单片机原理与开发.pdf_第8页
第8页 / 共199页
PIC24系列单片机原理与开发.pdf_第9页
第9页 / 共199页
PIC24系列单片机原理与开发.pdf_第10页
第10页 / 共199页
PIC24系列单片机原理与开发.pdf_第11页
第11页 / 共199页
PIC24系列单片机原理与开发.pdf_第12页
第12页 / 共199页
PIC24系列单片机原理与开发.pdf_第13页
第13页 / 共199页
PIC24系列单片机原理与开发.pdf_第14页
第14页 / 共199页
PIC24系列单片机原理与开发.pdf_第15页
第15页 / 共199页
PIC24系列单片机原理与开发.pdf_第16页
第16页 / 共199页
PIC24系列单片机原理与开发.pdf_第17页
第17页 / 共199页
PIC24系列单片机原理与开发.pdf_第18页
第18页 / 共199页
PIC24系列单片机原理与开发.pdf_第19页
第19页 / 共199页
PIC24系列单片机原理与开发.pdf_第20页
第20页 / 共199页
亲,该文档总共199页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PIC24系列单片机原理与开发.pdf

《PIC24系列单片机原理与开发.pdf》由会员分享,可在线阅读,更多相关《PIC24系列单片机原理与开发.pdf(199页珍藏版)》请在冰点文库上搜索。

PIC24系列单片机原理与开发.pdf

?

1?

CPU?

32MHz?

16MIPS(?

/?

)?

8MHz?

PLL?

4?

17?

x17?

32?

/16?

16?

16?

C?

76?

12MB?

64KB?

16?

10?

500ksps?

/?

2.0V?

3.6V?

Flash?

/?

1000?

PIC24FJ128GA?

/?

RC?

LDO?

JTAG?

Power-onReset?

POR?

Power-upTimer?

PWRT?

OscillatorStart-upTimer?

OST?

WatchdogTimer?

WDT?

RC?

In-CircuitSerialProgramming?

ICSP?

In-CircuitEmulation?

ICE?

2?

3?

/4?

SPI?

4?

FIFO?

4?

2?

IIC?

/?

7?

/10?

2?

(UART)?

?

4?

FIFO?

IrDA?

/?

PMP/PSP?

8?

16?

16?

/?

Real-TimeClock/Calendar?

RTCC?

5?

16?

/?

32?

/?

5?

16?

5?

16?

/PWM?

I/O?

18mA?

5?

24?

CN?

16?

PIC24F?

.?

k?

16/32/64/128/256?

PIC24FJ64GA006T-I/PTMicrochip?

16?

Flash?

(64KB)?

:

?

(64pin)?

(?

)?

(TQFP)?

VDD10,26,38P?

VSS9,25,41P?

AVDD19P?

AVSS20P?

MCLR7I?

OSC1/CLKI/RC1239I/O?

OSC2/CLK0/RC1540I/O?

VCAP/VDDCORE56P?

ENVREG57I?

PGD1/EMUD1/PMA6/VREF+/AN0/CN2/RB016I/OPGC1/EMUC1/VREF-/AN1/CN3/RB115I/OC2IN-/AN2/SS1/CN4/RB214I/OC2IN+/AN3/CN5/RB313I/OC1IN-/AN4/CN6/RB412I/OC1IN+/AN5/CN7/RB511I/OPGC2/EMUC2/AN6/OCFA/RB617I/OPGD2/EMUD2/AN7/RB718I/OU2CTS/C1OUT/AN8/RB821I/OPMA7/C2OUT/AN9/RB922I/OTMS/PMA13/CVREF/AN10/RB1023I/OTDO/PMA12/AN11/RB1124I/OTCK/PMA11/AN12/RB1227I/OTDI/PMA10/AN13/RB1328I/OPMA1/U2RTS/BCLK2/AN14/RB1429I/OPMA0/AN15/OCFB/CN12/RB1530I/O?

RC?

2?

3?

OSC1/CLKI/RC1239I/OSOSCI/CN1/RC1347I/OSOSCO/T1CK/CN0/RC1448I/OOSC2/CLKO/RC1540I/O?

RD?

2?

3?

OC1/RD046I/OOC2/RD149I/OOC3/RD250I/OPMBE/OC4/RD351I/OPMWR/OC5/IC5/CN13/RD452I/OPMRD/CN14/RD553I/OCN15/RD654I/OCN16/RD755I/OIC1/RTCC/INT1/RD842I/OIC2/U1CTS/INT2/RD943I/O?

IC3/PMCS2/INT3/RD1044I/OIC4/PMCS1/INT4/RD1145I/O?

RE?

2?

3?

PMD0/RE060I/OPMD1/RE161I/OPMD2/RE262I/OPMD3/RE363I/OPMD4/RE464I/OPMD5/RE51I/OPMD6/RE62I/OPMD7/RE73I/O?

RF?

2?

3?

RF058I/ORF159I/OU1RX/SDI1/RF234I/OU1TX/SDO1/RF333I/OU2RX/SDA2/CN17/RF431I/OU2TX/SCL2/CN18/RF532I/OU1RTS/BCLK1/SCK1/INT0/RF635I/O?

RG?

2?

3?

SCL1/RG237I/OSDA1/RG336I/OSCK2/CN8/RG64I/OSDI2/CN9/RG75I/OSDO2/CN10/RG86I/OCN11/RG98I/O1.3.1?

1-4?

PIC24FJ128GA3.3V?

1.3.2?

1.3.3?

OSC1?

OSC2?

1.3.4?

(?

I/O?

)?

1.3.5?

A/D?

1.3.6?

INT0?

INT4?

1.3.7?

CN0?

CN18?

1.3.8?

P?

CN0:

1CN2:

7CN8:

11CN12CN13:

16CN17:

18I/O?

RC14:

13RB0:

5RG6:

9RB15RD4:

7RF4:

5MCLRMCLRMCLR?

PIC24FJxxGA006?

2?

SPI?

SerialPeripheralInterface?

SPI?

I/O?

1?

5?

PIC24FJxxGA006?

2?

IIC?

Inter?

IntegratedCircuit?

IIC(?

I2C)?

I/O?

1?

6?

1.3.9?

(ParallelMasterPort,PMP)PIC24F?

/I/O?

PMA0:

1PMA2:

5PMA6:

PMA7PMA8:

9PMA10:

13PMD0:

7PMBEPMCS1:

2PMRDPMWRRB15:

14RG9:

6RB0RB9RF5:

4RB13:

10RE0:

7RD3RD11:

12RD5RD41.3.10?

/PWM?

PWM?

PIC24FJxxGA006?

PWM?

U1RXU1TXU1RTSU1CTSU2RXU2TXU2RTSU2CTS?

RF2RF3RF6RD9RF4RF5RB14RB8?

SDI1SDO1SCK1SS1FSYNC1?

SCK2SDI2SDO2SS2FSYNC2?

RF2RF3RF6RB2RG6RG7RG8RG9?

IIC?

1IIC?

2IIC?

SCL1SDA1SDA2SCL2?

I/O?

RG2RG3RF4RF5?

MCU?

PIC24FJxxGA006?

IC1?

IC5,?

RD8?

RD11?

RD4?

1.3.11?

/?

PIC24FJxxGA006?

PGC1?

PGD1?

PGC2?

PGD2?

Microchip?

PIC24F?

MPLAB?

MPLABIDE?

MPLABIntegratedDevelopmentEnvironment?

MPLABIDE?

8/16?

SIM?

16?

PIC24?

dsPIC?

Microchip?

16?

MPLABC30?

MPLABIDE?

MPLABC30?

16?

C?

Flash?

MPLABICD2?

MPLABICD3?

PIC24?

13?

PIC24?

byZeng2012-6-7?

PIC24?

byZeng2012-6-7?

PIC24?

SFR?

SFR?

RAM?

Microchip?

MPLABC30?

gld?

(.gld?

?

p24FJ64GA006.gld)?

SFR?

RAM?

2.2.1?

2.2.2?

W?

2.2.3?

2?

1CPU?

RAM?

W0?

W150x0000?

0x001E?

PC0x002E23?

SR0x0042?

SPLIM0x0020?

CORCON0x0044?

TBLPAG0x0032?

PSVPAG0x0034?

RCOUNT0x0036REPEAT?

PIC24?

byZeng2012-6-72CPU?

2.2.4?

2.3.1?

SR?

B000000000PCPC?

PIC24?

byZeng2012-6-7?

SR?

U-0U-0U-0U-0U-0U-0U-0R/W-0?

DCbit15bit8R/W-0R/W-0R/W-0R-0R/W-0R/W-0R/W-0R/W-0?

bit7bit0?

1=?

0=?

PIC24?

byZeng2012-6-7?

2.3.2?

CORCON?

PIC24?

byZeng2012-6-72CPU?

2.3.3?

CPU?

/?

PIC24?

byZeng2012-6-7?

2.4.1?

Flash?

PC?

0x0001000x0001020x000104?

0x001234?

0x00?

23?

0?

PIC24?

byZeng2012-6-7?

Flash?

Flash?

PIC24?

byZeng2012-6-7?

PIC24?

byZeng2012-6-7?

_CONFIG1(JTAGEN_OFF&GCP_ON&GWRP_OFF&BKBUG_ON&COE_OFF&ICS_PGx1&FWDTEN_ON&FWPSA_PR32&WDTPS_PS64)?

JTAGEN_OFF?

GCP_ON?

GWRP_OFF?

BKBUG_ON?

COE_OFF?

ICS_PGx1?

FWDTEN_ON?

FWPSA_PR32?

WDTPS_PS64?

PIC24?

byZeng2012-6-7?

FWDTEN?

FWPSAWDTPS3WDTPS2WDTPSWDTPS0?

JTAGENGSS0GWRPDEBUGCOE?

ICS?

1111=1:

327681110=1:

163841101=1:

8,1921100=1:

40961011=1:

20481010=1:

10241001=1:

5121000=1:

2560111=1:

1280110=1:

640101=1:

320100=1:

160011=1:

80010=1:

40001=1:

20000=1:

1?

PIC24?

byZeng2012-6-7FCKSM1FCKSM0OSCIOFCN?

POSCMOD1POSCMOD0?

FNOSC2FNOSC1FNOSC0?

1?

0?

10MHz-32MHz?

3.5MHz-10MHz?

0-32MHz?

PIC24?

byZeng2012-6-7?

Mydebug?

_CONFIG1()?

Mydebug?

_CONFIG1()?

2.4.2RAM?

(?

)?

PIC24?

byZeng2012-6-7?

2.5.1?

PIC24?

PSV?

PSV?

16?

2-2?

MPLABC30?

const?

C?

PSV?

PSV?

CORCON?

1?

PSV?

PIC24?

W?

0x8000?

RAM?

W?

0x8000?

W=1?

?

CORCON?

PSV?

CORCON?

1?

W?

0x8000,?

CORCON?

PSV?

CORCON?

0?

23?

PSV?

23?

CPU?

8?

W?

15?

PSV?

23?

EA?

EA=?

EA=W?

W?

15?

1?

23?

EA15?

8?

PSV?

PIC24?

byZeng2012-6-7?

RAM?

PSV?

W?

W?

0?

W?

W?

0?

1?

2-1?

C?

PSV?

C?

MALABIDE?

2-6?

MALABIDE?

13?

MALABIDE?

(MPLABSIM)?

cRomConst1?

0x002a0?

Flash?

main()?

CONCON=0x0004,?

PSV?

CORCON?

1?

PSV?

C30?

c0?

cRomConst1?

PSV?

0x82a0?

CONCON?

0x00?

PSV?

x1=cRomConst1;?

#includeconstintcRomConst1=0x1234;/?

PSV?

intx1;char*ptr_Byte,Byte1,Byte2;intmain()x1=cRomConst1;/?

cRomConst1?

x1ptr_Byte=&cRomConst1;/char?

ptr_Byte?

cRomConst1?

Byte1=*ptr_Byte;/cRomConst1?

Byte1ptr_Byte+;/?

ptr_Byte?

1?

cRomConst1?

Byte2=*ptr_Byte;/cRomConst1?

Byte2?

8?

16?

RAM?

16?

PSV?

PSVPAG=0x01PSVPAG=0x00?

PSVPAG=0x02PIC24?

byZeng2012-6-7?

:

MPLABSIM?

intmain()?

x1=cRomConst1;0280FA0000lnk#0x00282841500mov.w0x82a0,0x00000x82a0?

cRomConst1?

RAM?

0284884000mov.w0x0000,0x08000x0000?

W0?

0x800?

x1ptr_Byte=&cRomConst1;0286282A00mov.w#0x82a0,0x0000cRomConst1?

RAM?

0x82a0?

W00288884010mov.w0x0000,0x0802W0?

ptr_Byte?

ptr_Byte?

=0x82a0Byte1=*ptr_Byte;028A804010mov.w0x0802,0x0000ptr_Byte?

W0?

028C784010mov.b0x0000,0x0000PSV?

:

W0?

W0028EB7E804mov.b0x0000,0x0804W0?

8?

Byte1?

Byte1=0x34ptr_Byte+;0290804010mov.w0x0802,0x0000ptr_Byte?

W0?

W0=0x82a00292E80000inc.w0x0000,0x0000W0?

1?

W0=0x82a1?

cRomConst1?

0294884010mov.w0x0000,0x0802ptr_Byte=0x82a1Byte2=*ptr_Byte;0296804010mov.w0x0802,0x0000W0?

cRomConst1?

RAM?

0298784010mov.b0x0000,0x0000PSV?

:

W0?

W0029AB7E805mov.b0x0000,0x0805Byte2?

0x12while

(1);029C37FFFFbra0x00029c?

2-2?

C?

PSV?

Flash?

cString?

xChar?

_attribute_(space(psv)?

cString?

PSV?

C30?

PSV?

_builtin_psvpage?

C30?

PSV?

MPLABIDE?

(?

)PIC24?

byZeng2012-6-7?

PSVPAGE?

#include/?

1:

JTAG?

OFF,?

?

Flash,?

?

ClipON,ICD?

PGC1/PGD1,?

WDT,WDT?

32,WDT?

64_CONFIG1(JTAGEN_OFF&GCP_OFF&GWRP_OFF&BKBUG_ON&COE_OFF&ICS_PGx1&FWDTEN_OFF&FWPSA_PR32&WDTPS_PS64)_CONFIG2(IESO_OFF&FNOSC_PRIPLL&FCKSM_CSDCMD&OSCIOFNC_ON&POSCMOD_XT)/XT?

constchar_attribute_(space(psv)cString=HelloPSV;/?

space(psv)?

PSV?

intmain()charxCharsizeofcString,i;CORCONbits.PSV=1;/?

PSV?

PSVPAG=_builtin_psvpage(cString);/?

C30?

cString?

Flash?

for(i=0;isizeof(xChar);i+)xChari=cStringi;while

(1);2.5.2?

W?

16?

/?

Flash?

24?

EA?

2-7?

EATBLPAG230?

16?

Wn?

8?

TBLPAG24?

EA?

PIC24?

byZeng2012-6-7?

TBLRDL?

TBLRDH?

Flash?

Flash?

Flash?

Flash?

Flash?

Flash?

2-3?

Rom?

RAM?

RamX?

C30?

_builtin_tblpage?

Uint*ptr?

8?

_builtin_tbloffset(Uint*ptr)?

16?

RamX.k1=1000?

RamX.k2=2000?

RamX.k3=12.34?

typedefunsignedcharUchar;typedefunsignedintUint;externvoidReadRomData(UintUpAddr8,UintLowAddr16,Uint*RamPtr,UintWordLen);structvStructUintk1;/?

Uintk2;floatk3;conststructvStructRom=1000,2000,12.34;/Flash?

(?

)structvStructRamX;/?

(?

)intmain()UintUpAddr8,LowAddr,i;UpAddr8=_builtin_tblpage(&Rom.k1);/UpAddr8Rom.k1?

8?

C30?

TBLRDL.W(Wn=0)?

2-8?

Flash?

PC?

0x0001000x0001020x0001040x00106?

230?

24?

816TBLRDH.B(Wn=1)?

0TBLRDH.B(Wn=0)TBLRDL.B(Wn=0)TBLRDL.B(Wn=1)?

PIC24?

byZeng2012-6-7LowAddr=_builtin_tbloffset(&Rom.k1);/LowAddrRom.k1?

16?

i=sizeof(Rom)/2;/i=?

while

(1);?

2.5.3Flash?

PIC24?

Flash?

In-CircuitSerialProgramming?

ICSP?

Flash?

ICSP?

PCB?

Flash?

Run-TimeSelf-Programming?

RTSP?

RTSP?

UART?

RTSP?

PIC24?

Flash?

128?

PIC24?

PIC24?

byZeng2012-6-7?

Flash?

NVMCON?

NVMKEY?

NVMCON?

NVMCON?

R/SO-0R/W-0R/W-0U-0U-0U-0U-0U-0WRWRENWRERR?

U-0R/W-0U-0U-0U-0R/W-0R/W-0R/W-0?

ERASE?

NVMOP?

WR?

1=?

00=?

WREN?

1=?

0=?

WRERR?

1=?

WR?

1?

1?

0=?

ERASE?

/?

1=?

WR?

0=?

WR?

NVMOP?

NVMOP?

1111=?

ICSP?

(ERASE=1)0011=?

ERASE=0?

ERASE=1?

0010=?

ERASE=1?

ERASE=0?

0001=?

ERASE=0?

ERASE=1?

PIC24FJ128GA?

(8?

)?

NVMCON=0x4042?

NVMCON?

0x4001?

PIC24F?

NVMOP?

0b0011?

PIC24FJ256GA110?

PIC24FJ256GB110?

NVMKEY?

Flash?

0x55?

0xAA?

NVMKEY?

NOP?

2?

8?

NVMKEY?

PIC24?

byZeng2012-6-7?

NVMKEY?

U-0U-0U-0U-0U-0U-0U-0U-0?

W-0W-0W-0W-0W-0W-0W-0W-0NVMKEY?

0?

NVMKEY?

1?

TBLPAG?

W?

2?

0x4042?

NVMCON?

3?

4?

0x55h?

NVMKEY?

5?

0xAAh?

NVMKEY?

6?

WR?

(NVMCOM?

1?

CPU?

WR?

7?

NOP?

(1)?

PIC24FJ64GA006?

3.3V?

21ms?

CPU?

1?

8?

512?

RAM?

2?

RAM?

3?

4?

(TBLPAG?

W?

)?

5?

RAM?

64?

6?

0x4001?

NVMCON?

7?

8?

0x55h?

NVMKEY?

PIC24?

byZeng2012-6-7?

9?

0xAAh?

NVMKEY?

10?

WR?

(NVMCOM?

1?

CPU?

WR?

11?

NOP?

12?

5?

11?

8?

512?

(1)?

(2)?

(3)?

3ms(?

)?

PIC24FJ64GA006?

3.3V?

1.5ms?

CPU?

2-4?

Flash?

C?

cRom1?

k1?

k2?

k3?

cRom2?

cRom1?

k1?

k2?

k3?

1000?

2000?

12.34?

cRom1?

k1?

k2?

k3?

1250?

2150?

13.42?

_attribute_?

cRom1?

Flash?

0x01000?

cRom1?

1k?

PC?

0x10000x13fe?

Flash?

_attribute_?

cRom2?

#includetypedefunsignedcharUchar;typedefunsignedintUint;externvoidflashPageErase(UintUpAddr8,UintLowAddr16);externvoidflashPageWrite(UintUpAddr8,UintLowAddr16,Uint*RamPtr);/*?

1:

JTAG?

OFF,?

?

Flash,?

?

ClipON,ICD?

PGC1/PGD1,?

WDT,WDT?

32,?

64*/_CONFIG1(JTAGEN_OFF&GCP_OFF&GWRP_OFF&BKBUG_ON&COE_OFF&ICS_PGx1&FWDTEN_OFF&FWPSA_PR32&WDTPS_PS64)_CONFIG2(IESO_OFF&FNOSC_PRIPLL&FCKSM_CSDCMD&OSCIOFNC_ON&POSCMOD_XT)/XT?

structvStructUintk1;/?

2?

1?

Uintk2;floatk3;const_attribute_(address(0x1000),space(psv)structvStructcRom1=1000,2000,12.34;/cRom1?

(?

)?

0x1000conststructvStructcRom2=1250,2150,13.42;/cRom2?

(?

)?

C30?

cRom1?

structvStructRamX;/?

cRom1UintXX64;/?

PIC24?

byZeng2012-6-7intmain()UintUpAddr8,LowAddr,i,*ptr;ptr=(Uint*)&cRom1;for(i=0;i64;i+)XXi=*ptr+;/?

cRom1?

XX?

ptr=(Uint*)&cRom2;for(i=0;i4;i+)XXi=*ptr+;/?

XX?

cRom1?

cRom2?

UpAddr8=_builtin_tblpage(&cRom1);/UpAddr8cRom1?

8?

tblpage()?

C30?

LowAddr=_builtin_tbloffset(&cRom1);/LowAddrcRom1?

16?

flashPageErase(UpAddr8,LowAddr);/?

cRom1?

Flash?

0x10000x13fe?

flashPageWrite(UpAddr8,LowAddr,&XX0);/?

XX?

cRom1?

(?

1?

)RamX=cRom1;/?

cRom1?

RamXwhile

(1);/?

RamX?

1250,2150,13.42?

.equERASE_CODE,0x4042;?

.equPROG_CODE,0x4001;?

.equbitWR,15.text.global_flashPageErase.global_flashPageWrite;=?

Flash?

512?

=;C?

:

voidflashPageErase(uintUpAddr8,uintLowAddr16);?

UpAddr8:

Flash?

8?

LowAddr16:

?

16?

_flashPageErase:

pushTBLPAGmovw0,TBLPAGtblwtlw1,w1;?

(8?

)mov#ERASE_CODE,w0movw0,NVMCONdisi#5;?

5?

7?

mov#0x55,W0;?

movW0,NVMKEYmov#0xAA,W0movW0,NVMKEYbsetNVMCON,#bitWR;?

nop;?

2?

noppopTBLPAG;?

?

returnPIC24?

byZeng2012-6-7;=?

Flash?

1?

(1?

64?

)=;C?

voidflashPageWrite(UintUpAddr8,UintLowAddr16,Uint*RamPtr);?

:

UpAddr8:

Flash?

8?

LowAddr16:

?

16?

RamPtr:

?

RAM?

_flashPa

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2