久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

請教PIC單片機(jī)高手

誰能幫幫解說一下用匯編編程的乘除法運算是怎么編寫的(是PIC單片機(jī)哦)
全部回復(fù)(8)
正序查看
倒序查看
etruhjtte
LV.2
2
2007-03-26 00:48
〓利瑪電子(新加坡)有限公司〓SKM400GB128D現(xiàn)貨137-1410 2508
〓利瑪電子(新加坡)有限公司〓SKM300GB128DE現(xiàn)貨137-1410 2508
〓利瑪電子(新加坡)有限公司〓SKM200GB128D現(xiàn)貨137-1410 2508
〓利瑪電子(新加坡)有限公司〓SKM400GB176D現(xiàn)貨137-1410 2508
       〓利瑪電子(新加坡)有限公司〓137-1410 2580〓
※※※※※※利瑪電子(新加坡)有限公司※※※※※※※
★是一家專注於國際品牌功率模塊銷售為主的龍頭企業(yè)★
★在國際國內(nèi)同行業(yè)中享有較高的知名度和良好的聲譽(yù)★
〓代理及經(jīng)銷的世界品牌:〓
1: 三菱(MITSUBISHI)    2: 富士(FUJI)        3: 東芝(TOSHIBA)
4: 三社(SANREX)        5:三肯(SANKEN)      6:日立(HITACHI)
7:西門康(SEMIKRON)    8:西門子(SIEMENS)   9:艾賽斯(IXYS)
10: IR(國際整流器)   11:歐派克(EUPEC)    12:英飛凌(INFINEON)
13:仙童(FAIRCHILD)    14: 泰科(TYCO)       15: 摩托羅拉(MOTOEOLA)
16: 新電元(SHINDENGEN) 17: 西碼(WESTCODE)   18: 日之初(HINODE)      
19: 博仕曼(BUSSMANN)   20: (CATELEC)        21: (APT)
22: (ABB)              23: 賽靈思(XILINX)   24: 歐姆龍(OMRON)
銷售産品:IGBT、GTR、IPM、PIM、可控硅、整流橋、快恢複二極管、軟恢複二極管.
電解電容、場效應(yīng)管、消特基、高頻無感電容.快速熔斷器.等等!!!
     如:美國 日本 德國 英國 西班牙 瑞士等國際知名品牌
        ◆◆◆熱忱歡迎業(yè)界人士來電來函垂詢!!!◆◆◆
◆國際現(xiàn)貨供應(yīng)商==來自原廠的品質(zhì)==出售一流的服務(wù)◆
     聯(lián)繫人:周先生
     手機(jī):137-1410-2508
     電話:(86)-0755-88 364656
     地址:深圳市羅湖區(qū)嘉賓路彭年酒店旁東佳大廈17樓
     ◆◆◆網(wǎng)絡(luò)聯(lián)繫方式◆◆◆
    QQ:173943820
   MSN:sz-lima@hotmail.com
E-mail:limapower@21cn.com
  Http:www.lima-power.com.sg
0
回復(fù)
da2007
LV.2
3
2007-03-26 20:59
你好:
   我想說,你缺少基本的數(shù)學(xué)公式的知識!!!!
0
回復(fù)
zcx402
LV.3
4
2007-03-27 13:42
@da2007
你好:  我想說,你缺少基本的數(shù)學(xué)公式的知識!!!!
是十六位的,不是8位.我只知道一般的用移位乘除法運算,我看了乘除匯編子程序,不知道是采用什么數(shù)學(xué)公式.
0
回復(fù)
da2007
LV.2
5
2007-03-28 13:02
@zcx402
是十六位的,不是8位.我只知道一般的用移位乘除法運算,我看了乘除匯編子程序,不知道是采用什么數(shù)學(xué)公式.
暈,多少位還不是一樣的!
0
回復(fù)
zcx402
LV.3
6
2007-03-29 13:40
@da2007
暈,多少位還不是一樣的!
LIST    p=16f877
    INCLUDE    p16f877.inc
    ACCALO     EQU     20    ;存放乘數(shù)低8位
    ACCAHI     EQU     21    ;存放乘數(shù)高8位
    ACCBLO     EQU     23    ;存放被乘數(shù)低8位和乘積第16~23位
    ACCBHI     EQU     24    ;存放被乘數(shù)高8位和乘積第24~31位
    ACCCLO     EQU     26    ;存放乘積低8位
    ACCCHI     EQU     27    ;存放乘積高8位
    ACCDLO     EQU     28    ;臨時寄存器
    ACCDHI     EQU     29    ;臨時寄存器
    TEMP     EQU     2A    ;臨時寄存器
    SIGN     EQU     2B    ;存放乘積的符號
    ORG    0X0000
