• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#13
高級會員
高級會員


查看用戶資訊
參照:

newchen86 寫道:

我後來用上面那個程式run 改成xxxx減w的值是為正的就直接portb輸出(這部份的邏輯應該是對的) ,adresh的值有進去,但7段就是不會動阿
但是不是要給它w的值阿?才可以減阿


1. 7段就是不會動阿 -> 是七段顯示器 ? 還是程式中的七個段落?
2. Beee 大改的 , 你有更新了嗎?
3. 以下這段程式執行完 , 你希望接下來執行那裡 ??
goto    check9
    movlw    0x7B
    movwf    PORTB
   
;;;;;;;;;;;;;;;;;  Output  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    
movf    ADRESH,W    
    movwf    K1
    swapf    K1
,F
    movf    K1
,W
    
    movwf    PORTB
;---------------------------------------------------------

發表於: 2009/11/10 11:43
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#12
新會員
新會員


查看用戶資訊
參照:

genitec 寫道:
參照:

newchen86 寫道:
1.我不是很懂那一行但我同學說那個不用動
2.我们後來改這樣,但現在可變電阻轉也不會動阿就停住
我们現在測ADRESH有輸入值,但跑到TABLE那只跑第一行
所以就把TABLE換掉改下面這樣,有其它方法嗎....PLEASE



1. movf ADRESH,W ;就是把A/D轉換的結果放到 W 暫存器上
2. sublw xxxx ;就是用 xxxx 去減掉 W 暫存器的值 , 並把結果放在 W 暫存器.
3. 以上二行先弄清楚了 , 後面的才能進一步去看



我後來用上面那個程式run 改成xxxx減w的值是為正的就直接portb輸出 ,adresh的值有進去,但7段就是不會動阿
但是不是要給它w的值阿?才可以減阿

發表於: 2009/11/8 14:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#11
資深會員
資深會員


查看用戶資訊
參照:

newchen86 寫道:
1.我不是很懂那一行但我同學說那個不用動
2.我们後來改這樣,但現在可變電阻轉也不會動阿就停住
我们現在測ADRESH有輸入值,但跑到TABLE那只跑第一行
所以就把TABLE換掉改下面這樣,有其它方法嗎....PLEASE

list    p=16f877A
    
include    <p16f877A.inc>

__CONFIG _CP_OFF _WDT_OFF _XT_OSC _LVP_OFF _BODEN_OFF


K1        EQU 0x20
[color=FF0000][d]
c        EQU    0x21
status    EQU 0x22
[/d][/color]

    
org    0x000
    nop
Start

;;;;;;;;;;;;;  IO initialization  ;;;;;;;;;;;;;;;;;;;;
    
    
banksel    TRISB
    movlw    
B'00000000'
    
movwf    TRISB
;    banksel    PORTB
;    clrf    PORTC

;;;;;;;;;;;;;  AD Initialization  ::::::::::::::::::::

    
banksel    ADCON0
    movlw    
B'01000001'
    
movwf    ADCON0
    banksel ADCON1
    movlw    
B'00001110'
    
movwf    ADCON1
    
;;;;;;;;;;;;;    TMR0  Iitialization  ;;;;;;;;;;;;;;;;;;n    

    movlw    
B'10000111'
    
movwf    OPTION_REG

;;;;;;;;;;;;   Delay time  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Main
[d]    banksel    INTCON   [/d]     ;   INTCON  IS  IN  ALL_BANK
    btfss    INTCON
,T0IF
    
goto    Main

;;;;;;;;;;;  Start AD  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    
bcf    INTCON,T0IF
    bsf    ADCON0
,GO
;;;;;;;;;;;;;;;;    Conversion Time  ;;;;;;;;;;;;;;;;;;;;
    
nop
Wait
    btfsc    ADCON0
,GO
    
goto    Wait



    movf    ADRESH
,W
    sublw   
B'00000010'
    
btfss   status,c
    
goto    check1
    movf    ADRESH
,W
    sublw   
B'00000101'
    
btfss   status,c
    
goto    check2
    movf    ADRESH
,W
    sublw   
B'00001000'
    
btfss   status,c
    
goto    check3
    movf    ADRESH
,W
    sublw   
B'00001010'
    
btfss   status,c
    
goto    check4
    movf    ADRESH
,W
    sublw   
