亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fuzzy.asm

?? This program implements a PIC-based fuzzy inference engine for the Fudge fuzzy development system
?? ASM
字號:

;
;Fuzzy logic controller
;Written by Lindsay Meek
;http://www.kitstream.com
;
;This software is freeware and is provided AS-IS with no warranties
;

;Based on the freeware motorola 'fudge' engine for the HC11 
;
;Achieves about a 1ms execution time on a PIC16F876 @ 16 MHz with two inputs & outputs
;

                    include     "p16f876.inc"

#define _c      STATUS,C
#define _z      STATUS,Z
#define _rp0    STATUS,RP0
#define _rp1    STATUS,RP1


;
;Banked subroutine call
;
bcall   macro   addr
        local   here
        lcall   addr
here:
        if  here & 0x800
        bsf PCLATH,3
        else
        bcf PCLATH,3
        endif
        if  here & 0x1000
        bsf PCLATH,4
        else
        bcf PCLATH,4
        endif
        endm

    org     0

    goto    RESET

divinner16: macro
    local   nocarry
    rlf     sum_of_prod,f
    rlf     sum_of_prod+1,f
    rlf     L_byte,f
    rlf     H_byte,f
    movfw   sum_of_fuz
    subwf   L_byte,w
    movfw   sum_of_fuz+1
    btfss   _c
    addlw   1
    subwf   H_byte,w
    btfss   _c
    goto    nocarry
    movwf   H_byte
    movfw   sum_of_fuz
    subwf   L_byte,f
    bsf _c
nocarry:
    endm

divinner24: macro
    local   nocarry
    rlf     sum_of_prod,f
    rlf     sum_of_prod+1,f
    rlf     sum_of_prod+2,f
    rlf     L_byte,f
    rlf     H_byte,f
    movfw   sum_of_fuz
    subwf   L_byte,w
    movfw   sum_of_fuz+1
    btfss   _c
    addlw   1
    subwf   H_byte,w
    btfss   _c
    goto    nocarry
    movwf   H_byte
    movfw   sum_of_fuz
    subwf   L_byte,f
    bsf _c
nocarry:
    endm

div16x15:

    clrf    L_byte
    clrf    H_byte
    bcf _c

        ;simple speedup. if denominator > 8 bits [typical case], then first 8 loops will do nothing
        ;and they can be eliminated

        movfw   sum_of_fuz+1
        btfsc   _z
        goto    no_div_opt
        
        movfw   sum_of_prod+1
        movwf   L_byte
        movfw   sum_of_prod
        movwf   sum_of_prod+1
        clrf    sum_of_prod
        goto    div_opt

no_div_opt:

    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16

div_opt:

    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16
    divinner16

    rlf     sum_of_prod,f     
    rlf     sum_of_prod+1,f
    movfw   sum_of_prod
    return

div24x15:

    clrf    L_byte
    clrf    H_byte
    bcf _c

        ;simple speedup. if denominator > 8 bits [typical case], then first 8 loops will do nothing
        ;and they can be eliminated

        movfw   sum_of_fuz+1
        btfsc   _z
        goto    no_div_opt2
        
        movfw   sum_of_prod+2
        movwf   L_byte
        movfw   sum_of_prod+1
        movwf   sum_of_prod+2
        movfw   sum_of_prod
        movwf   sum_of_prod+1
        clrf    sum_of_prod
        goto    div_opt2

no_div_opt2:
    
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24

div_opt2:

        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24

        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24
        divinner24

        rlf     sum_of_prod,f       
        rlf     sum_of_prod+1,f
        rlf     sum_of_prod+2,f
        movfw   sum_of_prod
        return

normalise24:    macro   var,shifts

    local   i=0

    while   i<shifts
    bcf _c
    rrf var+2,f
    rrf var+1,f
    rrf var+0,f
i += 1

    endw
    endm

;
;Main line
;
RESET:  
   
    bcf     _rp0

Loop:
    clrwdt
   
    movlw   0                   ;raw input #1
    movwf   current_ins+0

    movlw   0                   ;raw input #2
    movwf   current_ins+1

    movlw   0
    movwf   current_ins+2       ;raw input #3

    bcall   FuzzyEngine

    movfw   cog_outs+0          ;raw output #1

    movfw   cog_outs+1          ;raw output #2

    movfw   cog_outs+2          ;raw output #3

    goto    Loop

FUZ_BASE    equ    0x800

    org     FUZ_BASE

;
;output from fudge, coverted to PIC assembler syntax with 'conv'
;
    include     "rules.asm"


;
;indirectly access a value in the fuzzy logic tables
;
LUT:    movwf       PCL

