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


Browsing this Thread:   1 Anonymous Users






Re: ADC轉換2
#5
高級會員
高級會員


查看用戶資訊
;以下為另一種假設
list p=12f675 
include <P12f675.INC
__CONFIG _PWRTE_ON _WDT_OFF _INTRC_OSC_NOCLKOUT _BODEN_OFF

ADStatus EQU 0x20
W_temp EQU 0x21
STATUS_Temp EQU 0x22
scaler EQU 0x27
Delay1 EQU 0x23
Delay2 EQU 0x24
Delay3 EQU 0x25
ADStatus1 EQU 0x26
Countms EQU 0x30
ADCloop EQU 0x31
ADloop_scaler EQU 0x32
change EQU 0x33
T1HCAP_1 EQU 0x34
T1LCAP_1 EQU 0x35
T1HCAP_2 EQU 0x36
T1LCAP_2 EQU 0x37
;***********Resect Vector***************
org 0x00
nop
goto MainLine
;************ interrupt ************** 
    
org 0x04
    
goto intService

intService
    movwf W_temp
    swapf STATUS
,w
    movwf STATUS_Temp

    btfsc PIR1
,TMR1IF
    call Timer1 
    swapf STATUS_Temp
,w
    movwf STATUS
    swapf W_temp
,f
    swapf W_temp
,w
    retfie

;********** Timer1 ***************
Timer1

    bcf PIR1
,TMR1IF
    decf scaler
,f
    clrf TMR1L 
    movlw T1HCAP_2
    movwf TMR1H
    movlw T1LCAP_2
    movwf TMR1L
    
return

;********** 
Main Program ***************
MainLine
    call Initial
MainLoop 
    bcf STATUS
,RP0 
    bsf T1CON
,TMR1ON 
    
[d][color=660000]call ADconverter[/color][/d]
          [
color=660000]goto ADconverter[/color]
;*************************************** 
turn
    movlw .2
    movwf scaler
turn_off 
    bcf STATUS
,RP0 
    bcf GPIO
,GP5 
    btfss scaler
,
    
goto turn_off 
    bsf GPIO
,GP5
    btfsc scaler
,0
    
goto turn_on
    btfsc GPIO
,GP2
    
goto turn
    call ADloop_time
    call ADloop_time
    
return
;*********
Initial Subroutine************
Initial
    bsf STATUS
,RP0 
    clrf TRISIO 
;Init GPIO
    movlw 
B'00010100'
    
movwf TRISIO 
    bcf STATUS
,RP0
    movlw 07h 
    movwf CMCON 
    
;movlw .20
    
;movwf scaler
    bcf STATUS
,RP0
    bsf GPIO
,GP2
    clrf T1CON
    clrf TMR1H
    clrf TMR1L 
    clrf INTCON
    bsf INTCON
,PEIE 
    bsf STATUS
,RP0
    clrf PIE1
    bsf PIE1
,TMR1IE 
    bcf STATUS
,RP0
    clrf PIR1 
    clrf TMR1L
    movlw 0x5
    movwf TMR1H
    movlw 0x9F 
    movwf TMR1L
    bcf T1CON
,TMR1ON bsf INTCON,GIE 
    bsf STATUS
,RP0
    clrf ADRESL
    movlw 
B'00011000'
    
movwf ANSEL
    bcf STATUS
,RP0
    clrf ADCON0
    movlw 
B'00001101' 
    
movwf ADCON0 
    clrf ADRESH
    
return
;************
A/D converter**************
ADconverter 

    movlw .2
    movwf ADCloop
ADconverter1
    bcf STATUS
,RP0 
    bsf ADCON0
,GO
    call ADloop_time 
;A/D start
    call ADloop_time
Wait1 

    btfsc ADCON0
,GO goto Wait1 
    movf ADRESH
,
    movwf Countms 
    movlw 
(.65536 Countms)/.256 
    decfsz ADCloop
