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

論壇索引


Board index » All Posts (e0958303)




請各位高手幫忙一下
#1
新會員
新會員


我接一個放大電路讓電壓放大.用pic量測鋰電池電壓.把電
壓傳回vb上面秀出來.下面程式應該如何修改呢?可以幫幫
我嘛.
PROCESSOR P16F877
INCLUDE <P16F877.INC>
;連續取96點的資料在回傳至電腦
;中段時間&取樣時間點=10US
;PIC採20MHZ計時中斷0-->當作取樣時間
;在一次回傳96byte回電腦

#DEFINE SIMVAL .10 ;取樣點
#DEFINE AD_INT_START H'A0'
;數值儲存位址 <0A0H~EFH>
#DEFINE TX_DATA_REG H'A0'
;傳送資料起始傳送位址 <ADDRESS 0A0H>
#DEFINE USART_BOUND_RATE D'21' ;設定非
同步鮑率<57600BPS>

AD_CC EQU 20H
;A/D轉換完成值所暫存的位址
TX_DD EQU 22H
;判斷傳96筆資料給VB所暫存的位址
RC_DATA_2 EQU 26H
;
PORTD_OUT EQU 27H


ORG 0000H
NOP
GOTO MAIN_ST

;------------------------------------------------中斷程式
ORG 0004H
NOP
BANKSEL ADCON0
AD_TRN
BSF ADCON0,GO
;開始轉換
BTFSC ADCON0,GO
;判斷是否轉換完成
GOTO $-1
MOVF ADRESH,W ;A/D
Result Register
MOVWF AD_CC
CALL SAVEINT
;呼叫續存96筆資料副程式
EE_END
BCF PIR1,TMR2IF
;RESET TIMER2
BANKSEL PIE1
RETFIE

;------------------------------------------------程式啟始
MAIN_ST
CALL SET232
;設定RS232參數,啟動GIE、PEIE
BANKSEL PR2
;設定週期PR2-->>BNAK1
MOVLW SIMVAL
;剛好為1/60/128=130Us取樣時間
MOVWF PR2
BANKSEL TRISD

MOVLW H'00'
;設定PORTD為輸出模式
MOVWF TRISD
BANKSEL T2CON
MOVLW B'00000101' ;1:4預
除、1:1後除
MOVWF T2CON
;設定TIMER2
MAIN
MOVLW D'80'
MOVWF TX_DD
MOVLW H'00'
MOVWF RC_DATA_0
MOVWF RC_DATA_1
MOVWF RC_DATA_2
MAIN1
CALL RC_IN
;呼叫資料接收副程式

MOVF RC_DATA_2,W
;比對是否已按了顯示控制波型(I'73')
SUBLW D'73'
BTFSS STATUS,Z
GOTO $+3
CALL AD1
;啟用AD轉換器CH1
GOTO MAIN3
MOVF RC_DATA_2,W
;比對是否已按了顯示輸入波型(J'74')
SUBLW D'74'
BTFSS STATUS,Z
GOTO $+3
CALL AD0
;啟用AD轉換器CH0
GOTO MAIN3
MOVF RC_DATA_2,W
;比對是否已按了顯示輸出波型(K'75')
SUBLW D'75'
BTFSS STATUS,Z
GOTO MAIN2
CALL AD3
;啟用AD轉換器CH3
GOTO MAIN3

MAIN2
MOVF RC_DATA_1,W
SUBLW D'55'
CALL DUTY_CYCLE
MOVWF PORTD_OUT
MOVF RC_DATA_0,W
SUBLW D'69'
CALL FREQUENCY
IORWF PORTD_OUT,W
MOVWF PORTD
GOTO MAIN1

MAIN3
MOVLW AD_INT_START
;數值儲存起始位址
MOVWF FSR

BANKSEL PIE1
BSF PIE1,TMR2IE
;啟動計時中斷2
BTFSC PIE1,TMR2IE
;判斷是否已續存128筆資料
GOTO $-1
MOVLW TX_DATA_REG
;數值儲存起始位址
MOVWF FSR
CALL TX_OUT
;呼叫資料傳送副程式
DECFSZ TX_DD
;判斷是否續傳96筆資料回VB
GOTO $-2
GOTO MAIN

--------------------------------------------------------------------------------
想哭 位置:61.219.150.130 時間:2004/09/28-03:59:21
回應主題:RE:徵高手,如何書寫pic程式.來量測鋰電池電壓 第 6 篇回應

