版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
pic單片機程序設計的基本方法解析pic單片機在學習和工作中均扮演著重要角色,在往期文章中,小編曾對pic單片機匯編指令加以介紹,以幫助大家更好掌握pic單片機。而在本文中,將介紹pic單片機程序設計內(nèi)容,以助大家寫出更為優(yōu)美的pic單片機程序,主要內(nèi)容如下。1、PIC單片機程序的基本格式先介紹二條偽指令:EQU——標號賦值偽指令ORG——地址定義偽指令PIC16C5X單片機在RESET后指令計算器PC被置為全“1”,所以PIC16C5X幾種型號芯片的復位地址為:PIC16C54/55:1FFHPIC16C56:3FFHPIC16C57/58:7FFH一般來說,PIC單片機的源程序并沒有要求統(tǒng)一的格式,大家可以根據(jù)自己的風格來編寫。但這里我們推薦一種清晰明了的格式供參考。TITLEThisis……;程序標題;--------------------------------------;名稱定義和變量定義;--------------------------------------F0EQU0RTCCEQU1PCEQU2STATUSEQU3FSREQU4RAEQU5RBEQU6RCEQU7┋PIC16C54EQU1FFH;芯片復位地址PIC16C56EQU3FFHPIC16C57EQU7FFH;-----------------------------------------ORGPIC16C54GOTOMAIN;在復位地址處轉(zhuǎn)入主程序ORG0;在0000H開始存放程序;-----------------------------------------;子程序區(qū);-----------------------------------------DELAYMOVLW255┋RETLW0;------------------------------------------;主程序區(qū);------------------------------------------MAINMOVLWB‘00000000’TRISRB;RB已由偽指令定義為6,即B口┋LOOPBSFRB,7CALLDELAYBCFRB,7CALLDELAY┋GOTOLOOP;-------------------------------------------END;程序結(jié)束注:MAIN標號一定要處在0頁面內(nèi)。2、PIC單片機程序設計基礎1)設置I/O口的輸入/輸出方向PIC16C5X單片機的I/O口皆為雙向可編程,即每一根I/O端線都可分別單獨地由程序設置為輸入或輸出。這個過程由寫I/O控制寄存器TRISf來實現(xiàn),寫入值為“1”,則為輸入;寫入值為“0”,則為輸出。MOVLW0FH;00001111(0FH)輸入輸出TRIS6;將W中的0FH寫入B口控制器,;B口高4位為輸出,低4位為輸入。MOVLW0C0H;11000000(0C0H)RB4,RB5輸出0RB6,RB7輸出12)檢查寄存器是否為零如果要判斷一個寄存器內(nèi)容是否為零,很簡單,現(xiàn)以寄存器F10為例:MOVF10,1;F10→F10,結(jié)果影響零標記狀態(tài)位ZBTFSSSTATUS,Z;F10為零則跳GOTONZ;Z=0即F10不為零轉(zhuǎn)入標號NZ處程序┋;Z=1即F10=0處理程序3)比較二個寄存器的大小要比較二個寄存器的大小,可以將它們做減法運算,然后根據(jù)狀態(tài)位C來判斷。注意,相減的結(jié)果放入W,則不會影響二寄存器原有的值。例如F8和F9二個寄存器要比較大?。篗OVF8,0;F8→WSUBWF9,0;F9—W(F8)→WBTFSCSTATUS,Z;判斷F8=F9否GOTOF8=F9BTFSCSTATUS,C;C=0則跳GOTOF9>F8;C=1相減結(jié)果為正,F(xiàn)9>F8GOTOF9<F9;C=0相減結(jié)果為負,F(xiàn)9┋PIC單片機的查表程序可以利用子程序帶值返回的特點來實現(xiàn)。具體是在主程序中先取表數(shù)據(jù)地址放入W,接著調(diào)用子程序,子程序的第一條指令將W置入PC,則程序跳到數(shù)據(jù)地址的地方,再由“RETLW”指令將數(shù)據(jù)放入W返回到主程序。下面程序以F10放表頭地址。MOVLWTABLE;表頭地址→F10MOVWF10┋MOVLW1;1→W,準備取“1”的線段值ADDWF10,1;F10+W=“1”的數(shù)據(jù)地址CALLCONVERTMOVWF6;線段值置到B口,點亮LED┋CONVERTMOVWF2;W→PCTABLERETLW0C0H;“0”線段值RETLW0F9H;“1”線段值┋RETLW90H;“9”線段值9)“READ……DATA,RESTORE”格式程序“READ……DATA”程序是每次讀取數(shù)據(jù)表的一個數(shù)據(jù),然后將數(shù)據(jù)指針加1,準備取下一個數(shù)據(jù)。下例程序中以F10為數(shù)據(jù)表起始地址,F(xiàn)11做數(shù)據(jù)指針。POINTEREQU11;定義F11名稱為POINTER┋MOVLWDATAMOVWF10;數(shù)據(jù)表頭地址→F10CLRFPOINTER;數(shù)據(jù)指針清零┋MOVFPOINTER,0ADDWF10,0;W=F10+POINTER┋INCFPOINTER,1;指針加1CALLCONVERT;調(diào)子程序,取表格數(shù)據(jù)┋CONVERTMOVWF2;數(shù)據(jù)地址→PCDATARETLW20H;數(shù)據(jù)┋RETLW15H;數(shù)據(jù)如果要執(zhí)行“RESTORE”,只要執(zhí)行一條“CLRFPOINTER”即可。10)PIC單片機延時程序如果延時時間較短,可以讓程序簡單地連續(xù)執(zhí)行幾條空操作指令“NOP”。如果延時時間長,可以用循環(huán)來實現(xiàn)。下例以F10計算,使循環(huán)重復執(zhí)行100次。MOVLWD‘100’MOVWF10LOOPDECFSZ10,1;F10—1→F10,結(jié)果為零則跳GOTOLOOP┋延時程序中計算指令執(zhí)行的時間和即為延時時間。如果使用4MHz振蕩,則每個指令周期為1μS。所以單周期指令時間為1μS,雙周期指令時間為2μS。在上例的LOOP循環(huán)延時時間即為:(1+2)*100+2=302(μS)。在循環(huán)中插入空操作指令即可延長延時時間:MOVLWD‘100’MOVWF10LOOPNOPNOPNOPDECFSZ10,1GOTOLOOP┋延時時間=(1+1+1+1+2)*100+2=602(μS)。用幾個循環(huán)嵌套的方式可以大大延長延時時間。下例用2個循環(huán)來做延時:MOVLWD‘100’MO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采茶工安全協(xié)議書范本
- 補貼金分配協(xié)議書
- 本合同采用計稅方法
- 保險行業(yè)協(xié)會 比例合同范本
- 骨折的應急預案
- 山西省2024八年級物理上冊第六章質(zhì)量與密度第2節(jié)密度課件新版新人教版
- 新生兒窒息亞低溫治療
- 《船用眼環(huán)》規(guī)范
- 貴州省貴陽市觀山湖區(qū)美的中學2024-2025學年度七年級上學期期中質(zhì)量監(jiān)測生物學試卷
- 上門美甲相關行業(yè)投資方案
- 河南省內(nèi)鄉(xiāng)縣面向社會公開招考25名看護隊員【共500題含答案解析】模擬檢測試卷
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- GB/T 3362-2005碳纖維復絲拉伸性能試驗方法
- GB/T 18029.8-2008輪椅車第8部分:靜態(tài)強度、沖擊強度及疲勞強度的要求和測試方法
- 面試評估表(技術(shù)研發(fā)類)
- 《圓的周長和數(shù)學閱讀》設計
- 建筑CAD-信息化教學大賽
- 文書檔案管理培訓課件
- 英語輔優(yōu)補差工作記錄表
- Camtasia-Studio使用教程課件
- 消防控制室記錄六本記錄(標準文本)
評論
0/150
提交評論