• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (newchen86)




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


參照:

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
頂部


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


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晶片<組合語言的判斷式如何寫>
#3
新會員
新會員


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晶片<組合語言的判斷式如何寫>
#4
新會員
新會員


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晶片<組合語言的判斷式如何寫>
#5
新會員
新會員


<組合語言的>我是用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晶片<組合語言的判斷式如何寫>
#6
新會員
新會員


請問一下大大可以幫忙看一下中間的判斷式要如何寫,因為我们寫的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
頂部






:::

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... ]

教育訓練中心

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