PIC16F1938單片機(jī)編程樣例_第1頁(yè)
PIC16F1938單片機(jī)編程樣例_第2頁(yè)
PIC16F1938單片機(jī)編程樣例_第3頁(yè)
PIC16F1938單片機(jī)編程樣例_第4頁(yè)
PIC16F1938單片機(jī)編程樣例_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PIC單片機(jī)編程樣例HCU:PIC16F1938;開(kāi)發(fā)語(yǔ)言:C語(yǔ)言開(kāi)發(fā)工具:編譯環(huán)境:MPLAB IEDC 編譯器:HI-TECH PICC C compiler 編輯軟件: source in sight 燒錄一具:MPLABICD2仿真軟件:Protues說(shuō)明:程序已經(jīng)通過(guò)編譯并在仿真軟件和硬件平臺(tái)上成功跑起來(lái);目的:對(duì)用到PIC16F系列單片機(jī)開(kāi)發(fā)軟件的群眾提供樣例支持,希望有幫助。Protues仿真圖:D1JCCi PIM TBm&tT卜itH4I C2 i UP:-丄USUI 1 丄 CKI 2 臨rrrckiKi ADZ 湖 FC: |兀訊IBF UM OTTg 銬 3 i. I

2、21 bF 昶 BA ;兇“ H I I 05/CP atoUi 一T LG 匕 llll ICV.EM ve ;. 2 uu r/vi 1 Ahi. 1H 仝心 Ljll =wn3sari: LKOL TIVUFO: IIYUIT HJ T TCP 丈 L DLK bl4IT4rinjKI FJBI*! ill I 1 1 StRIPSiJP liiULLWRBrflTlilN2 XF iKLPaTOUCCB=:B*1/UF KiF 1 DJCXCC IFDHiN E IDfllKH*!NfHSliltfliFSICXO. I -asicMCLtncrcij-jGa-4 |RIT1F rmr

3、 SCK匚 Vii inc1、一些定義typedef voidtypedef bitVOID;BIT;typedef un sig ned char UINT8; typedef int INT16;typedef un sig ned int UINT16; typedef long INT32:typedef un sig ned long UINT32;VOID delay( VOID )int i = 100;while ( i);2、EEPRO 讀寫(xiě)/* 功能:從EEPRO中讀取一個(gè)字節(jié)的數(shù)據(jù)原 型:UINT8 EEPROM_read( UINT8 addr )參數(shù)說(shuō)明:輸入?yún)?shù):a

4、ddr輸入地址輸出參數(shù):無(wú)返回:讀取的字節(jié)注意:*/UINT8 EEPROM.read( UINT8 addr )UINT8 EE.data;EEADRL 二 addr;EEPGD 二 0;CFGS = 0;GIE = 0; /禁止所有中斷RD = 1;asm( n op);EE.data = EEDATL;RD = 0;GIE = 1; /恢復(fù)所有中斷向EEPRO屮寫(xiě)入一個(gè)字節(jié)的數(shù)據(jù)return EE_data;,* * * * * * * * * * * * * * Jyfj :原 型:VOID EEPR0M_write( UINT8 addr, UINT8 ee.data ) 參數(shù)說(shuō)明:

5、輸入?yún)?shù):addr輸入地址,ee_data需要寫(xiě)入的數(shù)據(jù) 輸出參數(shù):無(wú) 返回:無(wú)注意:*VOID EEPRONLwrite( UINT8 addr, UINT8 ee;_data )tEEADRL =addr;EEDATL =ee_data;EEPGD 二0;CFGS = 0JGIE = 0;/禁止所有屮斷WREN = 1;/運(yùn)行執(zhí)行編程/擦除操作EEC0N2:=0x55; /必須按這樣的時(shí)序EEC0N2:二OxAA;WR = 1;while( WR=1 ); /等待寫(xiě)操作完成GIE = 1;WREN = C);/禁止執(zhí)行編程/擦除操作3、ADC模塊/* ADC模塊的初始化*/選擇AN12通道