,F
    movwf T1HCAP_1
    btfss ADCloop
,0
    
[d][color=660000]call ADT2temp[/color][/d]
          [
color=990000]goto ADT2temp[/color]
    
call ADloop_time
    call ADloop_time
    call ADloop_time
    
goto ADconverter1 
ADT2temp
    movwf T1HCAP_2
    xorwf T1HCAP_1
,F
    btfsc STATUS
,
    
goto Wait2
    
goto ADconverter1
Wait2 
    movlw 
(.65536 Countms)%.256
    movwf T1LCAP_2 
    call turn 
    
goto MainLoop
;------------------------------------------------------------------------------
ADloop_time
;------------------------------------------------------------------------------
Delay1ms:

    
movlw .198
    movwf Delay1

Delay1ms_01
:
    
decfsz Delay1F
    
goto Delay1ms_01
    
return


ADloop_time 
    movlw .100 
    movwf ADloop_scaler 
ADloop_time1
    call Delay1ms
    decfsz ADloop_scaler
,F
    
goto ADloop_time1
    
return 
    
end

發表於: 2009/6/21 12:35
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: ADC轉換2
#4
高級會員
高級會員


查看用戶資訊
list p=12f675 
include <P12f675.INC
__CONFIG _PWRTE_ON _WDT_OFF _INTRC_OSC_NOCLKOUT _BODEN_OFF

ADStatus EQU 0x20
W_temp EQU 0x21
STATUS_Temp EQU 0x22
scaler EQU 0x27
Delay1 EQU 0x23
Delay2 EQU 0x24
Delay3 EQU 0x25
ADStatus1 EQU 0x26
Countms EQU 0x30
ADCloop EQU 0x31
ADloop_scaler EQU 0x32
change EQU 0x33
T1HCAP_1 EQU 0x34
T1LCAP_1 EQU 0x35
T1HCAP_2 EQU 0x36
T1LCAP_2 EQU 0x37
;***********Resect Vector***************
org 0x00
nop
goto MainLine
;************ interrupt ************** 
    
org 0x04
    
goto intService

intService
    movwf W_temp
    swapf STATUS
,w
    movwf STATUS_Temp

    btfsc PIR1
,TMR1IF
    call Timer1 
    swapf STATUS_Temp
,w
    movwf STATUS
    swapf W_temp
,f
    swapf W_temp
,w
    retfie

;********** Timer1 ***************
Timer1

    bcf PIR1
,TMR1IF
    decf scaler
,f
    clrf TMR1L 
    movlw T1HCAP_2
    movwf TMR1H
    movlw T1LCAP_2
    movwf TMR1L
    
return

;********** 
Main Program ***************
MainLine
    call Initial
MainLoop 
    bcf STATUS
,RP0 
    bsf T1CON
,TMR1ON 
    call ADconverter
           
[color=660000]goto MainLoop[/color]
;*************************************** 
turn
    movlw .2
    movwf scaler
turn_off 
    bcf STATUS
,RP0 
    bcf GPIO
,GP5 
    btfss scaler
,
    
goto turn_off 
    bsf GPIO
,GP5
    btfsc scaler
,0
    
goto turn_on
    btfsc GPIO
,GP2
    
goto turn
    call ADloop_time
    call ADloop_time
    
return
;*********
Initial Subroutine************
Initial
    bsf STATUS
,RP0 
    clrf TRISIO 
;Init GPIO
    movlw 
B'00010100'
    
movwf TRISIO 
    bcf STATUS
,RP0
    movlw 07h 
    movwf CMCON 
    
;movlw .20
    
;movwf scaler
    bcf STATUS
,RP0
    bsf GPIO
,GP2
    clrf T1CON
    clrf TMR1H
    clrf TMR1L 
    clrf INTCON
    bsf INTCON
,PEIE 
    bsf STATUS
,RP0
    clrf PIE1
    bsf PIE1