START    GOTO     MAIN
;***16×16位乘法子程序,入口地址ACCB×ACCA,出口地址ACCB和ACCC ***
    ORG    0X0100
D_mpy    CALL     S_SIGN    ;求取乘積的符號,并對負(fù)數(shù)取補(bǔ)
     CALL     SETUP    ;調(diào)用子程序,將ACCB的值送ACCD
    INCF    TEMP
    CLRF     ACCCHI    ;清ACCC
    CLRF     ACCCLO
MLOOP    BCF     STATUS,C    ;清進(jìn)位位
    RRF     ACCDHI    ;ACCD右移
    RRF     ACCDLO
    BTFSC     STATUS,C    ;判斷是否需要相加
    CALL     D_add    ;加乘數(shù)至ACCB,見加法程序
    BCF     STATUS,C    ;清進(jìn)位位
    RRF     ACCBHI    ;右移部分乘積
    RRF     ACCBLO
    RRF     ACCCHI
    RRF     ACCCLO
    DECFSZ     TEMP    ;乘法完成否?
    GOTO     MLOOP    ;否,繼續(xù)求乘積
    BTFSS     SIGN,7    ;是,確定乘積的符號
    GOTO     OVER    ;為正,乘法結(jié)束
    COMF     ACCCLO    ;為負(fù),乘積取補(bǔ)
    INCF         ACCCLO
    BTFSC        STATUS,Z
    DECF         ACCCHI
    COMF         ACCCHI
    BTFSC         STATUS,Z
NEG_B    DECF         ACCBLO        ;
    COMF         ACCBLO
    BTFSC         STATUS,Z
    DECF         ACCBHI
    COMF         ACCBHI
OVER    RETURN        ;子程序返回
;****************************************
SETUP    MOVLW     .15    ;初始化TEMP寄存器        
    MOVWF     TEMP
    MOVF     ACCBHI,0    ;ACCB送ACCD
    MOVWF    ACCDHI
    MOVF     ACCBLO,0
    MOVWF     ACCDLO
    CLRF     ACCBHI    ;清ACCB
    CLRF     ACCBLO
    RETURN        ;子程序返回
;*******乘法運算確定結(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_B    ;是,求取ACCB絕對值
CHEK_A    BTFSC     ACCAHI,7    ;ACCA為負(fù)嗎?
    CALL     NEG_A    ;ACCA為負(fù),求取ACCA絕對值,
            ;見雙字節(jié)加法程序
    RETURN        ;ACCA和ACCB均為正,返回
幫幫分析一下該程序是采用什么數(shù)學(xué)公式計算的,謝謝了
0
回復(fù)
2007-04-02 17:07
呵呵,所有都是一樣的啦,有興趣聯(lián)系我一下,共同進(jìn)步啊QQ178843781/MSN:SHZHYZL@HOTMAIL.COM/FLY_MAN100@163.COM
0
回復(fù)
吳增賢
LV.4
8
2008-11-17 21:41
@andrew.yang
呵呵,所有都是一樣的啦,有興趣聯(lián)系我一下,共同進(jìn)步啊QQ178843781/MSN:SHZHYZL@HOTMAIL.COM/FLY_MAN100@163.COM
高手好,我有一個問題,我用的是PIC16F690,我們做的是電子鎮(zhèn)流器,用單片機(jī)和485通訊,我把接收放在中斷里了,可是當(dāng)我一個數(shù)一個數(shù)的發(fā)時,接收是沒問題的,當(dāng)我一下發(fā)一串?dāng)?shù)時就不好用了
;**************************************************************
;**                  中斷服務(wù)子程序                          **
; *************************************************************
ORG 010H

INTERRUPT:

;------------軟件現(xiàn)場保護(hù)和恢復(fù)-----

MOVWF W_TEMP ;1 暫存累加器 W,不影響STATUS的值
SWAPF STATUS,0 ;1 (用SWAPF才不會影響STATUS的值)
MOVWF STATUS_TEMP ;1 暫存狀態(tài)寄存器 WTATUS
MOVF PCLATH,0 ;1
MOVWF PCLATH_TEMP ;1 暫存程序指針寄存器高位 PCLATH


