Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
|
||||
---|---|---|---|---|
新會員
|
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
|
|||
|
Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
|
||||
---|---|---|---|---|
新會員
|
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
|
|||
|
Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
|
||||
---|---|---|---|---|
新會員
|
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
|
|||
|
Re: 有關pic16f877晶片<組合語言的判斷式如何寫>
|
||||
---|---|---|---|---|
新會員
|
<組合語言的>我是用RA0可變電阻調轉使數質0.1.2.3.4.5.6.7.8.9顯示在7段上的,所以可以請各為大大給我一個範列要如著手<是像下面這樣嗎>,還有我後面有接table所以應該是把call table插在判斷式中嗎??
謝謝回答 SUBLW B'00001000' BTFSS STATUS,Z ; GOTO MOTOR1 BSF PORTB,0 ; BSF PORTB,1 ; GOTO MAIN
發表於: 2009/10/31 16:32
|
|||
|
有關pic16f877晶片<組合語言的判斷式如何寫>
|
||||
---|---|---|---|---|
新會員
|
請問一下大大可以幫忙看一下中間的判斷式要如何寫,因為我们寫的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 btfss PIR1,ADIF goto Wait 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 call TABLE ;;;;;;;;;;;;;;;;; Output ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; movf ADRESH,W movwf K1 swapf K1,F movf K1,W movwf PORTB ;--------------------------------------------------------- goto Main TABLE banksel ADRESH_Index movf ADRESH_Index,W 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/10/30 21:41
|
|||
|