![PIC16F1938單片機(jī)編程樣例_第1頁(yè)](http://file4.renrendoc.com/view/e12eef61a7c2b6f7bd29e307139f47c7/e12eef61a7c2b6f7bd29e307139f47c71.gif)
![PIC16F1938單片機(jī)編程樣例_第2頁(yè)](http://file4.renrendoc.com/view/e12eef61a7c2b6f7bd29e307139f47c7/e12eef61a7c2b6f7bd29e307139f47c72.gif)
![PIC16F1938單片機(jī)編程樣例_第3頁(yè)](http://file4.renrendoc.com/view/e12eef61a7c2b6f7bd29e307139f47c7/e12eef61a7c2b6f7bd29e307139f47c73.gif)
![PIC16F1938單片機(jī)編程樣例_第4頁(yè)](http://file4.renrendoc.com/view/e12eef61a7c2b6f7bd29e307139f47c7/e12eef61a7c2b6f7bd29e307139f47c74.gif)
![PIC16F1938單片機(jī)編程樣例_第5頁(yè)](http://file4.renrendoc.com/view/e12eef61a7c2b6f7bd29e307139f47c7/e12eef61a7c2b6f7bd29e307139f47c75.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.7/7PIC單片機(jī)編程樣例MCU:PIC16F1938;開發(fā)語(yǔ)言:C語(yǔ)言 開發(fā)工具: 編譯環(huán)境:MPLABIED; C編譯器:HI-TECHPICCCcompiler 編輯軟件:sourceinsight 燒錄工具:MPLABICD2 仿真軟件:Protues 說(shuō)明:程序已經(jīng)通過(guò)編譯并在仿真軟件和硬件平臺(tái)上成功跑起來(lái); 目的:對(duì)用到PIC16F系列單片機(jī)開發(fā)軟件的群眾提供樣例支持,希望有幫助。Protues仿真圖:1、一些定義typedefvoidVOID;typedefbitBIT;typedefunsignedcharUINT8;typedefintINT16;typedefunsignedintUINT16;typedeflongINT32;typedefunsignedlongUINT32;VOIDdelay<VOID>{ inti=100; while<i-->;}2、EEPROM讀寫/******************************************************************************功 能:從EEPROM中讀取一個(gè)字節(jié)的數(shù)據(jù)原 型:UINT8EEPROM_read<UINT8addr>參數(shù)說(shuō)明: 輸入?yún)?shù):addr輸入地址 輸出參數(shù):無(wú)返 回:讀取的字節(jié)注 意:******************************************************************************/UINT8EEPROM_read<UINT8addr>{ UINT8EE_data; EEADRL=addr; EEPGD=0; CFGS=0; GIE=0;//禁止所有中斷 RD=1; asm<"nop">; EE_data=EEDATL; RD=0; GIE=1;//恢復(fù)所有中斷 returnEE_data;}/******************************************************************************功 能:向EEPROM中寫入一個(gè)字節(jié)的數(shù)據(jù)原 型:VOIDEEPROM_write<UINT8addr,UINT8ee_data>參數(shù)說(shuō)明: 輸入?yún)?shù):addr輸入地址,ee_data需要寫入的數(shù)據(jù) 輸出參數(shù):無(wú)返 回:無(wú)注 意:******************************************************************************/VOIDEEPROM_write<UINT8addr,UINT8ee_data>{ EEADRL=addr; EEDATL=ee_data; EEPGD=0; CFGS=0; GIE=0;//禁止所有中斷 WREN=1;//運(yùn)行執(zhí)行編程/擦除操作 EECON2=0x55;//必須按這樣的時(shí)序 EECON2=0xAA; WR=1; while<WR==1>;//等待寫操作完成 GIE=1; WREN=0;//禁止執(zhí)行編程/擦除操作}3、ADC模塊/**ADC模塊的初始化*/staticVOIDADC_init<VOID>{ ADCON0=0b00110001;//選擇AN12通道、ADC使能位 ADCON1=0b11100000;//AD轉(zhuǎn)換結(jié)果右對(duì)齊,64分頻作為轉(zhuǎn)換時(shí)鐘,選擇VSS,VDD作為參考電壓 ADIF=0;//清楚AD轉(zhuǎn)換標(biāo)志}staticUINT16throttle=0;staticVOIDAD_Function<VOID>{ UINT8i; UINT16AD_result; UINT16AD_max=0; UINT16AD_min=2000; throttle=0; for<i=0;i<AD_NUM;i++> { ADIF=0; ADRESH=0; ADRESL=0; delay<>; ADCON0|=0x02; while<0==ADIF>;//等待轉(zhuǎn)換完成 ADIF=0; AD_result=ADRESH; AD_result=AD_result<<8; AD_result=AD_result|ADRESL; throttle+=AD_result; AD_max=AD_max>AD_result?AD_max:AD_result; AD_min=AD_min<AD_result?AD_min:AD_result; } throttle=<throttle-AD_max-AD_min>/<AD_NUM-2>;//去掉最大值和最小值,均值濾波}4、定時(shí)器0/**定時(shí)器0初始化*/staticVOIDTimer0_init<VOID>{ OPTION_REG=0b10000100;//禁止所有弱上拉、內(nèi)部指令周期時(shí)鐘32分頻 TMR0=TIMER0_1MS;//定時(shí)器0的中斷間隔為1ms TMR0IE=1;//定時(shí)器0開中斷//總的中斷開關(guān)記得在所有模塊初始化完成后打開}staticUINT8timecount=0;staticBITtime10msflg;staticBITtime1msflg;VOIDinterruptISR<VOID>{ uart_handler<>;//串口通訊接收 /**定時(shí)器0的處理*/ if<1==TMR0IF> { TMR0IF=0;//清零標(biāo)志位 TMR0=TIMER0_1MS;//重新賦值 timecount++; if<timecount>=10> { timecount=0; time10msflg=1; } time1msflg=1; //根據(jù)實(shí)際情況添加自己的代碼 }}5、IO初始化/**IO初始化*/staticVOIDIO_init<VOID>{ /**PORTA*/ ANSELA=0x00;//所有IO為數(shù)字IO TRISA=0x00;//所有IO為output PORTA=0x00;//初始化所有IO輸出電平為低電平 /**PORTB*/ ANSELB=0x03;//RB0和RB1都綁定為同一模擬AD輸入 TRISB=0X03;//RB0和RB1為輸入,其他端口為輸出 PORTB=0x00; /**POTRC*/ PORTC=0xff; LATC=0xff; TRISC=0xC4;//TX和RX引腳都要設(shè)置為1,禁止CCP1引腳輸出驅(qū)動(dòng)器}6、PWM模塊/**PWM模塊的初始化*/staticVOIDPWMCCP_init<VOID>{ CCP1CON=0b00001100;//單輸出,PWM模式 CCPTMRS0&=0b11111100;//CCP1選擇Timer2作為定時(shí)器 PR2=249;//PWM周期計(jì)算:<PR2+1>*0.0625*4<16Mhz晶振四分頻,即指令周期>*預(yù)分頻值,當(dāng)PR2為249時(shí),PWM頻率為16K T2CON=0x00;//預(yù)分頻為1:1; TMR2ON=1;//使能定時(shí)器Timer2 TRISC2=0;//打開CCP1引腳輸出驅(qū)動(dòng)器 CCPR1L=0x00;//PWM占空比為0 CCP1CON&=0b11001111;}/******************************************************************************功 能:PWM占空比設(shè)置原 型:VOIDPWM_WidthSet<UINT8width>參數(shù)說(shuō)明: 輸入?yún)?shù):width占空比的百分比分子,設(shè)置值從0至100,例如width=50時(shí),設(shè)置的占空比為50% 輸出參數(shù):無(wú)返 回:無(wú)注 意:******************************************************************************/staticVOIDPWM_WidthSet<UINT8width>{ UINT16PWM_width; UINT16tmp; PWM_width=width*10; if<100==width> { //經(jīng)過(guò)Protues仿真,100時(shí)至少比1000大于4才可以達(dá)到完全的100 PWM_width+=4; } /**高八位賦值*/ CCPR1L=PWM_width>>2; /**低兩位賦值*/ tmp=PWM_width&0x0003; tmp=tmp<<4; CCP1CON&=0b11001111; CCP1CON|=tmp;}7、串口通訊模塊voiduart_init<void>{ UINT8ii; for<ii=0;ii<_SUB_NUM_;ii++> get_uart_sub[ii]=0xff;RCSTA=0xb0; TXSTA=0x20;//addbylihffortest //TXSTA=0x20; BAUDCONbits.BRG16=0; SPBRGH=0;//8位定時(shí)器BaudRateGenerator SPBRG=_FOSC_/64/_BAUD_-1;//23; TXIE=0;//發(fā)送不需要中斷處理 RCIE=1; PEIE=1;//沒(méi)有開全局中斷 }//發(fā)送數(shù)據(jù)staticVOIDUART_sent<UINT8byte>{ //while<0==TXIF> //continue; TXREG=byte; while<0==TRMT> { asm<"nop">; }}//接收在中斷里面調(diào)用uart_handler<>函數(shù)#define_SUB_NUM_50UINT8get_uart_sub[_SUB_NUM_];voiduart_handler<void>{ UINT8i; if<1==RCIF> { RCIF=0; for<i=0;i<_SUB_NUM_-1;i++> get_uart_sub[i]=get_uart_sub[i+1]; get_ua
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年第12課從明朝建立到清軍人關(guān)-勤徑學(xué)升高中歷史必修上同步練測(cè)(統(tǒng)編版2019)
- 園林養(yǎng)護(hù)人員雇傭合同范文2025年
- 2025年伙伴合同終止協(xié)議
- 2025年企業(yè)辦公用品綜合供需合同
- 2025年官方物流配送協(xié)議書高清
- 2025年企業(yè)設(shè)備抵押擔(dān)保貸款合同
- 2025年動(dòng)物收養(yǎng)協(xié)議版式
- 2025年糧食供需雙方合同策劃大綱
- 2025年智能交通項(xiàng)目提案報(bào)告模式
- 2025年企業(yè)維修保養(yǎng)年合作協(xié)議
- 2025年南京信息職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點(diǎn)試題含答案解析
- 二零二五年度海外市場(chǎng)拓展合作協(xié)議4篇
- 北京市朝陽(yáng)區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2025年春新外研版(三起)英語(yǔ)三年級(jí)下冊(cè)課件 Unit4第2課時(shí)Speedup
- 2024年湖南汽車工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 2025中國(guó)鐵塔集團(tuán)安徽分公司招聘29人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年河北省農(nóng)村信用社招聘歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版五年級(jí)下冊(cè)信息技術(shù)全冊(cè)教案
- 手術(shù)室植入物的管理
- 電力供電系統(tǒng)試驗(yàn)調(diào)試和聯(lián)調(diào)方法
- 天津市紅橋區(qū)2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題(含答案)
評(píng)論
0/150
提交評(píng)論