; ------------------------------------------------------------------------------------------------------------
BCF STATUS,RP1 ; 此語句必需!!
BCF STATUS,RP0    ; 1 BANK0
bcf STATUS,IRP
BTFSS PIR1,RCIF
GOTO TM0_INT
BTFSC RCV_SIGN,1
GOTO RECEIVE
MOVF RCREG,0
SUBLW 55H
BTFSS STATUS,Z
GOTO TIM_CHN_OVER
BSF RCV_SIGN,1         ;;;;置1表示數(shù)據(jù)頭對,可以繼續(xù)接收
MOVLW RCV_BUF
MOVWF FSR
CLRF RCV_CNT
GOTO TIM_CHN_OVER
RECEIVE:
BTFSC RCSTA,OERR
GOTO YICHU

MOVF RCREG,0
MOVWF INDF
INCF FSR
INCF RCV_CNT

MOVF RCV_CNT,0
SUBLW 09H ;L-RCV_CNT,L>RCV_CNT C=1;L<=RCV_CNT C=0;;;;09H 是接收10個數(shù)
BTFSS STATUS,C ;rcv_cnt<=10跳轉(zhuǎn)
GOTO RCV_NT2 ;rcv_cnt>10,不再接收

RCSTA,CREN;;;;;;;;;;;;;;;;;;;;;;關(guān)接受
;BSF RCV_SIGN,6   ;;;;;;;;;;;;;;;;;;;;;;;置1表示接收數(shù)據(jù)超時.
GOTO TIM_CHN_OVER
YICHU:
BCF RCSTA,CREN
CLRF RCV_SIGN
MOVF RCREG,0
MOVF RCREG,0
BSF RCSTA,CREN
GOTO TIM_CHN_OVER

RCV_NT2:
BCF RCSTA,CREN ;;;;;;;;;;;;;;;;;;;;;;;;;關(guān)接受
BSF RCV_SIGN,5    ;;;;;;;;;;;;;;;;;;;;接收數(shù)據(jù)成功.
GOTO TIM_CHN_OVER

;*******************************************************************************
TM0_INT:
BTFSS INTCON,T0IF
GOTO TIM_CHN_OVER


CLOCK:
;----- 長延時-TIMER0 --------------------------
; BCF STATUS,RP0    ; 1 BANK0
BCF INTCON,T0IF ; 清Timer0 溢出中斷標(biāo)志,允許下次進(jìn)入中斷
;INCFSZ TIMER0L,1         ;;;;;;;;;;;;;;;;;;;;;;;;;;1107  
MOVF TIMER0L,0 ; (TIMER0L+1)計時
ADDLW 1H ;
MOVWF TIMER0L
BTFSS STATUS,C
GOTO ADD1
MOVF TIMER0H,0 ; (TIMER0H+1)計時
ADDLW 1H
MOVWF TIMER0H
;INCF TIMER0H,1
;---- 調(diào)光計時器 TIMER1、TIMER2L計時,這里采用3個字節(jié)---------
ADD1:
;INCFSZ TIMER1L,1       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107  
MOVF TIMER1L,0
ADDLW 1H
MOVWF TIMER1L
BTFSS STATUS,C
GOTO TIAOGUANG

;INCFSZ TIMER1H,1        ;;;;;;;;;;;;;;;;;;;;;;;;;;1107
MOVF TIMER1H,0
ADDLW 1H
MOVWF TIMER1H
BTFSS STATUS,C
GOTO TIAOGUANG

ADD2:
MOVF TIMER2L,0
SUBLW 0FBH ; 防止調(diào)光計時器溢出,計時時間已經(jīng)足夠長
BTFSS STATUS,C
GOTO TIM_CHN_OVER

;INCF TIMER2L,1          ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107
MOVF TIMER2L,0
ADDLW 1H
MOVWF TIMER2L

;----- 調(diào)光控制 ----------------
TIAOGUANG:

CLRWDT

STAGE3:
MOVF TIMER2L,0
ADDLW 01H
SUBWF SEC_STAGE_TIME,0 ; 10小時,切換到第三階段,10小時 = 10*3600*1000/13.1072 = 29E8D6H
; 10分鐘,切換到第三階段,10分鐘 = 10*60*1000/13.1072 = B16DH
BTFSC STATUS,C
GOTO STAGE2

