會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



(1) 2 »


想請問中斷
新會員
註冊日期:
2007/01/22 23:33
所屬群組:
註冊會員
文章: 15
等級: 2; EXP: 62
HP : 0 / 40
MP : 5 / 1266
離線
INTSUB1:
MOVWF W_TEMP SWAPF STATUS,W MOVWF STATUS_TEMP
DECFSZ COUNT0,F
GOTO ISR_END1 COMF PORTC,0
MOVLW .5 MOVWF COUNT0
ISR_END1:
BCF PIR1,TMR1IF
CLRF TMR1H CLRF TMR1L
SWAPF STATUS_TEMP,W MOVWF STATUS
SWAPF W_TEMP,F SWAPF W_TEMP,W
RETFIE
請問一下中斷最後都會有
RETFIE
它的值是等中斷結束在跳回
還是直接就回去中斷點
我有一點疑惑的是
重設TIMER1就應該重新計時了
可是如果程式跑到 RETFIE
還沒計時完 那會等計時完在跳回嗎
我有哪裡搞錯了
因為上面的程式
他進入中斷就先備份資料
之後取補數
就又還原了
有點搞不清楚

2007/02/13 01:41
轉換PDF檔 列印


Re: 想請問中斷
新會員
註冊日期:
2007/01/22 23:33
所屬群組:
註冊會員
文章: 15
等級: 2; EXP: 62
HP : 0 / 40
MP : 5 / 1266
離線
INTSUB1:
MOVWF W_TEMP

SWAPF STATUS,W

MOVWF STATUS_TEMP

DECFSZ COUNT0,F

GOTO ISR_END1

COMF PORTC,0

MOVLW .5

MOVWF COUNT0

ISR_END1:

BCF PIR1,TMR1IF

CLRF TMR1H

CLRF TMR1L

SWAPF STATUS_TEMP,W

MOVWF STATUS

SWAPF W_TEMP,F

SWAPF W_TEMP,W

RETFIE

2007/02/13 01:43
轉換PDF檔 列印


Re: 想請問中斷
資深會員
註冊日期:
2004/05/20 15:23
所屬群組:
註冊會員
文章: 515
等級: 20; EXP: 94
HP : 0 / 498
MP : 171 / 19427
離線
我一直有個問題
看過好幾個人在中斷中會執行swapf
就如樓上所寫的
進入中斷後先SWAPF再丟入備份暫存檔中
離開後再從暫存檔中SWAPF到狀態暫存器
而最後再SWAPF兩次到W

我想請問為何要做SWAPF的動作
為啥不直接MOVF MOVWF 就好?
雖然說我從沒做過SWAPF也都沒出問題過
但就是有疑問...
產生中斷後就要趕快把事情做完趕快離開
為啥要多花幾個指令時間做交換?!

剛剛看了樓上的程式
雖然我不懂你想問的意思
不過我看到一個怪地方
你執行了
COMF PORTC,0
這一行的意思是把PORTC的值全部反相再放到W
下一行你就把5放到W
就把上一行的值改掉了

如果你的意思是要把RC0反相的話
那你應該執行BTG PORTC,0
COMF是反相整個暫存器
BTG 是反相一個位元

2007/02/13 08:41
_________________
木亟缶夬金戔
彳艮缶夬金戔
走召缶夬金戔
轉換PDF檔 列印


Re: 想請問中斷
新會員
註冊日期:
2004/11/17 10:26
所屬群組:
註冊會員
文章: 20
等級: 3; EXP: 20
HP : 0 / 55
MP : 6 / 2065
離線
因為如果你用SWAP的指令執行完這種指令他是不會影響到你的任何旗標的狀態,如果你用MOVF這種指令他是會影響到你的Z旗標的

2007/02/13 08:57
轉換PDF檔 列印


Re: 想請問中斷
資深會員
註冊日期:
2004/05/20 15:23
所屬群組:
註冊會員
文章: 515
等級: 20; EXP: 94
HP : 0 / 498
MP : 171 / 19427
離線
了解
謝了
我想應該是我沒用過PIC16
我用PIC18都是一進中斷就用MOVFF備份STATUS
離開時先用MOVF放回W再回存STATUS所以才沒出問題
PIC16沒有MOVFF還真不方便...