;
;macro to evaluate an input against a membership function
;
member_eval:    macro   member_ptr,input
        local   hav_grad,not_seg2,no_fix,vert_slp,use_b

    movlw       member_ptr+2
    call        LUT     ;point 2
    
    subwf       input,w
    btfss       _c
    goto        not_seg2
    btfsc       _z
    goto        not_seg2

    movwf       mulplr      ;if input < point 2

    movlw       member_ptr+3
    call        LUT     ;slope 2

    xorlw       0
    btfsc       _z
    goto        hav_grad    ;skip if vertical slope
    
    call        mpy     ;slope * (input - point2)

    btfsc       _z      ;test if upper 8 bits = 0
    goto        no_fix

    clrw                ;no, limit grade to zero
    goto        hav_grad

no_fix:

    movlw       .255
    subwf       L_byte,w    ;sub 0xff
    sublw       0       ;neg
    goto        hav_grad

not_seg2:

    movlw       member_ptr+0
    call        LUT     ;point 1
    
    subwf       input,w

    movwf       mulplr

    clrw
    btfss       _c
    goto        hav_grad    ;< point 1 so grade=0

    movlw       member_ptr+1
    call        LUT     ;slope 1

    xorlw       0
    btfsc       _z
    goto        vert_slp    ;skip if vertical slope

    call        mpy     ;slope * (input-point1)

    btfsc       _z      ;see if upper 8 bits = 0
    goto        use_b       ;yes, use result 

vert_slp:

    movlw       .255        ;vertical slope encountered
    goto        hav_grad

use_b:

    movfw       L_byte

hav_grad:
    endm

;
;macro to unroll all possible membership function tests
;
fuzzify_inputs: macro   input_vectors,member_ptr,input
        
    local   i,j
   
j=0

    movlw   input_vectors
    movwf   FSR

    while   j<NUMINP

i=0

    while   i<8

    member_eval member_ptr+(i+j*8)*4,input+j

    movwf   INDF
    incf    FSR,f

i += 1
    endw    
j += 1
    endw
    endm

;
;macro to clear fuzzy outputs
;
clear_outputs:  macro   output
        
    local   i=0
    while   i<8*NUMOUT
    clrf    output+i
i += 1
    endw
    endm

defuzzify_inner:    macro   output,weight

    local   is_zero

    movfw   output
    btfsc   _z
    goto    is_zero

    movwf   mulplr
    addwf   sum_of_fuz,f
    btfsc   _c
    incf    sum_of_fuz+1,f  ;sum outputs

    movlw   weight
    call    LUT
    xorlw   0       ;ignore zero weights
    btfsc   _z
    goto    is_zero

    call    mpy     ;position times weight

    movfw   L_byte
    addwf   sum_of_prod,f
    movlw   1
    btfsc   _c
    addwf   sum_of_prod+1,f
    btfsc   _c
    addwf   sum_of_prod+2,f
    movfw   H_byte
    addwf   sum_of_prod+1,f
    btfsc   _c
    incf    sum_of_prod+2,f 

is_zero:
    endm

defuzzify_output:   macro   output,weights,crisp,index  

    local   i=0,num_big,sav_out,is_zero

    clrf    sum_of_fuz
    clrf    sum_of_fuz+1
    clrf    sum_of_prod
    clrf    sum_of_prod+1
    clrf    sum_of_prod+2

    while   i<8

    defuzzify_inner output+i+index*8,weights+i+index*8

i += 1
    endw

    movfw   sum_of_fuz
    iorwf   sum_of_fuz+1,w
    btfsc   _z              ;denominator zero?
    goto    sav_out         ;yes, output is zero then

    movfw   sum_of_prod+2
    btfss   _z              ;numerator > 16 bit?
    goto    num_big
    
    bcall   div16x15        ;crisp = sum(weights*outputs)/sum(outputs)

    goto    sav_out

num_big:    
    bcall    div24x15
   
sav_out:
    movwf   crisp+index     ;output table

    movlw   high FUZ_BASE
    movwf   PCLATH

    endm

;
;macro to convert fuzzy inferences to crisp outputs
;
defuzzify:  macro   output,weights,crisp

    local   j=0

    while   j<NUMOUT

    defuzzify_output    output,weights,crisp,j

j += 1
    endw

    endm


;
;****   Define a macro for adding & right shifting  **
;
mult    MACRO   bit             ; Begin macro
	btfsc   mulplr,bit
        addwf   H_byte,f   
        rrf     H_byte,f   
        rrf     L_byte,f   
	ENDM                    ; End of macro
;
; *****************************         Begin Multiplier Routine
;
; Inputs:
;
; mulplr = multiplier
; W=mulcnd
;
; Outputs:
;
; L_byte,H_byte result
;
; W=H_byte