6、、ADC使能位static VOID ADC_init( VOID )ADC0N1 = Obi1100000; /AD轉(zhuǎn)換結(jié)果右對(duì)齊,64分頻作為轉(zhuǎn)換時(shí)鐘,選擇VSSADCONO = ObOOllOOOl;VDD乍為參考電壓ADIF = 0; /清楚AD轉(zhuǎn)換標(biāo)志 static UINT16 throttle = 0;static VOID AD_Fu nctio n( VOID )UINT8 i;UINT16 AD.result;UINT16 AD.max 二 0;UINT16 AD.min 二 2000;throttle = 0;for( i=0; i ADresult ? AD_maxAD

7、.result;AD_min = AD_min = 10 )timeco unt = 0; timelOmsflg = 1; timelmsflg = 1;根據(jù)實(shí)際情況添加自己的代碼5、10初始化/* 10初始化*/static VOID I0_i nit(VOID) 所有10為數(shù)字10所有10為 output初始化所有10輸出電平為低電平/* PORT A */ANSELA = 0x00;/TRISA = 0x00;/PORTA = 0x00;/* PORT B */ANSELB 二 0x03; RBO和RB1都綁定為同一模擬AD輸入TRISB 二 0X03; RBO和RBI為輸入,其他端口

8、為輸出PORTB 二 0x00;/* POTR C */PORTC 二Oxff;/TX和RX引腳都要設(shè)置為1,禁止CCP1引腳輸出驅(qū)動(dòng)器LATC = Oxff;TRISC 二0xC4;6、PWM模塊/* PWM模塊的初始化*/static VOID PWMCCPnit(VOID)CCP1C0N = ObOOOOllOO; / 單輸出,PWM 模式廣廣TVTMDGC O m. 111111 AA .c /仁End與PR2 = 249;/PWM周期計(jì)算:(PR2 + 1)*0. 0625*4(16Mhz晶振四分即指令周期廣預(yù)分頻值,當(dāng)PR2為249時(shí),PWM頻率為16KT2C0N 二 0x00;/

9、預(yù)分頻為1:1 ;TMR20N 二 1;/使能定時(shí)器Timer2TRISC2 二 0;/打開(kāi)CCP1引腳輸出驅(qū)動(dòng)器CCPR1L 二 0x00; /PWM占空比為0CCP1C0N &二 ObllOOllll; /*功能:PWM占空比設(shè)置原型:VOID PW_WidthSet ( UINT8 width )參數(shù)說(shuō)明:輸入?yún)?shù):width占空比的百分比分子,設(shè)置值從0至100,例如width = 50時(shí),設(shè)置的占空比為50%輸出參數(shù):無(wú)返回:無(wú)注意:*/static VOID PWMJVidthSet( UINT8 width )UINT16 PBLwidth;UINT16 tmp;PWM_widt

10、h = width * 10;if ( 100 = width )經(jīng)過(guò)Protues仿真,100時(shí)至少比1000大于4才可以達(dá)到完全的PWM_width +二 4;/*高八位賦值*/CCPR1L = PW_width 2 ;/*低兩位賦值*/tmp = PWM_width & 0x0003;tmp = tmp 4;CCP1C0N &二 ObllOOllll;CCP1C0N = tmp;7、串口通訊模塊void uart_ in it (void)UINT8 ii;for (i i二0;i i _SUB_NUM_;i i+)get_uart_subi i二Oxff;RCSTA = OxbO;TX

11、STA = 0x20;/add by lihf for test/TXSTA = 0x20;BAUDC0Nbits.BRG16=0;SPBRGH = 0;/8SPBRG 二 _F0SC_/64/_BAUD_T;位疋時(shí)器 Baud Rate Generator /23;TXIE = 0; /發(fā)送不需要屮斷處理RCIE 二 1;PEIE = 1;/沒(méi)有開(kāi)全局中斷/發(fā)送數(shù)據(jù)static VOID UART.se nt( UINT8 byte ) while( 0 = TXIF )/con ti nue;TXREG = byte;while ( 0 = TRMT )asm( n op);/接收在屮斷里面調(diào)用uart_handler 0函數(shù)#defi ne _SUB_NUM_ 50UINT8 get_uart_subLSUB_NUMj ;void uart_ha ndler(void)UINT8 i;if( 1 = RCIF )RCIF = 0;for(i=0;i+)get_uart_sub Li=get_uart_sub L i+1;get_uart_sub_SUB_NUM_-1 = RCREG;Protues中如何仿真串口通訊

溫馨提示

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

評(píng)論

0/150

提交評(píng)論