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


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: PIC16F73 程式記憶體頁的切換問題
#13
版主
版主


查看用戶資訊
Pagesel 指令會自動安排其 Program Page 使用時不用管他是否正要跨過 Page,MPASM & MPLINK 會自動管理的。

發表於: 2005/6/20 18:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#12
中級會員
中級會員


查看用戶資訊
參照:

Ryang 寫道:
切換 PAGE 改用MPASM 所提供的切換MARCO "PAGESEL"這樣比較好用。

pagesel Sub_ISR
goto Sub_ISR

or

call Sub_ISR


假設我PAGE0及PAGE1內的Lable會跳PAGE使用或在同一PAGE使用,是否可以每個Lable都加上pagesel?
若很不巧的,某個Lable剛好是開頭在PAGE0結束PAGE1的話,是否會有影響?

發表於: 2005/6/17 16:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#11
高級會員
高級會員


查看用戶資訊
有ICE或ICD2嘛?在中斷裡停下來 , 用單步跑一跑 , 就知道從那裡開始跑掉了 , 問題要試了才找得出來啊 ! 光看程式 , 有時侯會漏掉 ,

尤其注意從PAGE1裡產生的中斷 , 或離開中斷後的CALL或GOTO的位址對不對 ,

發表於: 2005/6/13 16:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#10
新會員
新會員


查看用戶資訊
版主這應該是push&pop
我原先就有如下
MOVWF W_BUF ;┐
MOVF STATUS,W ;│
CLRF STATUS ;│
MOVWF STATUS_BUF ; > 作PUSH動作
MOVF PCLATH,W ;│
MOVWF PCLATH_BUF ;│
CLRF PCLATH ;┘
.
.
CALL CH_BANK0 ;
MOVF PCLATH_BUF,W ;┐
MOVWF PCLATH ;│
MOVF STATUS_BUF,W ; > 作POP動作
MOVWF STATUS ;│
MOVF W_BUF,W ;┘
RETFIE
我也有改成如版主所講的如下

MOVWF W_BUF
MOVF STATUS,W
BCF STATUS,RP0
MOVWF STATUS_BUF
MOVF PCLATH,W
MOVWF PCLATH_BUF
.
.
.
BCF STATUS,RP0
MOVF PCLATH_BUF,W
MOVWF PCLATH
MOVF STATUS_BUF,W
SWAPF W_BUF,F
SWAPF W_BUF,W
RETFIE
但結果還是不行
是不是還有哪裡我沒有設到的
但原先程式只使用到page0時所有功能都是正常的
先在連一開機的顯示畫面都沒有
天阿....版主你一定要救救我...

發表於: 2005/6/10 14:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#9
版主
版主


查看用戶資訊
你在中斷裡有沒有把人家的 PAGE 改掉了呢? 底下程式可加入中斷裡以確保 PAGE 的工作正常。


ORG     0x004             interrupt vector location

    movwf   w_temp            
save off current W register contents
    movf    STATUS
,w          move status register into W register
    bcf     STATUS
,RP0        ensure file register bank set to 0
    movwf    status_temp       
save off contents of STATUS register
    movf    PCLATH
,w      move pclath register into w register
    movwf    pclath_temp      
save off contents of PCLATH register


isr code can go here or be located as a call subroutine elsewhere


    bcf     STATUS
,RP0        ensure file register bank set to 0
    movf    pclath_temp
,w      retrieve copy of PCLATH register
    movwf    PCLATH          
restore pre-isr PCLATH register contents
    movf    status_temp
,w     retrieve copy of STATUS register
    movwf    STATUS            
restore pre-isr STATUS register contents
    swapf   w_temp
,f
    swapf   w_temp
,w          restore pre-isr W register contents
    retfie                    
; return from interrupt

發表於: 2005/6/10 11:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#8
新會員
新會員


查看用戶資訊
版主還是不行ㄋ
會不會跟我的中斷有關係
我在page0中,有一個顯示掃描中斷
必須每0.25秒去處理一次中斷副程式

我真的找不出任何原因
在程式未跨頁前都是正常運作
因為功能上增加以致程式跨頁
結果竟會如此
版主麻煩你囉
如有必要我也可以將我的整支程式給你看

發表於: 2005/6/10 9:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#7
版主
版主


查看用戶資訊
直接用就可以了不用去定義它。
可以參考右邊教育訓練裡的MPASM 講義裡面有使用說明。

發表於: 2005/6/9 22:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#6
新會員
新會員


查看用戶資訊
版主你好
我知道有這虛指令
但我沒用過
不知是不是要先定義這巨集
還是要怎用可否請版主教一下
或是有技術文件可查
......萬分的感謝

發表於: 2005/6/9 22:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#5
版主
版主


查看用戶資訊
切換 PAGE 改用MPASM 所提供的切換MARCO "PAGESEL"這樣比較好用。

pagesel Sub_ISR
goto Sub_ISR

or