;------------------------------------------------設定RS232參數,啟
動GIE、PEIE副程式
SET232
BANKSEL SPBRG ;BANK1
MOVLW USART_BOUND_RATE ;設定非
同步鮑率<57600BPS>
MOVWF SPBRG
;
MOVLW B'00100100' ;載入常
數24H到TXSTA
MOVWF TXSTA
BANKSEL RCSTA
;BANK0
MOVLW B'10010000'
MOVWF RCSTA
BANKSEL PIE1
;BANK1
MOVLW B'11000000' ;致能全
域及通訊埠接收中斷
MOVWF INTCON

RETURN

;------------------------------------------------判斷及續存128筆資
料副程式
SAVEINT
MOVF AD_CC,W
MOVWF INDF
INCF FSR,F
;將FSR位址指向下一個位址
MOVF FSR,W

SUBLW H'F0'
BTFSS STATUS,Z ;判斷是
否已續存96筆資料
GOTO ASDOUT
BANKSEL PIE1
BCF PIE1,TMR2IE
;停止計時中斷2
ASDOUT
CLRF STATUS
RETURN

;------------------------------------------------AD0轉換副程式
AD0
;使用CH0通道
BANKSEL ADCON1
; ADCON1 is in bank1 ; 3 ch(AN0)/0 refs
MOVLW B'00000100' ; select
left(0) justified (d7)
MOVWF ADCON1
BANKSEL ADCON0
MOVLW B'10000001' ; select
Fosc/8(01), AN0(000)
MOVWF ADCON0
; a/d done(2), x(0), a/d ON(1)
BSF STATUS,RP0
BSF TRISA,0
BCF STATUS,RP0
RETURN

;------------------------------------------------AD1轉換副程式
AD1
;使用CH1通道
BANKSEL ADCON1
; ADCON1 is in bank1 ; 3 ch(AN0)/0 refs
MOVLW B'00000100' ; select
left(0) justified (d7)
MOVWF ADCON1
BANKSEL ADCON0
MOVLW B'10001001' ; select
Fosc/8(01), AN0(000)
MOVWF ADCON0
; a/d done(2), x(0), a/d ON(1)
BSF STATUS,RP0
BSF TRISA,1
BCF STATUS,RP0
RETURN


--------------------------------------------------------------------------------
想哭 位置:61.219.150.130 時間:2004/09/28-03:59:41
回應主題:RE:徵高手,如何書寫pic程式.來量測鋰電池電壓 第 7 篇回應

;------------------------------------------------AD3轉換副程式
AD3
;使用CH0通道
BANKSEL ADCON1
; ADCON1 is in bank1 ; 3 ch(AN0)/0 refs
MOVLW B'00000100' ; select
left(0) justified (d7)
MOVWF ADCON1
BANKSEL ADCON0
MOVLW B'10011001' ; select
Fosc/8(01), AN0(000)
MOVWF ADCON0
; a/d done(2), x(0), a/d ON(1)
BSF STATUS,RP0
BSF TRISA,3
BCF STATUS,RP0
RETURN

;------------------------------------------------接收VB資料副程式
RC_IN

CLRF STATUS

BTFSS PIR1,RCIF ;判斷
PIR1,RCIF是否有接收到一筆資料
GOTO $-1

MOVF RCREG,W

MOVWF RC_DATA_0
;把接收到的資料儲存至RC_DATA_0
CLRF STATUS
;
BTFSS PIR1,RCIF ;判斷
PIR1,RCIF是否有接收到一筆資料
GOTO $-1

MOVF RCREG,W

MOVWF RC_DATA_1
;把接收到的資料儲存至RC_DATA_1
CLRF STATUS
BTFSS PIR1,RCIF ;判斷
PIR1,RCIF是否有接收到一筆資料
GOTO $-1

MOVF RCREG,W

MOVWF RC_DATA_2
;把接收到的資料儲存至RC_DATA_1
CLRF STATUS
RETURN

;------------------------------------------------資料傳送回VB副程

TX_OUT
MOVF INDF,W
BANKSEL TXREG
MOVWF TXREG
;USART Transmit Data Register
BTFSS PIR1,TXIF ;延遲時
間到STOP-BIT傳送完畢
GOTO $-1
BCF PIR1,TXIF
BSF STATUS,RP0
BTFSS TXSTA,TRMT
;延遲時間到TXSR移出所有資料
GOTO $-1
BCF TXSTA,TRMT
INCF FSR,F
CLRF STATUS
RETURN
END


發表於: 2004/10/13 1:22
頂部


Re: PIC與RS323間傳輸
#2
新會員
新會員


是PIC16F87X這顆單晶片

發表於: 2004/10/4 23:59
頂部


PIC與RS323間傳輸
#3
新會員
新會員


請問一下,有人知道PIC與RS323間傳輸,的程式要怎麼寫嗎??

發表於: 2004/10/4 0:59
頂部






:::

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

教育訓練中心

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