亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談PIC單片機(jī)程序設(shè)計(jì)

        2009-06-17 06:48:16梁凱淋
        中國高新技術(shù)企業(yè) 2009年7期
        關(guān)鍵詞:電氣控制程序設(shè)計(jì)

        梁凱淋

        摘要:PIC系列單片機(jī)具有指令集簡潔、速度高、功能強(qiáng)、功耗低、價(jià)格低廉、體積小巧、適用性好及抗干擾能力強(qiáng)等特點(diǎn),大量應(yīng)用于各種電氣控制、電機(jī)控制、工業(yè)控制儀表和儀表、通信、家電、玩具、低功耗的測控應(yīng)用等領(lǐng)域;在采用PIC單片機(jī)進(jìn)行設(shè)計(jì)過程中,應(yīng)注意到PIC單片機(jī)自身的特點(diǎn),可少走彎路,從而縮短開發(fā)周期。

        關(guān)鍵詞:PIC單片機(jī);程序設(shè)計(jì); CM0S工藝;電氣控制

        中圖分類號(hào):TP368文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-2374(2009)07-0018-02

        美國微芯公司開發(fā)的CM0S工藝PIC系列單片機(jī),特別是采用內(nèi)置第二代Flash存儲(chǔ)器的微控制器在快速應(yīng)用方面具有獨(dú)到之處。PIC單片機(jī)系列內(nèi)大都包含運(yùn)算器、存儲(chǔ)器、A/D、PWM、輸入和輸出I/O、通信等常用接口。自由靈活的定義功能可以適應(yīng)不同的控制要求。

        PIC單片機(jī)采用精簡指令集,例如對(duì)于PICl6F716單片機(jī),只有35條單字節(jié)指令。要用這么少的指令實(shí)現(xiàn)復(fù)雜

        的控制或計(jì)算,顯然要在程序設(shè)計(jì)上多做文章,以下就程序設(shè)計(jì)需要注意的問題談一些看法。

        一、區(qū)分指令的大小寫

        編寫PIC單片機(jī)的源程序,除了源程序的開始處需要嚴(yán)格的列表指令外,還須注意源程序中字母符號(hào)的大小寫規(guī)則,否則在PC機(jī)上匯編程序時(shí)不會(huì)成功。在源程序中都會(huì)使用偽指令I(lǐng)NCLUDE。這條指令將列表中指定的單片機(jī)文件(在MPLAB中)讀入源程序作為源程序的一部分,所以凡是MPLAB中有關(guān)該單片機(jī)已有的寄存器在源程序中無須再用賦值指令(EQU)賦值,這就使所建立的源程序大為簡化。

        此外,由于有了偽指令I(lǐng)NCLUDE,所以根據(jù)MPLAB軟件中的格式,在源程序中的操作數(shù)凡是涉及MPLAB已規(guī)定的寄存器名稱的,其字母一律只能大寫,不能小寫。其余操作碼、符號(hào)字母可任意大小寫,但0x中的x應(yīng)小寫。否則匯編不會(huì)成功。鑒于上述原因,為了書寫方便,在使用MPLAB軟件時(shí),PIC單片機(jī)的源程序均用大寫字母為宜(0x例外)。

        以下舉例有關(guān)機(jī)器人控制的實(shí)現(xiàn)??刂撇糠植捎肞ICl6F7X系列單片機(jī),運(yùn)用匯編語言編程,運(yùn)行速度較快,

        能夠達(dá)到系統(tǒng)的要求。

        二、動(dòng)作標(biāo)志位的使用

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

        list P=16c73

        call lefthandup

        call righthandup

        L0call readinsignal

        bdss csl_v,lefthandligbts

        call lefthandstop

        btfsc csl_v,righthandlight4

        goto L0

        call righthandstop

        L1 call readinsignal

        btfsc csl_v,lefthandlight3

        goto L1

        call lefthandstop

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

        注意,這里的3,4表示的就是鼓掌位、舉手位。經(jīng)過循環(huán)檢測可以讓手臂停在各位上,然而機(jī)械動(dòng)作是有慣性的,機(jī)械停止位可能在該位的上一點(diǎn)或下一點(diǎn),這就影響下面動(dòng)作的進(jìn)行,可能在若干動(dòng)作后機(jī)械動(dòng)作出現(xiàn)失常,也就是程序沒法正常地運(yùn)行。在此情況下,需要修改程序的編寫方式,采用標(biāo)志位來控制動(dòng)作的進(jìn)行。如果采用控制標(biāo)志位,一定要在動(dòng)作子函數(shù)中對(duì)標(biāo)志位置零。

        三、區(qū)分GOTO和CALL指令的使用場合

        在PIC的匯編程序中,CALL與GOT0指令的使用比較多、且容易混淆,一般情況下,在于程序與主程序之間大多用CALL指令;而狀態(tài)轉(zhuǎn)換模塊之間大多用GOTO指令,即由此狀態(tài)進(jìn)入另一種狀態(tài)不需返回。由于PIC單片機(jī)的堆棧有限,在程序中,不能無止境地使用GOTO語句,否則會(huì)使堆棧溢出,程序無法正常運(yùn)行。各個(gè)小程序內(nèi)部循環(huán)占用堆棧的級(jí)數(shù)不多,使用GOTO指令是可行的,但在大的程序中用GOTO則無法返回到調(diào)用前程序的下一條指令。CALL指令完成調(diào)用完子程序后返回到調(diào)用前的程序。如在超聲檢測中程序如下:

        list D=16c76

        start:call setcpu

        call automatlsmstate1

        L3 call readinsignal

        btfsc cs2_v,ultrasonicdetect1

        goto L3

        goto automatlsmstate2 :

        automatlsmstate2:

        return

        automatismstatel

        automatlsmstate2表示兩種狀態(tài),ultrasonicdetect1表示一個(gè)輸入超聲檢測信號(hào)。上面程序描寫調(diào)用automatlstmstate1狀態(tài),執(zhí)行完后進(jìn)行下面的檢測ultrasonicdetect1,沒有觸發(fā)就一直循環(huán)檢測,觸發(fā)就進(jìn)入automatlsmstate2狀態(tài),執(zhí)行完也不再回到下面的程序。

        由于PIC單片機(jī)的堆棧有限,在程序中不能無止境地使用GOTO指令,否則會(huì)使堆棧溢出,程序無法正常運(yùn)行。但是在有些時(shí)候,例如當(dāng)程序出現(xiàn)分支時(shí),則不得不使用GOTO指令。對(duì)于PICl6F7X系列單片機(jī),程序出現(xiàn)分支時(shí)只能通過STATUS寄存器的Z位或C位進(jìn)行判斷。這時(shí)在兩種情況的前一種情況下,必須使用GOTO指令進(jìn)行轉(zhuǎn)移;否則在執(zhí)行完第一種情況后,緊接著又執(zhí)行第二種情況。因此,在使用匯編語言進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)該將程序分解成一級(jí)級(jí)的子程序;然后在程序之間進(jìn)行調(diào)用,盡量將GOTO指令跳轉(zhuǎn)的范圍縮小。

        四、注意狀態(tài)標(biāo)志位Z、C的不同使用情況

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

        list D=16c76

        call opentimer0

        L4movlw d'30'

        subwf t0_v2,W

        btfsc status,c

        goto L4

        call closetimer0

        程序檢測時(shí)間是否到達(dá)1.5s,沒有則循環(huán)等待,到了或檢測時(shí)間過了就關(guān)閉定時(shí)器,執(zhí)行下面的程序。

        總之,在PIC單片機(jī)的編程中采用合適的方法,可以使整個(gè)程序運(yùn)行穩(wěn)定,而且程序空間的使用也將有所減小,避免了調(diào)試中的Bug。

        猜你喜歡
        電氣控制程序設(shè)計(jì)
        基于Visual Studio Code的C語言程序設(shè)計(jì)實(shí)踐教學(xué)探索
        從細(xì)節(jié)入手,談PLC程序設(shè)計(jì)技巧
        電子制作(2019年9期)2019-05-30 09:42:04
        PLC控制變頻調(diào)速電梯電氣控制系統(tǒng)分析
        對(duì)基于PLC技術(shù)的電氣控制技術(shù)的幾點(diǎn)探討
        電子制作(2018年2期)2018-04-18 07:13:37
        對(duì)基于PLC的電氣控制技術(shù)應(yīng)用的幾點(diǎn)探討
        電子制作(2017年19期)2017-02-02 07:08:54
        基于PLC技術(shù)的電氣控制應(yīng)用分析
        高職高專院校C語言程序設(shè)計(jì)教學(xué)改革探索
        OBE理念下基于Greenfoot的Java程序設(shè)計(jì)課程教學(xué)改革
        PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
        三級(jí)甲等公立醫(yī)院績效考核程序設(shè)計(jì)
        在线欧美精品二区三区| 国产农村妇女精品一区| 人妻精品久久久久中文字幕69| 水蜜桃男女视频在线观看网站| 国产办公室秘书无码精品99| 日本高清色倩视频在线观看| 美女胸又www又黄的网站| 精品人妻VA出轨中文字幕| 91久久综合精品国产丝袜长腿| 亚洲免费一区二区av| 国产精品婷婷久久爽一下| 国模吧无码一区二区三区| 97久久精品亚洲中文字幕无码 | 极品粉嫩小仙女高潮喷水视频 | 亚洲乱码一区二区av高潮偷拍的| 国产日韩精品欧美一区喷水| vr成人片在线播放网站| 美女裸体无遮挡免费视频的网站| av资源在线播放网站| 最新中文字幕一区二区| 一区二区三区在线 | 欧| 亚州精品无码人妻久久| 一本久道在线视频播放| 国产一区二区三区视频在线观看| 精品视频无码一区二区三区| 久久精品99久久香蕉国产色戒| 国内成人精品亚洲日本语音| 日本女同伦理片在线观看| 男生自撸视频在线观看| 亚洲色大成网站www永久| aaaaaa级特色特黄的毛片 | 黄色大片国产精品久久| 国产一区二区长腿丝袜高跟鞋| 国色天香社区视频在线| 午夜不卡久久精品无码免费| 亚洲一级无码片一区二区三区| 91国产视频自拍在线观看| 日本污ww视频网站| 免费国精产品自偷自偷免费看| 亚洲日韩中文字幕在线播放| 清纯唯美亚洲经典中文字幕|