在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 16F876控制的電動自行車驅(qū)動系統(tǒng)源程序(2)

            16F876控制的電動自行車驅(qū)動系統(tǒng)源程序(2)

            作者: 時(shí)間:2012-09-11 來源:網(wǎng)絡(luò) 收藏

            ;****************剎車中斷服務(wù)程序***************

            本文引用地址:http://www.biyoush.com/article/148412.htm

            BRAKE

            CALL PUSH ;保存現(xiàn)場

            BCF STATUS,RP0 ;回存儲區(qū)0

            BSF FLAG1,SHUTDOWN;置相應(yīng)標(biāo)志位

            BCF INTCON,INTF ;清中斷標(biāo)志位

            CALL POP ;恢復(fù)現(xiàn)場

            RETFIE

            ;中斷返回

            ;***************低電壓保護(hù)處理子程序*****************

            POWER

            BCF FLAG1,LOWPOWER;清相應(yīng)的標(biāo)志位

            MOVF VOLTAGEH,0

            MOVWF ACCaHI

            MOVF VOLTAGEL,0

            MOVWF ACCaLO

            MOVLW VOLOFFH

            MOVWF ACCbHI

            MOVLW VOLOFFL

            MOVWF ACCbLO

            CALL D_sub

            BTFSC ACCbLO,7 ;判斷當(dāng)前電池電壓值是否低于保護(hù)電壓(32V)

            RETURN ;不是,返回

            BCF INTCON,INTE

            BCF T1CON,TMR1ON ;關(guān)閉電流采樣

            MOVLW FULLPWM

            MOVWF CCPR1L

            BSF STATUS,RP0

            BCF PIE1,ADIE ;禁止AD采樣中斷

            BCF STATUS,RP0POWER3

            BTFSC ADCON0,GO ;正在進(jìn)行AD采樣?

            GOTO POWER3 ;是,等待AD采樣完畢

            BCF PIR1,ADIF ;清AD采樣中斷標(biāo)志位

            BCF ADCON0,CHS0

            BSF ADCON0,CHS1 ;選擇電壓采樣通道

            MOVLW 0X06 ;延時(shí)等待通道轉(zhuǎn)換完成

            MOVWF COUNTPOWER4

            DECFSZ COUNT

            GOTO POWER4POWER6

            BSF ADCON0,GO ;采樣電池電壓值

            POWER5

            BTFSS PIR1,ADIF ;采樣完畢?

            GOTO POWER5

            BCF PIR1,ADIF ;清AD中斷標(biāo)志位

            BCF STATUS,C

            MOVF ADRESH,0 ;當(dāng)前電壓值送被加數(shù)

            MOVWF ACCbHI

            BSF STATUS,RP0

            MOVF ADRESL,0

            BCF STATUS,RP0

            MOVWF ACCbLO

            MOVLW VOLONH ;35V電壓值送被加數(shù)

            MOVWF ACCaHI

            MOVLW VOLONL

            MOVWF ACCaLO

            CALL D_sub ;當(dāng)前電壓值減35,與重開電壓進(jìn)行比較

            MOVLW FULLPWM

            MOVWF CCPR1L

            CLRWDT

            BTFSC ACCbHI,7 ;當(dāng)前電壓值大于35?

            GOTO POWER6 ;否,重新采樣

            BSF FLAG1,OFF ;是,置相應(yīng)的標(biāo)志位

            RETURN

            ;返回

            ;***電機(jī)轉(zhuǎn)子位置采樣子程序,狀態(tài)采樣子程序,出口地址:STATE1***

            SAMPLE

            MOVLW AND ;讀RB口

            ANDWF PORTB,0 ;分離出有效信息

            MOVWF STATE1 ;暫存狀態(tài)值

            MOVLW 0X08

            MOVWF DELAYDEL1

            DECFSZ DELAY ;延時(shí)6 μs

            GOTO DEL1

            MOVLW AND ;讀RB口

            ANDWF PORTB,0 ;分離出有效信息,并暫存

            MOVWF STATE2

            XORWF STATE1,0 ;與上一次狀態(tài)值相異或

            BTFSC STATUS,Z

            RETURN ;兩個狀態(tài)值相等則返回

            MOVLW 0X06 ;否則延時(shí)4 μs

            MOVWF DELAYDEL2

            DECFSZ DELAY

            GOTO DEL2

            MOVLW AND ;讀RB口

            ANDWF PORTB,0 ;提取有效信息并暫存

            MOVWF STATE3

            XORWF STATE1,0 ;與第一次狀態(tài)相同嗎?

            BTFSC STATUS,Z

            RETURN ;相同則返回

            MOVF STATE2,0 ;否則再與第二次狀態(tài)相比較

            XORWF STATE3,0

            BTFSS STATUS,Z

            GOTO SAMPLE ;三次狀態(tài)均不相同則重新采樣

            MOVF STATE2,0 ;第三次狀態(tài)與第二次相同,則將正確狀態(tài)賦予STATE1并

            MOVWF STATE1 ;返回

            RETURN

            ;************** MOSFET觸發(fā)信號輸出子程序**************

            OUTPUT

            SWAPF STATE1,1 ;STATE1寄存器高低半字節(jié)互換

            BCF STATUS,C ;清C位,并將STATE1寄存器左移一位

            RRF STATE1,0 ;將采樣所得結(jié)果放至W低三位

            CALL OUT_TABLE ;查表獲得輸出值

            MOVWF PORTC ;將輸出值輸出至RC口

            RETURN

            ;*************** RB口電平變化中斷服務(wù)程序**************

            SAMPRB

            CALL PUSH ;現(xiàn)場保護(hù)

            BCF STATUS,RP0

            CALL SAMPLE ;采樣RB口狀態(tài)

            CALL OUTPUT ;根據(jù)RB口狀態(tài)觸發(fā)相應(yīng)的MOSFET

            CALL POP ;恢復(fù)現(xiàn)場

            BCF INTCON,RBIF ;清RB口電平變化中斷標(biāo)志

            RETFIE

            ;中斷返回

            ;************ AD采樣中斷服務(wù)程序***************

            AD

            CALL PUSH ;保護(hù)現(xiàn)場

            BTFSC FLAG1,VOLTAGE ;是電壓采樣?

            GOTO SET_VOL ;是,作相應(yīng)的處理SET_TS

            BCF ADCON0,CHS0 ;AD采樣值是TS,則選擇1采樣通道

            INCF COUNT_VOL ;電壓采樣周期寄存器值加1

            BTFSS STATUS,Z ;電壓采樣周期到?

            GOTO AD4

            BCF ADCON0,CHS0 ;是,選擇2采樣通道

            BSF ADCON0,CHS1

            BSF FLAG1,VOLTAGE ;置相應(yīng)的標(biāo)志位

            AD4

            BCF PIR1,ADIF ;清AD中斷標(biāo)志

            MOVF ADRESH,0 ;采樣值送寄存器暫存

            MOVWF TSH

            BSF STATUS,RP0

            MOVF ADRESL,0

            BCF STATUS,RP0

            MOVWF TSL

            BSF FLAG1,PWM

            BTFSS FLAG1,VOLTAGE ;是否需要進(jìn)行電壓采樣?

            GOTO AD6 MOVLW 0X05 ;是,延時(shí)后采樣電壓

            MOVWF TEMP1AD5

            DECFSZ TEMP1

            GOTO AD5

            BSF ADCON0,GOAD6

            CALL POP ;恢復(fù)現(xiàn)場,中斷返回

            RETFIE

            SET_VOL

            BCF ADCON0,CHS1 ;如果采樣值為電壓值,則選擇0通道

            BCF ADCON0,CHS0

            BCF PIR1,ADIF ;清中斷標(biāo)志位

            BCF FLAG1,VOLTAGE ;清相應(yīng)標(biāo)志位

            MOVF ADRESH,0 ;將采樣結(jié)果放入被減數(shù)寄存器

            MOVWF VOLTAGEH

            BSF STATUS,RP0

            MOVF ADRESL,0

            BCF STATUS,RP0

            MOVWF VOLTAGEL

            BSF FLAG1,LOWPOWER;是,置相應(yīng)標(biāo)志位

            CALL POP

            ;中斷返回

            RETFIE

            ;**************中斷保護(hù)現(xiàn)場子程序******************

            PUSH

            MOVWF W_STACK ;暫存W寄存器

            MOVF STATUS,0 ;暫存STATUS寄存器

            MOVWF ST_STACK

            RETURN ;子程序返回

            ;**************中斷恢復(fù)現(xiàn)場子程序**************

            POP

            MOVF ST_STACK,0 ;恢復(fù)STATUS寄存器值

            MOVWF STATUS

            MOVF W_STACK,0 ;恢復(fù)W寄存器值

            RETURN ;子程序返回

            ;**************初始化子程序****************

            SETUP

            MOVLW .15 ;初始化TEMP

            MOVWF TEMP

            MOVF ACCbHI,0 ;ACCb送ACCd

            MOVWF ACCdHI

            MOVF ACCbLO,0

            MOVWF ACCdLO

            CLRF ACCbHI ;清ACCb

            CLRF ACCbLO

            RETLW 0

            ;**********乘除法運(yùn)算確定結(jié)果符號子程序**********

            S_SIGN

            MOVF ACCaHI,0 ;ACCaHI異或ACCbHI,結(jié)果送SIGN單元

            XORWF ACCbHI,0

            MOVWF SIGN

            BTFSS ACCbHI,7 ;ACCb為負(fù)?

            GOTO CHEK_A ;否,檢查ACCa

            CALL NEG_BCHEK_A

            BTFSS ACCaHI,7 ;ACCa為負(fù)?

            RETLW 0 ;ACCa和ACCb均為負(fù),返回

            GOTO NEG_A ;ACCa為負(fù),取補(bǔ)

            GOTO MAIN

            END

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束

            ;程序結(jié)束



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