,TMR1IE 
    bcf STATUS
,RP0
    clrf PIR1 
    clrf TMR1L
    movlw 0x5
    movwf TMR1H
    movlw 0x9F 
    movwf TMR1L
    bcf T1CON
,TMR1ON bsf INTCON,GIE 
    bsf STATUS
,RP0
    clrf ADRESL
    movlw 
B'00011000'
    
movwf ANSEL
    bcf STATUS
,RP0
    clrf ADCON0
    movlw 
B'00001101' 
    
movwf ADCON0 
    clrf ADRESH
    
return
;************
A/D converter**************
ADconverter 

    movlw .2
    movwf ADCloop
ADconverter1
    bcf STATUS
,RP0 
    bsf ADCON0
,GO
    call ADloop_time 
;A/D start
    call ADloop_time
Wait1 

    btfsc ADCON0
,GO goto Wait1 
    movf ADRESH
,
    movwf Countms 
    movlw 
(.65536 Countms)/.256 
    decfsz ADCloop
,F
    movwf T1HCAP_1
    btfss ADCloop
,0
    call ADT2temp
    call ADloop_time
    call ADloop_time
    call ADloop_time
    
goto ADconverter1 
[color=660000];---------------------我假設你希望程式在 ADconverter1作無窮迴路[/color]
ADT2temp
    movwf T1HCAP_2
    xorwf T1HCAP_1
,F
    btfsc STATUS
,
    
goto Wait2
    
[d][color=660000]goto ADconverter1[/color][/d]
          [
color=660000]return[/color]
               
Wait2 
    movlw 
(.65536 Countms)%.256
    movwf T1LCAP_2 
    call turn 
    
[d][color=660000]goto MainLoop[/color][/d]
           [
color=660000]return[/color]
;------------------------------------------------------------------------------
ADloop_time
;------------------------------------------------------------------------------
Delay1ms:

    
movlw .198
    movwf Delay1

Delay1ms_01
:
    
decfsz Delay1F
    
goto Delay1ms_01
    
return


ADloop_time 
    movlw .100 
    movwf ADloop_scaler 
ADloop_time1
    call Delay1ms
    decfsz ADloop_scaler
,F
    
goto ADloop_time1
    
return 
    
end

;=================================
;我只看你的程式結構 , 細節自行處理

發表於: 2009/6/21 12:23

Edited by genitec on 2009年06月21日 12:39:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: ADC轉換2
#3
新會員
新會員


查看用戶資訊
好心的大大
這我有改過在mainloop最後寫 goto mainloop,在call turn最後寫return,結果是會回到call ADT2temp,有另外指令可以逃過媽....^^!!!

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


Re: ADC轉換2
#2
資深會員
資深會員


查看用戶資訊
MainLoop
bcf STATUS,RP0
bsf T1CON,TMR1ON
call ADconverter <------CALL
.
.
.
.
return <--------Return ???? /GOTO MainLoop

;***************************************
ADconverter
.
.
.
call turn
goto MainLoop <----GOTO ???? / RETURN

ASM 程式架構 非常非常重要..

發表於: 2009/6/20 16:24
少年不知愁滋味,老來方知路難行。
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


ADC轉換2
#1
新會員
新會員


查看用戶資訊
小弟繼續經由討論(一)延伸出來做實驗,發現有時候這樣的寫法movlw ADRESH,和MOVF ADRESH , W有時候有值有時候沒有(怪….),這是新寫的,以AN3為可調VR的10K電阻,GP5仍為輸出,用GP2作為切換開關,..,也曾經改變過為MOVF ADRESH , W還是沒有用,用一個禮拜去了仍無結果,再猜是不是時間的不足造成,再次請教個位大大先進前輩們,幫幫小弟…..^^!!!嗚嗚.
list p=12f675
include <P12f675.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF

ADStatus EQU 0x20
W_temp EQU 0x21
STATUS_Temp EQU 0x22
scaler EQU 0x27
Delay1 EQU 0x23
Delay2 EQU 0x24
Delay3 EQU 0x25
ADStatus1 EQU 0x26
Countms EQU 0x30
ADCloop EQU 0x31
ADloop_scaler EQU 0x32
change EQU 0x33
T1HCAP_1 EQU 0x34
T1LCAP_1 EQU 0x35
T1HCAP_2 EQU 0x36
T1LCAP_2 EQU 0x37
;***********Resect Vector***************
org 0x00
nop
goto MainLine
;************ interrupt **************
org 0x04
goto intService

intService
movwf W_temp
swapf STATUS,w
movwf STATUS_Temp

btfsc PIR1,TMR1IF
call Timer1
swapf STATUS_Temp,w
movwf STATUS
swapf W_temp,f
swapf W_temp,w
retfie

;********** Timer1 ***************
Timer1

bcf PIR1,TMR1IF
decf scaler,f
clrf TMR1L
movlw T1HCAP_2
movwf TMR1H
movlw T1LCAP_2
movwf TMR1L
return

;********** Main Program ***************
MainLine
call Initial
MainLoop
bcf STATUS,RP0
bsf T1CON,TMR1ON
call ADconverter
;***************************************
turn
movlw .2
movwf scaler
turn_off
bcf STATUS,RP0
bcf GPIO,GP5
btfss scaler,0
goto turn_off
bsf GPIO,GP5
btfsc scaler,0
goto turn_on
btfsc GPIO,GP2
goto turn
call ADloop_time
call ADloop_time
return
;*********Initial Subroutine************
Initial
bsf STATUS,RP0
clrf TRISIO ;Init GPIO
movlw B'00010100'
movwf TRISIO
bcf STATUS,RP0
movlw 07h
movwf CMCON
;movlw .20
;movwf scaler
bcf STATUS,RP0
bsf GPIO,GP2
clrf T1CON
clrf TMR1H
clrf TMR1L
clrf INTCON
bsf INTCON,PEIE
bsf STATUS,RP0
clrf PIE1
bsf PIE1,TMR1IE
bcf STATUS,RP0
clrf PIR1
clrf TMR1L
movlw 0x5
movwf TMR1H
movlw 0x9F
movwf TMR1L
bcf T1CON,TMR1ON bsf INTCON,GIE
bsf STATUS,RP0
clrf ADRESL
movlw B'00011000'
movwf ANSEL
bcf STATUS,RP0
clrf ADCON0
movlw B'00001101'
movwf ADCON0
clrf ADRESH
return
;************A/D converter**************
ADconverter

movlw .2
movwf ADCloop
ADconverter1
bcf STATUS,RP0
bsf ADCON0,GO
call ADloop_time ;A/D start
call ADloop_time
Wait1

btfsc ADCON0,GO goto Wait1
movf ADRESH,W
movwf Countms
movlw (.65536 - Countms)/.256
decfsz ADCloop,F
movwf T1HCAP_1
btfss ADCloop,0
call ADT2temp
call ADloop_time
call ADloop_time
call ADloop_time
goto ADconverter1
ADT2temp
movwf T1HCAP_2
xorwf T1HCAP_1,F
btfsc STATUS,Z
goto Wait2
goto ADconverter1
Wait2
movlw (.65536 - Countms)%.256
movwf T1LCAP_2
call turn
goto MainLoop
;------------------------------------------------------------------------------
; ADloop_time
;------------------------------------------------------------------------------
Delay1ms:

movlw .198
movwf Delay1

Delay1ms_01:
decfsz Delay1, F
goto Delay1ms_01
return


ADloop_time
movlw .100
movwf ADloop_scaler
ADloop_time1
call Delay1ms
decfsz ADloop_scaler,F
goto ADloop_time1
return
end

發表於: 2009/6/20 16:15
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... ]

教育訓練中心

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