B'00001100'
    
btfss   status,c
    
goto    check5
    movf    ADRESH
,W
    sublw   
B'00001110'
    
btfss   status,c
    
goto    check6
    movf    ADRESH
,W
    sublw   
B'00010000'
    
btfss   status,c
    
goto    check7
    movf    ADRESH
,W
    sublw   
B'00010100'
    
btfss   status,c
    
goto    check8
    movf    ADRESH
,W
    sublw   
B'00011011'
    
btfss   status,c
    
goto    check9
    movlw    0x7B
    movwf    PORTB
   



    
    
;;;;;;;;;;;;;;;;;  Output  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    
movf    ADRESH,W    
    movwf    K1
    swapf    K1
,F
    movf    K1
,W
    
    movwf    PORTB
;---------------------------------------------------------

check1
    movlw   0x7E
    movwf    PORTB
    
goto    Start
check2               
    movlw   0x30
    movwf    PORTB
    
goto    Start
check3
    movlw   0x6D
    movwf    PORTB
    
goto    Start
check4               
    movlw   0x79
    movwf    PORTB
    
goto    Start
check5
    movlw   0x33
    movwf    PORTB
    
goto    Start
check6               
    movlw   0x5B
    movwf    PORTB
    
goto    Start
check7
    movlw   0x5F
    movwf    PORTB
    
goto    Start
check8               
    movlw   0x70
    movwf    PORTB
    
goto    Start
check9
    movlw   0x7F
    movwf    PORTB
    
goto    Start


;;;;;;;;;;;;;;;;;;;;;;END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end

發表於: 2009/11/7 4:09
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#10
高級會員
高級會員


查看用戶資訊
參照:

newchen86 寫道:
1.我不是很懂那一行但我同學說那個不用動
2.我们後來改這樣,但現在可變電阻轉也不會動阿就停住
我们現在測ADRESH有輸入值,但跑到TABLE那只跑第一行
所以就把TABLE換掉改下面這樣,有其它方法嗎....PLEASE



1. movf ADRESH,W ;就是把A/D轉換的結果放到 W 暫存器上
2. sublw xxxx ;就是用 xxxx 去減掉 W 暫存器的值 , 並把結果放在 W 暫存器.
3. 以上二行先弄清楚了 , 後面的才能進一步去看

發表於: 2009/11/7 0:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#9
新會員
新會員


查看用戶資訊
1.我不是很懂那一行但我同學說那個不用動
2.我们後來改這樣,但現在可變電阻轉也不會動阿就停住
我们現在測ADRESH有輸入值,但跑到TABLE那只跑第一行
所以就把TABLE換掉改下面這樣,有其它方法嗎....PLEASE


list p=16f877A
include <p16f877A.inc>

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _LVP_OFF & _BODEN_OFF


K1 EQU 0x20
c EQU 0x21
status EQU 0x22


org 0x000
nop
Start

;;;;;;;;;;;;; IO initialization ;;;;;;;;;;;;;;;;;;;;

banksel TRISB
movlw B'00000000'
movwf TRISB
; banksel PORTB
; clrf PORTC

;;;;;;;;;;;;; AD Initialization ::::::::::::::::::::

banksel ADCON0
movlw B'01000001'
movwf ADCON0
banksel ADCON1
movlw B'00001110'
movwf ADCON1

;;;;;;;;;;;;; TMR0 Iitialization ;;;;;;;;;;;;;;;;;;n

movlw B'10000111'
movwf OPTION_REG

;;;;;;;;;;;; Delay time ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Main
banksel INTCON
btfss INTCON,T0IF
goto Main

;;;;;;;;;;; Start AD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

bcf INTCON,T0IF
bsf ADCON0,GO
;;;;;;;;;;;;;;;; Conversion Time ;;;;;;;;;;;;;;;;;;;;
nop
Wait
btfsc ADCON0,GO
goto Wait
movf ADRESH,W
sublw B'00000010'
btfss status,c
goto check1
movf ADRESH,W
sublw B'00000101'
btfss status,c
goto check2
movf ADRESH,W
sublw B'00001000'
btfss status,c
goto check3
movf ADRESH,W
sublw B'00001010'
btfss status,c
goto check4
movf ADRESH,W
sublw B'00001100'
btfss status,c
goto check5
movf ADRESH,W
sublw B'00001110'
btfss status,c
goto check6
movf ADRESH,W
sublw B'00010000'
btfss status,c
goto check7
movf ADRESH,W
sublw B'00010100'
btfss status,c
goto check8
movf ADRESH,W
sublw B'00011011'
btfss status,c
goto check9
movlw 0x7B
movwf PORTB