2007/02/13 09:04
_________________
木亟缶夬金戔
彳艮缶夬金戔
走召缶夬金戔
轉換PDF檔 列印


Re: 想請問中斷
新會員
註冊日期:
2007/01/22 23:33
所屬群組:
註冊會員
文章: 15
等級: 2; EXP: 62
HP : 0 / 40
MP : 5 / 1266
離線
我是想問 我po的程式是進入中斷後的內容
進入時我們會先備份資料
之後作中斷時所需的程式
隻後重設中斷
還原
但是我使用中斷計時
時間點我不會算ㄟ
就是哪一個程式還在中斷
哪裡中斷結束跳回中斷點04h
還是哪裡有再等待中段時間的
DECFSZ COUNT0,F
這是我判斷所設的中斷次數
還沒到我就繼續執行isr_end
但他跑完裡面的程式就又進入04h
那我假如計時10分鐘
跑完那些程式不用到一秒吧
剩餘的時間 跑哪了
一直在疑惑中斷
有誰可以跟我解式詳細的中斷用法

2007/02/13 13:03
轉換PDF檔 列印


Re: 想請問中斷
高級會員
註冊日期:
2005/05/28 16:31
所屬群組:
註冊會員
文章: 121
等級: 10; EXP: 3
HP : 0 / 225
MP : 40 / 8127
離線
之前也有同樣的疑問..也發現過的確會影響到Z Flag..
原來是movf這個指令影響呀....謝謝

中斷的用法大致上是這樣的...

org 0000h ; 程式開始執行的位址
goto main;
org 0004h ; 中斷位址 (A)
goto isr_func;
//--------------------------------
isr_func: ; 中斷副程式
mPush ; 備份暫存器
... ; 計時重置
...
mPop ; 暫存器還原
RETFIE ; 回到中斷下一行指令繼續執行 (B)

//--------------------------------
main:
.....
movlw d'55'; ----> 時間計時溢位跳到中斷向量位址0004 (A)
movwf bReg0; --> (B)
.....
goto main

timer是一個模組..只要設定好相關暫存器..
他會自己計時..然後中斷條件成立..
會產生一個中斷信號給mcu..然後mcu才跳到0004h執行..

計時時間與時脈&預除器有關..
datasheet寫的很清楚可以參考...

備份與還原的動作...
是不希望中斷程式改變掉主程式正在執行的資料...
以上..

2007/02/13 13:48
轉換PDF檔 列印


Re: 想請問中斷
新會員
註冊日期:
2007/01/22 23:33
所屬群組:
註冊會員
文章: 15
等級: 2; EXP: 62
HP : 0 / 40
MP : 5 / 1266
離線
多謝你的解答
我會在想一想的

2007/02/14 00:11
轉換PDF檔 列印


Re: 想請問中斷
資深會員
註冊日期:
2004/05/19 03:43
來自 台灣
所屬群組:
註冊會員
文章: 1746
等級: 35; EXP: 7
HP : 0 / 851
MP : 582 / 33204
離線
還有要注意一點:
W_TEMP , STATUS_TEMP ( 或其他名稱?)變數 要放在 0x70 以後的位址
那裡為 通用位址 ( BANK 0 , 1 , 2 , 3 都可以存取 )
如放在其他位址 , 則要注意 BANK 的切換 ( 太麻煩了! )

2007/02/15 20:33
轉換PDF檔 列印


Re: 想請問中斷
中級會員
註冊日期:
2005/09/03 00:37
所屬群組:
註冊會員
文章: 58
等級: 6; EXP: 48
HP : 0 / 137
MP : 19 / 4826
離線
引用:

Beee 寫到:

如放在其他位址 , 則要注意 BANK 的切換 ( 太麻煩了! )


怎么會麻煩?BANK的切換基本上是避免不了的!

2007/02/16 02:53
轉換PDF檔 列印



(1) 2 »



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project