mpy     clrf    H_byte
		clrf    L_byte
        bcf     STATUS,C             ; Clear the carry bit in the status Reg.
		mult    0
		mult    1
		mult    2
		mult    3
		mult    4
		mult    5
		mult    6
		mult    7
        movfw   H_byte
        return
  
;
;Fuzzy logic controller. Based on the motorola 'Fudge' engine
;
;Inputs     current_ins crisp inputs
;Outputs    cog_outs    crisp outputs
;
FuzzyEngine:

    movlw   high FUZ_BASE
    movwf   PCLATH

    fuzzify_inputs  fuz_ins,INPUT_MFS-FUZ_BASE,current_ins
    
    clear_outputs   fuz_outs

    ;process rules

    movlw   RULE_START-FUZ_BASE
    movwf   addr

    movlw   .255
    movwf   grade       ;reset highest membership grade
if_loop:
    movfw   addr
    call    LUT         ;read rule table entry
    movwf   FSR         ;save rule
    incf    addr,f      ;advance to next rule
    btfsc   _z
    incf    PCLATH,f
    btfsc   FSR,7       ;'then' or 'if'?
    goto    then_loop

got_if:
    movlw   fuz_ins     ;no, if
    addwf   FSR,f       ;calc input rule ptr

    movfw   INDF
    subwf   grade,w     ;is input rule less than highest grade?
    movfw   INDF
    btfsc   _c
    movwf   grade       ;yes, replace highest grade with input rule
    goto    if_loop 
    
if_loop_restart:
    movlw   .255
    movwf   grade       ;reset highest membership grade
    goto    got_if      ;process 'if'

