:::

論壇索引


Board index » All Posts




為何變數無法致能? (版主加註:有關PIC18F252)
高級會員
高級會員


請教各位...

為何我程式執行時...

使用Watch視窗觀看變數..

剛開始幾行都ok...

可是執行(單步執行)到下面幾行卻沒照指令執行...

也就是都無法對該變數給予致能...

bcf TXSTA,SYNC
bsf RCSTA,SPEN
bsf TXSTA,TXEN

是否為小弟解開迷惑...

感激不盡...

PIC串列傳送程式:

list p=18F252
#include<p18F252.INC>
trans_c equ 0x20
;**********************
org 0x00
nop
initial:
movlw .3
movwf trans_c ;設定trans_c次數為3次
banksel SPBRG
movlw .129 ;Baud Rate=1200 bps
movwf SPBRG
banksel TXSTA
bcf TXSTA,SYNC ;SYNC設定為0
banksel RCSTA
bsf RCSTA,SPEN ;SPEN設定為1
banksel TXSTA
bsf TXSTA,TXEN ;TXEN設定為1
Trans:
banksel TXSTA
btfss TXSTA,TRMT
goto Trans
banksel TXREG
movlw 0x55
movwf TXREG
banksel trans_c
decfsz trans_c,f
goto Trans
end

發表於: 2004/10/2 17:38
頂部


Re: IIC通訊異常的情形...
版主
版主


我覺得,有可能是MASTER一直等不到ACK,不死心,一直在那裏等..............。
曾經用軟體做MASTER端程式的時候,加入一條件,只要等不到ACK超過一段時間,亦即做所謂ACK POLLING的動作很多次仍等不到ACK,就跳開。
沒用硬體做MASTER時測過。也許,要看一下資料手冊,看硬體有沒有特定的FLAG考慮這類情況。如果沒有,應該就是要自己考慮了。

發表於: 2004/10/2 12:00
頂部


Re: 有關AD轉換器的指令想請各位指導
版主
版主


現有有空:

ADC_FOSC_2: 是指轉換一個BIT的資料所要花的時間單位TE設定為2個TCY (或TOSC, 要再查)

ADC_RIGHT_JUST: 10或12BIT的ADC轉換結果,靠右對齊,放在2個BYTE的ADRES暫存器中,亦即ADRESH的MSB 4BIT或6BIT補0。

ADC_1ANA_2REF: 設定為只有類比通道,同時有2隻腳當作參考電壓。

ADC_CH0: 類比通道切到CH0

ADC_INT_OFF: 關閉ADC中斷的功能。

詳情還是要看DATA SHEET。

發表於: 2004/10/2 11:47
頂部


Re: 搜尋VB高手...
高級會員
高級會員


非常感謝crete_hsu的熱心解答...

答案簡潔有力....

謝囉....

麻煩再幫忙解決一下...

VB-如何選擇Hand shaking

Q1:
Hand shaking 該如何選擇...
0 - comNone
1 - comXOnXoff
2 - comRTS
3 - comRTSXOnOff

Q2:
0 - 3 個別意義及其差別?!

發表於: 2004/10/2 9:52
頂部


Re: 搜尋VB高手...
新會員
新會員


buf = Trim(MSComm1.Input)
意思是把一字串讀進來去除前後空白空格

buf = Val(MSComm1.Input) 有什麼差別嗎?
意思是把讀進來自串轉換成數值

If Len(buf)=0 Then
.....Len()?是什麼意思
意思是計算buf內自串長度
那段意思是說
如果讀進來buf是空的
在t1顯示窗顯示出 empty
如果讀進來buf不是空的
在t1顯示窗顯示出buf的值

發表於: 2004/10/2 2:06
頂部


搜尋VB高手...
高級會員
高級會員


請問各位高手...

我現在是用PIC18F252這顆IC...

透過 RS-232 用VB程式接收...

我現在先參考書籍(VB接收程式)..

可我搞不清楚幾個問題?

VB的書又找不到這些指令....

各位能否撥空幫我解答一下?

感激不盡....

VB程式

Private Sub Command1_Click()
Dim buf$
buf = Trim(MSComm1.Input)
If Len(buf) = 0 Then
T1.Text = "empty"
Else
T1.Text = buf
End If
MSComm1.PortOpen = False
End Sub

Q1:
buf = Trim(MSComm1.Input)
......Trim ? 是從電腦端(port1)抓值出來嗎?

Q2:
跟 buf = Val(MSComm1.Input) 有什麼差別嗎?

Q3:
If Len(buf)=0 Then
.....Len()?是什麼意思?

發表於: 2004/10/1 23:06
頂部


IIC通訊異常的情形...
資深會員
資深會員


我現在有個問題
若slave裝置沒接
或是原本有接,通訊到一半突然中斷
(裝置損壞,雜訊干擾...)
這時master等待一段時間沒收到回應後要中斷通訊
那麼有必要先發出停止條件嗎?

我現在一顆master控制兩顆slave
一顆是DAC,一顆是同型PIC
目前跟slave的pic通訊到一半時突然中斷(我故意的)
結果master就死在不知道哪個迴圈裡出不來了
不知道是不是我沒丟停止條件的關係...

各個範例中看到的都是正常通訊狀態
沒有寫說如果通訊異常時該如何處理
是直接離開通訊副程式
還是要再做哪些事情才能離開通訊?

發表於: 2004/10/1 17:36
頂部


Re: dspic中的 frame pointer 是要做何用
版主
版主


1. W14 can be used as a stack frame pointer (FP)
2. LNK #N ; Allocates (N-2)/2 words of local storage
- W14 (prior stack FP) is stacked; W15 is incremented
- W15 value saved in W14 (new FP, start of local storage)
- W15 advanced by N/2 words (end of local storage + 1 word) (i.e. N must be an even number to keep stack word aligned)
- [W14 + y] accesses local storage for function call where: 0 <= y <= N-2
- W14 with a -ve offset accesses parameters from calling routine
3. ULNK ; De-allocates temporary storage space
- Restores W14 (start of local storage) to W15
- W15 decremented then stack popped into W14 (prior stack FP).

發表於: 2004/10/1 16:57
頂部


Re: dspic中的 frame pointer 是要做何用
版主
版主


假設您跳到了某一個副程式,此時,W15 (堆疊指標)會指到下一個可用的位置 ( 以byte為單位)。
如果此時您下了LNK #0x4 這個指令的話,會發生以下的事情:
1、W14的值會先被存在堆疊中,W15指到下一個可用的位置,亦即W15+2-> W15
2、接著,W14會等於新的W15的值。
3、然後,W15+4-> W15
也就是說,您可以利用LNK #0X4,在堆疊區開出4個BYTE的,通常是暫時性的,儲存空間。

發表於: 2004/10/1 16:40
頂部


Re: 30f2010燒入後,程式無法正常執行
版主
版主


忘了問,是否有使用到 QEI ???

在ICD2 Debug Mode 暫存器 "ADPCFG" 會被設定為 0xFFFF,PORTB 及 QEI 功能可以呈現出來。
但在 Stand Alone Mode 下,Power-On Reset 會將暫存器 "ADPCFG" 清除為0x0000,結果會將導致QEI無法在類比模式的輸入PIN工作。

解決方式是將PORTB設為數位模式,方式如下:
ADPCFGbits = 0x00nn; (where nn is the value for configuring the PORTB pins to digital)

發表於: 2004/10/1 15:56
頂部



« 1 ... 7169 7170 7171 (7172) 7173 7174 7175 ... 7287 »