call Sub_ISR

發表於: 2005/6/9 17:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: PIC16F73 程式記憶體頁的切換問題
#4
新會員
新會員


查看用戶資訊
版主你好:
我有做切回的動作但狀況還是一樣
以下是在page0下呼叫page1的程式段:
.
.
R_EEPROM: ;讀取EEPROM中紀錄值
MOVLW H'0000' ;讀出00H位址之資料 MOV A,#ADDRESS
BSF PCLATH,3 ;換PAGE1
CALL READ_93C46 ;
BCF PCLATH,3 ;換PAGE0
MOVLW H'005D' ;判斷是否有被記錄93
.
.

以下是我page1的程式碼:
;******************************************** ;*********** 查表程式段
;******************************************** ORG 0X800 ;定義第一頁程式段位址
TABLE_7SET: ;七段顯示器顯示值
ADDWF PCL,F ; W對應值
RETLW B'00000011' ;0 0
RETLW B'10011111' ;1 1
RETLW B'00100101' ;2 2
RETLW B'00001101' ;3 3
RETLW B'10011001' ;4 4
RETLW B'01001001' ;5 5
RETLW B'11000001' ;6 6
RETLW B'00011111' ;7 7
RETLW B'00000001' ;8 8
RETLW B'00011001' ;9 9
RETLW B'00000010' ;0. A
RETLW B'10011110' ;1. B
RETLW B'00100100' ;2. C
RETLW B'00001100' ;3. D
RETLW B'10011000' ;4. E
RETLW B'01001000' ;5. F
RETLW B'11000000' ;6. 10
RETLW B'00011110' ;7. 11
RETLW B'00000000' ;8. 12
RETLW B'00011000' ;9. 13
RETLW B'01110001' ;F 14
RETLW B'00010001' ;A 15
RETLW B'11110101' ;r 16
RETLW B'10000011' ;V 17
RETLW B'00110001' ;P 18
RETLW B'11111111' ; 19
RETLW B'01100001' ;E 1A
RETLW B'11101111' ;_ 1B
RETLW B'10100001' ;K 1C
RETLW B'00010011' ;N 1D
RETLW B'10010001' ;H 1E
RETLW B'11100011' ;L 1F
RETLW B'11000111' ;u 20
RETLW B'11100001' ;t 21
RETLW B'11000101' ;o 22
RETLW B'10000101' ;d 23
RETLW B'11111101' ;- 24
;********************************************
;** 程式名稱 : 93C46.ASM **
;** 程式功能 : PIC 對 93C46 之副程式 **
;** 程式語言 : PIC16F73 ASSEMBLY **
;********************************************
READ_93C46: ;讀取指定位址的內容
IORLW H'0080' ;給OP CODE
ANDLW H'00BF' ;取指定位址
MOVWF ADDRES_93C46 ;將OP CODE &
;ADDRESS取出
CALL COMMAND ;
BCF PORTC,7 ;清除DI
CALL SK_PULSE ;
CALL SK_PULSE ;

CALL RDBYTE ;
MOVWF DATAH_93C46 ;W給高位元暫存器
CALL RDBYTE ;
MOVWF DATAL_93C46 ;將 W 給低位元暫存器

CALL CLR_CS ; 這四個副程式
CALL SK_PULSE ;都在page1
CALL SETB_CS ;
CALL SK_PULSE ;
RETURN ;
;----------副程式-------------------------------;

RDBYTE: BSF PORTC,7 ;讀取1BYTE
RLF DATA_93C46_TMP,F ;
MOVLW D'08' ;
MOVWF EEPROM_T1;
BCF PCLATH,3 ;換
;PAGE0****940608
CALL CH_BANK1 ;
BSF PCLATH,3 ;換
;PAGE1****940608
BSF PORTC,7 ;規劃 PORTC,7 為輸入腳
BCF PCLATH,3 ;換
;PAGE0****940608
CALL CH_BANK0 ;
BSF PCLATH,3 ;換
;PAGE1****940608

RDB1: BCF PORTC,6 ;
BTFSC PORTC,7 ;
GOTO $+3
BCF STATUS,C ;
GOTO $+2
BSF STATUS,C ;
RLF DATA_93C46_TMP,F ;
NOP ;
BSF PORTC,6 ;
NOP ;
DECFSZ EPROM_T1,1;結果為0跳過下一行
GOTO RDB1 ;
NOP ;
MOVF DATA_93C46_TMP,W;

BCF PCLATH,3 ;換
;PAGE0****940608
CALL CH_BANK1;
BSF PCLATH,3 ;換PAGE1****940608
BCF PORTC,7 ;規劃 PORTC,7 為輸出腳

BCF PCLATH,3;換PAGE0****940608
CALL CH_BANK0;
BSF PCLATH,3;換PAGE1****940608
RETURN ;
.
.
.
.
.
END

發表於: 2005/6/9 17:03
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... ]

教育訓練中心

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