MOVF TIMER1H,0
ADDLW 01H
SUBWF SEC_STAGE_TIME+1,0

BTFSC STATUS,C
GOTO STAGE2

MOVF TIMER1L,0
ADDLW 01H
SUBWF SEC_STAGE_TIME+2,0
BTFSC STATUS,C
GOTO STAGE2

       MOVF PERCENT_POWER+1,0            ;
MOVWF P_REF         ; 第三階段功率設(shè)定值;**bus_i_set     ;;;;;55H對應(yīng)150W  ;;8AH對應(yīng)250W


GOTO TIM_CHN_OVER

STAGE2:
MOVF TIMER2L,0
ADDLW 01H
SUBWF FIR_STAGE_TIME,0 ; 5小時,切換到第二階段,5小時 = 5*3600*1000/13.1072 = 14F46BH
; 5分鐘,切換到第二階段,5分鐘 = 5*60*1000/13.1072 = 58B6H
; 5.5小時,切換到第二階段,5.5小時 = 5.5*3600*1000/13.1072 = 170CDCH
BTFSC STATUS,C
GOTO TIM_CHN_OVER

MOVF TIMER1H,0
ADDLW 01H
SUBWF FIR_STAGE_TIME+1,0
BTFSC STATUS,C
GOTO TIM_CHN_OVER

MOVF TIMER1L,0
ADDLW 01H
SUBWF FIR_STAGE_TIME+2,0
BTFSC STATUS,C
GOTO TIM_CHN_OVER

       MOVF PERCENT_POWER,0
MOVWF P_REF         ; 第二階段功率設(shè)定值;**bus_i_set     ;;;;;73H對應(yīng)210W

GOTO TIM_CHN_OVER

;-----恢復(fù)中斷現(xiàn)場---------------------------
TIM_CHN_OVER:
CLRWDT ;1

MOVF PCLATH_TEMP,0 ;1
MOVWF PCLATH ;1 恢復(fù)程序指針寄存器高位 PCLATH
SWAPF STATUS_TEMP,0 ;1 (用SWAPF才不會影響STATUS的值)
MOVWF STATUS ;1 恢復(fù)狀態(tài)寄存器 WTATUS
SWAPF W_TEMP,1 ;1
SWAPF W_TEMP,0 ;1 restore pre-isr W register contents

RETFIE ;2 中斷返回
0
回復(fù)
whwh
LV.3
9
2008-11-19 09:54
@吳增賢
高手好,我有一個問題,我用的是PIC16F690,我們做的是電子鎮(zhèn)流器,用單片機(jī)和485通訊,我把接收放在中斷里了,可是當(dāng)我一個數(shù)一個數(shù)的發(fā)時,接收是沒問題的,當(dāng)我一下發(fā)一串?dāng)?shù)時就不好用了;**************************************************************;**                  中斷服務(wù)子程序                          **;*************************************************************ORG010HINTERRUPT:;------------軟件現(xiàn)場保護(hù)和恢復(fù)-----MOVWFW_TEMP;1暫存累加器W,不影響STATUS的值SWAPFSTATUS,0;1(用SWAPF才不會影響STATUS的值)MOVWFSTATUS_TEMP;1暫存狀態(tài)寄存器WTATUSMOVFPCLATH,0;1MOVWFPCLATH_TEMP;1暫存程序指針寄存器高位PCLATH;------------------------------------------------------------------------------------------------------------BCFSTATUS,RP1;此語句必需!!BCFSTATUS,RP0  ;1BANK0bcfSTATUS,IRPBTFSSPIR1,RCIFGOTOTM0_INTBTFSCRCV_SIGN,1GOTORECEIVEMOVFRCREG,0SUBLW55HBTFSSSTATUS,ZGOTOTIM_CHN_OVERBSFRCV_SIGN,1        ;;;;置1表示數(shù)據(jù)頭對,可以繼續(xù)接收MOVLWRCV_BUFMOVWFFSRCLRFRCV_CNTGOTOTIM_CHN_OVERRECEIVE:BTFSCRCSTA,OERRGOTOYICHUMOVFRCREG,0MOVWFINDFINCFFSRINCFRCV_CNTMOVFRCV_CNT,0SUBLW09H;L-RCV_CNT,L>RCV_CNTC=1;L
用個串口調(diào)試工具什么的,抓串?dāng)?shù)據(jù)看看,是不是波特率沒設(shè)好
0
回復(fù)
發(fā)