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

論壇索引


Board index » All Posts (cat520)




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


謝謝版主的回答...
我想我需要再把PIC18FXX2 Data Sheet再好好看過...
因為我沒注意到[d],[a]沒寫時會自動用預設值...
得好好kk書囉!

發表於: 2004/10/7 20:32
頂部


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


沒關係版主...
還是很感謝您的回答!
我會再試著改看看的!
再請教您幾個問題(本篇會有點長喔!)
Q1:
您所說的有關Bank的切換...
意思是說..
指要是在SFR裡的暫存器都不須使用切換指令?!
請問是如我下面程式所說的意思嗎?!

PIC指令:

initial:
movlw .3
movwf trans_c
banksel SPBRG...........略!
movlw .129
movwf SPBRG
banksel TXSTA...........略!
bcf TXSTA,SYNC
banksel RCSTA...........略!
bsf RCSTA,SPEN
banksel TXSTA...........略!
bsf TXSTA,TXEN
Trans:
banksel TXSTA...........略!
btfss TXSTA,TRMT
goto Trans
banksel TXREG...........略!
movlw 0x55
movwf TXREG
banksel trans_c.........不可略!
decfsz trans_c,f
goto Trans
end

Q2:
請問18F系列的指令最後不是有個[a]嗎?
EX:
BCF f,b,[a]
If 'a' is 0, the Access Bank will be selected,overriding the BSR value
If 'a'=1,then the bank will be selected as per the BSR value(default)
1. 不好意思,我不太懂如何選擇[a]為'0' or '1' ? 該如何選擇?
2. 選'0' or '1'個別是什麼意思?
3. 我看有些18系列的範例並沒使用到[a]?又是怎麼一回事呢?
Q3:
在Q1裡的程式指令是16系列的指令...
為何我將指令改為18系列的執行時會不太正確...
反而用原本16系列的指令可以正確的執行...
1. 難道18FXXX的IC可以接受16系列的指令?!
2. 不知還是我指令改錯嗎?

(麻煩對照Q1的程式指令)

initial:
movlw .3
movwf trans_c,0
banksel SPBRG
movlw .129
movwf SPBRG,0
banksel TXSTA
bcf TXSTA,4,0 ...SYNC
banksel RCSTA
bsf RCSTA,7,0 ...SPEN
banksel TXSTA
bsf TXSTA,5,0 ...TXEN
Trans:
banksel TXSTA
btfss TXSTA,1,0 ...TRMT
goto Trans
banksel TXREG
movlw 0x55
movwf TXREG,0
banksel trans_c
decfsz trans_c,1,0
goto Trans
end

發表於: 2004/10/6 10:49
頂部


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


現在指令的執行好像都OK..
請問一下版主...
指令執行到最後一行"goto Trans"都屬正常..
TRMT也被致能變為"1"...
也確實跳到Trans...
Q1:
可是好像TRMT從此就一直是滿的"1"狀態...
是代表資料傳已經出去了..
但VB端接收不到...
指令就一直在
"banksel TXSTA
btfss TXSTA,TRMT
goto Trans"
三行打轉....
因為TMRT一直為滿的?!
Q2:
還有我VB程式一執行就發生錯誤...
" Run - time error '8005'
Port already open "

請問這是什麼原因....

VB程式
Private Sub C1_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
..............................................

Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub

發表於: 2004/10/5 22:03
頂部


Re: 為何變數無法致能?
#94
高級會員
高級會員


版主...
我想我已經了解你說的意思了...
因為我是看著16系列的書開始入門...
但我用的是18系列的IC...
我只注意到要修改標頭檔而已..
卻忽略了指令部份...
原來指令也已經變了...
我再修改程式指令試試...
多謝你的指點...

發表於: 2004/10/5 15:40
頂部


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


非常感謝各位的指導....
解開迷惑小弟多日的問題...
我會繼續加油的...
除了感謝還是感謝!!
以後希望大家還是不吝賜教...
ps:
http://www.usblab.idv.tw/
進不去ㄋㄟ!
有其他網址可進嗎?
我很想進去看看.....

發表於: 2004/10/5 9:42
頂部


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


版主不好意思....
你所建議我看的部份我已經下載看過了...
可是我還不是很了解你所指我不熟指令的使用語法的意思...
可否麻煩你再說明白一點...
是我所寫的指令有錯誤?!
還是致能的指令錯誤?!
還是哪個觀念有誤?!
麻煩再不厭其煩的指點我一下....

發表於: 2004/10/4 20:41
頂部


Re: 為何變數無法致能?
#97
高級會員
高級會員


謝謝版主的答覆...
的確我是這方面的新手...
對於您的建議我會再好好研究一下...
以後請多多指教!

發表於: 2004/10/4 11:32
頂部


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


請教各位...

為何我程式執行時...

使用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: 搜尋VB高手...
#99
高級會員
高級會員


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

答案簡潔有力....

謝囉....

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

VB-如何選擇Hand shaking

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

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

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


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



« 1 ... 7 8 9 (10)



:::

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

教育訓練中心

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