;;;;;;;;;;;;;;;;; Output ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movf ADRESH,W
movwf K1
swapf K1,F
movf K1,W

movwf PORTB
;---------------------------------------------------------

check1
movlw 0x7E
movwf PORTB
goto Start
check2
movlw 0x30
movwf PORTB
goto Start
check3
movlw 0x6D
movwf PORTB
goto Start
check4
movlw 0x79
movwf PORTB
goto Start
check5
movlw 0x33
movwf PORTB
goto Start
check6
movlw 0x5B
movwf PORTB
goto Start
check7
movlw 0x5F
movwf PORTB
goto Start
check8
movlw 0x70
movwf PORTB
goto Start
check9
movlw 0x7F
movwf PORTB
goto Start


;;;;;;;;;;;;;;;;;;;;;;END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end

發表於: 2009/11/6 16:43
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#8
高級會員
高級會員


查看用戶資訊
參照:

newchen86 寫道:
請問一下上癮大大阿是這樣寫嗎
1.有buildall但有錯誤,它table沒往下找只到7E而以....
2.還有這個status,c要宣告位子吧
3.請問如果用BTFSS要如何寫
謝謝


阿 ! 當然不是這樣寫的!!
check_done前的 ... , 意思是你要自己補上去 , 我懶得打:(

你知道 movf ADRESH,W 這行指令是啥意思嗎??
還有 sublw B'00000010' 是什麼 減 什麼 ??

發表於: 2009/11/5 22:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#7
新會員
新會員


查看用戶資訊
1 EQU 0x20
c=0
status EQU 0x22

org 0x000
nop
Start

;;;;;;;;;;;;; IO initialization ;;;;;;;;;;;;;;;;;;;;

banksel TRISB
movlw B'00000000'
movwf TRISB
; banksel PORTB
; clrf PORTC

;;;;;;;;;;;;; AD Initialization ::::::::::::::::::::

banksel ADCON0
movlw B'01000001'
movwf ADCON0
banksel ADCON1
movlw B'00001110'
movwf ADCON1

;;;;;;;;;;;;; TMR0 Iitialization ;;;;;;;;;;;;;;;;;;n

movlw B'10000111'
movwf OPTION_REG

;;;;;;;;;;;; Delay time ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Main
banksel INTCON
btfss INTCON,T0IF
goto Main

;;;;;;;;;;; Start AD ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

bcf INTCON,T0IF
bsf ADCON0,GO
;;;;;;;;;;;;;;;; Conversion Time ;;;;;;;;;;;;;;;;;;;;

Wait

btfsc ADCON0,GO
goto Wait
movf ADRESH,W
sublw B'00000010'
btfsc status,c
goto check1
movlw 0
goto check_done
check1
movf ADRESH,W
sublw B'00000101'
btfsc status,c
goto check2
movlw 1
goto check_done
check2
...
...
...
check_done
call TABLE
;;;;;;;;;;;;;;;;; Output ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movf ADRESH,W
movwf K1
swapf K1,F
movf K1,W

movwf PORTB

;---------------------------------------------------------
goto Main
TABLE


addwf PCL,F
retlw 0x7E
retlw 0x30
retlw 0x6D
retlw 0x79
retlw 0x33
retlw 0x5B
retlw 0x5F
retlw 0x70
retlw 0x7F
retlw 0x7B
end
請問一下上癮大大阿是這樣寫嗎
1.有buildall但有錯誤,它table沒往下找只到7E而以....
2.還有這個status,c要宣告位子吧
3.請問如果用BTFSS要如何寫
謝謝

發表於: 2009/11/5 14:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#6
高級會員
高級會員


查看用戶資訊
參照:

newchen86 寫道:
請問一下寫上癮了...我要顯示幾個數字就要寫幾個 check嗎
謝謝你的幫忙


對的 , 就像你原本也寫了好幾個 if (...)...

發表於: 2009/11/4 22:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#5
新會員
新會員


查看用戶資訊
movf ADRESH,w
sublw B'00000010'
btfsc status,c
goto check1
movlw 1
goto check_done
check1
movf ADRESH,w
sublw B'00000101'
btfsc status,c
goto check2
movlw 2
goto check_done
check2

movf ADRESH,w
sublw B'00000111'
btfsc status,c
goto check3
movlw 3
goto check_done
...
check_done
請問一下寫上癮了...我要顯示幾個數字就要寫幾個 check嗎
謝謝你的幫忙

發表於: 2009/11/4 22:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
#4
高級會員
高級會員


查看用戶資訊
參照:

newchen86 寫道:
請問一下大大可以幫忙看一下中間的判斷式要如何寫,因為我们寫的if是錯誤的,就是跳不進去所以7段才不能顯示出數質
可以請版主或高手们教一下嗎 謝謝
list    p=16f877A
    
include    <p16f877A.inc>

__CONFIG _CP_OFF _WDT_OFF _XT_OSC _LVP_OFF _BODEN_OFF


K1    EQU 0x20
ADRESH_Index EQU 0x21


    org    0x000
    nop
Start

;;;;;;;;;;;;;  IO initialization  ;;;;;;;;;;;;;;;;;;;;
    
    
banksel    TRISB
    movlw    
B'00000000'
    
movwf    TRISB
;    banksel    PORTB
;    clrf    PORTC

;;;;;;;;;;;;;  AD Initialization  ::::::::::::::::::::

    
banksel    ADCON0
    movlw    
B'01000001'
    
movwf    ADCON0
    banksel ADCON1
    movlw    
B'00001110'
    
movwf    ADCON1
    
;;;;;;;;;;;;;    TMR0  Iitialization  ;;;;;;;;;;;;;;;;;;n    

    movlw    
B'10000111'
    
movwf    OPTION_REG

;;;;;;;;;;;;   Delay time  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Main
    banksel    INTCON
    btfss    INTCON
,T0IF
    
goto    Main

;;;;;;;;;;;  Start AD  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    
bcf    INTCON,T0IF
               bsf    ADCON0
,GO
;;;;;;;;;;;;;;;;    Conversion Time  ;;;;;;;;;;;;;;;;;;;;

Wait
[d][color=0000FF]    btfss    PIR1,ADIF[/color][/d]
[
color=0000FF]    btfsc    ADCON0,GO[/color]
    goto    
Wait

[d][color=0000FF]    if (ADRESH >= B'00000000') & (ADRESH <= B'00000010')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00000011') & (ADRESH <= B'00000101')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00000110') & (ADRESH <= B'00001000')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00001001') & (ADRESH <= B'00001011')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00001100') & (ADRESH <= B'00001111')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00010000') & (ADRESH <= B'00010010')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00010011') & (ADRESH <= B'00010101')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00010110') & (ADRESH <= B'00011000')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00011001') & (ADRESH <= B'00011011')
        
