国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

PIC單片機軟件編程技巧

發布時間:2010-8-6 15:50    發布者:lavida
關鍵詞: PIC , 編程技巧 , 單片機 , 軟件
筆者的項目是有關機器人控制的實現。控制部分采用PICl6F7X系列單片機,運用匯編語言編程,運行速度較快,能夠達到系統的要求。在這里使用的大多是數字信號的控制,電機的控制只有開和合兩種狀態。在動作的過程中需要兩只手臂、身體、頭部、腳部等的協調動作。整個控制系統比較復雜,因而在PIC程序編寫和空間分配方面需要注意一些問題。  

1、 動作標志位的使用  

在整個控制中,組合的動作很多,當所有動作定位都通過光電開關控制時,在程序編寫上就有一些問題。如要求左手上升到鼓掌位、右手上升到舉手位(手初始位置在最下的放下位),光電開關0有效(即為0時是擋住),到達正確位置。用簡單的理解可以寫成下面的程序:

list P=16c73
call lefthandup
call righthandup
LO call readinsignal
bdss csl_v,1efthandligbts
call lefthandstop
btfsc csl_v,righthandlight4
goto L0
call righthandstop
L1 call readinsignal
btfsc csl_v,lefthandlight3
goto L1
call lefthandstop


lefthandlight表示光電開關,由此判斷是否到相應的位置。1表示在手臂最下面的位置;2表示在手臂的握手位置;3表示在手臂的鼓掌位置;4表示在手臂的高舉手位置。上面程序描寫左手臂上升到舉手位置和右手臂上升到鼓掌位置并停止的過程。先判斷左手到達否,到達則左手停止,接著看右手是否到達舉手位,到達則停止,否則循環上述的檢測,直到左手到達鼓掌位,右手到達舉手位。

注意,這里的3,4表示的就是鼓掌位,舉手位。經過循環檢測可以讓手臂停在各位上,然而機械動作是有慣性的,機械停止位可能在該位的上一點或下一點,這就影響下面動作的進行,可能在若干動作后機械動作出現失常,也就是程序沒法正常的運行。在此情況下,需要修改程序的編寫方式,采用標志位來控制動作的進行。如果采用控制標志位,一定要在動作子函數中對標志位置零。程序如下:

list p=16c73

actlonstopflag equ Ox6e ;位定義
lefthandfla8 cqu 0x0 ;0表示停止左手動作
rightbandflag equ Oxl ;O表示停止右手動作

movlw Ox03
movWf actionstopflag
call lefthanduo
call righthandup
L2 call readinsignal
btfss csl_v,lefthandhght3
call lefthatldotop
btfss csl_v,righthandlight4
call righthandstop
movlw Ox00
subwf actionstopflag,w
btfss status,z
goto L2

繼續下面的程序  

actionstopflag 表示動作標志位參數,給動作標志位賦值,動作停止函數中將清零標志位的值。上述程序和前面所述程序的功能一樣,實現兩支手臂的動作。上面程序描寫左手是否到達鼓掌位,到達停止,右手是否到達舉手位,到達停止。看動作標志位是否為零,不是,不斷地循環檢測;是,執行下面的程序。  

2 、GOTO,CALL指令的不同使用  

在PIC的匯編程序中,CALL與GOT0指冷使用的場合不同。一般情況下,在于程序與主程序之間大多用CALL指令;而狀態轉換模塊之間大多用GOTO 指令,即由此狀態進入另一種狀態不需返回。由于PIC單片機的堆棧有限,在程序中,不能無止境地使用GOTO語句,這樣會使堆棧溢出,程序無法正常運行。各個小程序內部循環占用堆棧的級數不多,使用GOTO指令是可行的,但在大的程序中用GOTO則無法返回到調用前程序的下一條指令。CALL指令完成調用完子程序后返回到調用前的程序。程序如下:

list D=16c76
start:ca11 setcpu
call automatlsn、statel
L3 call readinsignal
btfsc cs2_v,ultrasonicdetectl
goto L3
goto autonatlsmstate2

automatlsmstate2:
return
auatomatismstatel、 automatismstate2表示兩種狀態,uhrasonicdetectl表示一個輸入超聲檢測信號。上面程序描寫調用 automatistmstate1狀態,執行完后進行下面的檢測ultrasonicdetect],沒有觸發就一直循環檢測,觸發就進入 autornatismstate2狀態,執行完也不再回到下面的程序。  

3 、狀態標志位Z、C的不同使用情況  

在進行判斷標志位時,Z(零標志)、C(借位標志)是不同的。Z為l時,表示上面的結果為0,Z為0時,則結果不為0。C為l時,借位,C為0時,沒有借位。在使用定時器的時候,一般使用C標志位,這是由于當完成某一動作去檢查定時器時,時間可能沒到,或是正好,或是已經超過時間,只要到了或超過時間,都要按照要求關閉定時器,如下面程序所述。如果用Z標志位,等于0時可能沒有檢測到,無法判斷停止的狀態,而用z可以很好地控制時間定時。進行一般的計算時大多用Z,如前面的動作標志位中就是如此使用的。

list D=16c76
call opentimerO
L4 movlw d’30’
subwf t0_v2,W
btfss status,c
goto L4
cau closetimer0  

程序檢測時間是否到達1.5s,沒有則循環等待,到了或檢測時間過了就關閉定時器,執行下面的程序。  

總之,在PIC單片機的編程中采用合適的方法,可以使整個程序運行穩定,而且程序空間的使用也將有所減小,避免了調試中的Bug。這是筆者在實際中的一點體會,還有許多不足或沒有考慮到的問題,希望在和大家的探討中不斷學習PIC單片機的精髓。
本文地址:http://www.qingdxww.cn/thread-19906-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 想要避免發生災難,就用MPLAB SiC電源仿真器!
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
  • 利用模擬開發工具生態系統進行安全電路設計
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 麻豆中国做受xxx实指 | 四虎亚洲国产成人久久精品 | 99在线在线视频免费视频观看 | 日一区二区三区 | 最近国产在线观看免费完整版 | 亚洲免费在线播放 | 亚洲欧美日韩一区二区在线观看 | 91精品综合久久久久久五月天 | 四虎影视永久免费观看地址 | 日本强不卡在线观看 | 91中文在线观看 | 日韩精品亚洲一级在线观看 | 精品视频一区二区三三区四区 | 888午夜不卡理论久久 | 免费看片污 | 国产精品久久久久毛片真精品 | www.日本在线观看 | 簧片免费网站 | 91精品在线国产 | 99久久国产免费福利 | 国产精品视频久久久 | 香蕉尹人 | 日韩欧美亚| 久久精品国产亚洲妲己影院 | 99久久九九| 香港黄页亚洲一级 | 午夜羞羞视频在线观看 | 国产亚洲综合成人91精品 | 国产美女视频免费看网站 | 韩国一级毛片 | 欧美成a人免费观看久久 | 欧美一区二区三区四区视频 | 国产一区二区三区在线免费观看 | av毛片在线看 | 夜夜摸天天操 | 黄网址在线永久免费观看 | 国产一区91 | 国产精品玖玖玖在线观看 | 4438激情网| 手机在线看黄色 | 亚洲免费大全 |