then_loop:
    bcf     FSR,7       ;clear bit 7
    movlw   fuz_outs
    addwf   FSR,f       ;calc output rule ptr
    
    movfw   grade
    subwf   INDF,w      ;is grade higher than output?
    movfw   grade
    btfss   _c
    movwf   INDF        ;yes, replace output 

    movfw   addr
    call    LUT         ;get next rule
    movwf   FSR
    incf    addr,f
    btfsc   _z
    incf    PCLATH,f
    btfss   FSR,7
    goto    if_loop_restart 

    incfsz  FSR,w       ;end of rule set? (0xff)
    goto    then_loop   ;no, process next 'then'

    movlw   high FUZ_BASE
    movwf   PCLATH

    defuzzify   fuz_outs,SGLTN_POS-FUZ_BASE,cog_outs 
    return

    CBLOCK      0x20

    mulplr
    L_byte
    H_byte
    
    grade
    addr

    current_ins:NUMINP
    fuz_ins:8*NUMINP
    fuz_outs:8*NUMOUT
    cog_outs:NUMOUT
    sum_of_fuz:2
    sum_of_prod:3
  
    ENDC

    end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图20p| 日韩电影在线观看网站| 欧美精品久久久久久久久老牛影院| 国产一区二区三区在线观看免费| 一区二区高清在线| 亚洲国产精品成人综合| 日韩久久免费av| 欧美日韩综合一区| a级精品国产片在线观看| 九九热在线视频观看这里只有精品| 亚洲影院久久精品| 国产精品国产a级| 久久亚洲春色中文字幕久久久| 欧美美女一区二区三区| av不卡免费电影| 欧美精品1区2区3区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 成人高清视频免费观看| 美女视频免费一区| 偷拍日韩校园综合在线| 亚洲猫色日本管| 国产精品乱人伦| 国产人久久人人人人爽| 精品国产乱码久久久久久1区2区| 欧美美女一区二区在线观看| 欧美在线色视频| 色婷婷亚洲综合| 一本大道av伊人久久综合| 99久久免费视频.com| 从欧美一区二区三区| 国产乱码精品一区二区三区av| 麻豆一区二区三| 免费观看在线综合色| 图片区小说区区亚洲影院| 亚洲一区精品在线| 亚洲午夜av在线| 亚洲综合激情另类小说区| 一区二区不卡在线播放 | 一本大道久久a久久综合| www.66久久| 91视频你懂的| 91久久一区二区| 欧美系列一区二区| 欧美男人的天堂一二区| 欧美系列亚洲系列| 欧美日本精品一区二区三区| 欧美一区二区播放| www国产成人免费观看视频 深夜成人网 | 国产一区二区毛片| 国产成人亚洲综合a∨猫咪| 国产精品88av| 成年人网站91| 在线观看网站黄不卡| 欧美日韩国产成人在线91| 91麻豆精品91久久久久同性| 一区二区三区欧美亚洲| 一区av在线播放| 奇米色777欧美一区二区| 国产一区二区三区免费| 高清不卡在线观看| 91免费观看在线| 欧美美女直播网站| 精品国产伦理网| 国产精品护士白丝一区av| 亚洲综合一区二区三区| 人人精品人人爱| 成人美女在线观看| 欧美性videosxxxxx| 精品毛片乱码1区2区3区| 国产精品女人毛片| 亚洲va韩国va欧美va精品| 免费在线观看一区二区三区| 国产精品系列在线观看| 91视视频在线观看入口直接观看www | 国产女同性恋一区二区| 亚洲男帅同性gay1069| 亚洲午夜精品在线| 国产精品一线二线三线精华| 91国偷自产一区二区开放时间 | 亚洲欧洲av在线| 婷婷中文字幕一区三区| 国产传媒日韩欧美成人| 欧美日韩一区小说| 欧美国产97人人爽人人喊| 亚洲福利一二三区| 懂色av噜噜一区二区三区av| 欧美精品三级日韩久久| 日本一区二区三区国色天香| 午夜亚洲福利老司机| 丁香婷婷综合色啪| 51久久夜色精品国产麻豆| 精彩视频一区二区| 色综合网色综合| 26uuu精品一区二区在线观看| 亚洲天堂免费看| 国产在线精品一区在线观看麻豆| 91久久线看在观草草青青| 久久久精品中文字幕麻豆发布| 亚洲一级二级三级| 成人激情黄色小说| 2020国产精品久久精品美国| 亚洲va欧美va天堂v国产综合| 国产成人8x视频一区二区| 日韩一级大片在线观看| 亚洲激情图片一区| 成人v精品蜜桃久久一区| 日韩一区二区三区av| 亚洲综合一区在线| 91小视频免费看| 国产视频一区二区在线| 麻豆免费看一区二区三区| 欧美在线视频你懂得| 中文字幕一区二区三区四区不卡| 精品无人码麻豆乱码1区2区| 欧美一区二区在线看| 亚洲一区二区中文在线| 97精品视频在线观看自产线路二 | 日韩美女啊v在线免费观看| 精品一区二区三区在线播放视频| 欧美剧情片在线观看| 亚洲三级视频在线观看| 国产69精品一区二区亚洲孕妇| 精品国产伦理网| 蜜臀精品一区二区三区在线观看 | 国产精品一区在线| 欧美电影免费观看高清完整版在线 | 国产精品18久久久久久久网站| 日韩视频在线你懂得| 日韩国产一二三区| 欧美日本一区二区| 日韩国产在线观看| 9191久久久久久久久久久| 午夜在线成人av| 欧美区一区二区三区| 丝袜亚洲另类丝袜在线| 91精品国产一区二区三区蜜臀| 午夜不卡av在线| 91精品国产综合久久福利| 免费在线看一区| 精品久久久久av影院| 狠狠v欧美v日韩v亚洲ⅴ| 2020国产精品自拍| 国产91对白在线观看九色| 国产精品久久久久久妇女6080| 99视频精品在线| 亚洲另类中文字| 欧美精品18+| 国产一区不卡在线| 日本一区二区免费在线| 白白色 亚洲乱淫| 一区二区三区在线观看视频 | 成人av网址在线| 亚洲欧美日韩一区| 欧美视频一区二区三区四区| 五月激情综合色| 久久婷婷色综合| 成人黄色777网| 亚洲一区二区三区精品在线| 在线成人免费视频| 国产在线不卡一卡二卡三卡四卡| 久久精品网站免费观看| 91蜜桃传媒精品久久久一区二区| 亚洲午夜电影网| 久久婷婷国产综合精品青草| 国产凹凸在线观看一区二区| 亚洲免费av高清| 欧美一区二区三区小说| 成人性生交大片| 视频一区二区不卡| 欧美国产日韩一二三区| 欧美丝袜丝交足nylons| 激情综合一区二区三区| 亚洲精品国产视频| 日韩免费看网站| www.色精品| 蜜桃av噜噜一区| 亚洲视频1区2区| 日韩欧美亚洲国产另类| 成人福利视频在线| 日本欧美一区二区| 国产精品久久影院| 6080yy午夜一二三区久久| 成人亚洲一区二区一| 日韩和欧美的一区| 成人免费在线视频观看| 欧美一区二区三区成人| 99精品欧美一区二区蜜桃免费| 日韩va亚洲va欧美va久久| 久久成人精品无人区| 国产精品福利一区| 日韩三级免费观看| 日本丶国产丶欧美色综合| 国产精品亚洲成人| 日韩黄色免费电影| 亚洲黄色尤物视频| 国产女主播一区| 精品国产一区二区亚洲人成毛片| 在线观看日韩高清av| 国产成人精品亚洲午夜麻豆| 日韩制服丝袜av|