movf ADRESH_Index
    
elseif    (ADRESH >= B'00011100') & (ADRESH <= B'11111111')
        
movf ADRESH_Index
    
endif[/color][/d]
[
color=0000FF]               movf     ADRESH,w
               sublw    
B'00000010'
               
btfsc     status,c
               
goto      check1
               movlw    1
               
goto      check_done
check1
               movf     ADRESH
,w
               sublw    
B'00000101'
               
btfsc     status,c
               
goto      check2
               movlw    2
               
goto      check_done
check2
...
...
...
check_done[/color]
    
call    TABLE
;;;;;;;;;;;;;;;;;  Output  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    
movf    ADRESH,W    [color=990000];這行要做啥 多餘的吧[/color]
    
movwf    K1
    swapf    K1
,F
    movf    K1
,W
    
    movwf    PORTB
    
;---------------------------------------------------------
    goto    
Main
TABLE
    banksel    ADRESH_Index      
[color=CC0000];??[/color]
[
d][color=0000FF]    movf    ADRESH_Index,W[/color][/d]
    
addwf    PCL,F
    retlw    0x7E
    retlw    0x30 
    retlw    0x6D 
    retlw    0x79 
    retlw    0x33 
    retlw    0x5B 
    retlw    0x5F 
    retlw    0x70 
    retlw    0x7F 
    retlw    0x7B 
    end


發表於: 2009/11/1 0:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------