:::


Browsing this Thread:   1 Anonymous Users






0~9999計數程式,請教各位
#1
初級會員
初級會員


查看用戶資訊
0~9999計數程式,無法發生中斷以計時,請教各位


LIST P=16C73 ;
W_STK EQU 0X20 ;
STATUS_STK EQU 0X21 ;
PCLATH_STK EQU 0X22 ;
TMPCNT EQU 0X24 ;
CNT EQU 0X25 ;
SCANCH EQU 0X26 ;
CH EQU 0X27 ;
TNR0H EQU 0X28 ;
#DEFINE _DIGIT_ADDR 0X30 ;

ORG 00H ;
GOTO START ;
ORG 04H ;
MOVF STATUS,W ;
CLRF STATUS ;
MOVWF STATUS_STK ;
MOVF PCLATH,W ;
MOVWF PCLATH_STK ;
CLRF PCLATH ;
BCF STATUS,RP0 ;
BTFSC PIR2,CCP2IF ;
GOTO CCP2_ISR ;
END_INT:
BCF STATUS,RP0 ;
MOVF PCLATH_STK,W ;
MOVWF PCLATH ;
MOVF STATUS_STK,W ;
MOVWF STATUS ;
MOVF W_STK,W ;
RETFIE ;

START CALL PIC_INIT ;
BSF INTCON,PEIE ;
BSF INTCON,GIE ;

INIT MOVLW 0FFH ; RESET RB
MOVWF RB ;..
MOVLW 0FFH ;
MOVWF RC ;
MOVLW DSPTB ; 將TABLE表資料,載入TEMP register
MOVWF TABN ;..
MOVF TABN,W ;..
MOVWF TEMP ;..
MOVWF TEMP1 ;..
MOVWF TEMP2 ;..
MOVWF TEMP3 ;..
MOVLW 0AH ; 設定計數器CNTT=0A
MOVWF CNTT ;..
MOVLW 64H ; 設定計數器CNTH=64H
MOVWF CNTH ;..
MOVLW 03H ; 設定計數器CNTK(K1 K2)=03E8H
MOVWF CNTK1 ;..
MOVLW 0E8H ;
MOVWF CNTK2 ;..

MOVLW 00 ; 設定計數器CNT9X=00
MOVWF CNT9A ; ..
MOVWF CNT9B ; ..
MOVWF CNT9C ; ..
MOVWF CNT9D ; ..
MOVLW 01H ; 被減數 be applied for ROUND4
MOVWF ASS ; ..

ZERO1 MOVF TABN,W ; 歸零
MOVWF TEMP2 ; ..
MOVWF TEMP1 ; ..
MOVWF TEMP ; ..

ROUND1 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP=0A
MOVWF COMP ;..
MOVLW 70H ; 設定SCAN個位數
MOVWF SCAND ;..
MOVF SCAND,W ; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP,W ; (將個位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至個位數 7 seg)

INCF TEMP ; 每次執行,TEMP數值+1
INCF CNT9A ; 每次執行,CNT9A數值+1
MOVF CNT9A,W ; (XOR運算"CNT9A&COMP"後
XORWF COMP ; ,存入COMP
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續)
NOP ;
GOTO ROUND2 ;

ROUND2 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP1=0A
MOVWF COMP1 ; ..
MOVLW 0B0H ; 設定SCAN十位數
MOVWF SCAND1 ;..
MOVF SCAND1,W; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP1,W ; 將十位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至十位數 7 seg

DECFSZ CNTT ;
GOTO ROUND3 ;

INCF TEMP1 ; PC+1
MOVLW 0AH ; 設定計數器CNTT=0A
MOVWF CNTT ; ..
MOVF TABN,W ; 歸零
MOVWF TEMP ; ..
INCF CNT9B ; 每次執行,CNT9B數值+1.
MOVF CNT9B,W ; (XOR運算"CNT9B&COMP1"後
XORWF COMP1 ; ,存入COMP1.)
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續
NOP ;
GOTO ROUND3 ;

ROUND3 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP2=0A
MOVWF COMP2 ; ..
MOVLW 0D0H ; 設定SCAN百位數
MOVWF SCAND2 ;..
MOVF SCAND2,W; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP2,W ; 將百位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至百位數 7 seg
DECFSZ CNTH ;
GOTO ROUND4 ;

INCF TEMP2 ; PC+1
MOVLW 64H ; 設定計數器CNTH=64H
MOVWF CNTH ; ..
MOVF TABN,W ; 歸零
MOVWF TEMP1 ; ..
INCF CNT9C ; 每次執行,CNT9C數值+1.
MOVF CNT9C,W ; (XOR運算"CNT9C&COMP2"後
XORWF COMP2 ; ,存入COMP1.)
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續
NOP ;
GOTO ROUND4 ;

ROUND4 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP3=0A
MOVWF COMP3 ; ..
MOVLW 0E0H ; 設定SCAN千位數
MOVWF SCAND3 ;..
MOVF SCAND3,W; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP3,W ; 將千位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至千位數 7 seg

BCF 03H,00 ;
MOVF ASS,W ;
SUBWF CNTK2 ;
BTFSC 03H,00 ;
GOTO ROUND1 ;
MOVF ASS,W ;
SUBWF CNTK1 ;
BTFSC 03H,00 ;
GOTO ROUND1 ;

INCF TEMP3 ; PC+1
MOVF TABN,W ;
MOVWF TEMP2 ; ..
MOVLW 03H ; 設定計數器
MOVWF CNTK1 ; ..
MOVLW 0E8H ; 設定計數器
MOVWF CNTK2 ; ..

INCF CNT9D ; 每次執行,CNT9D數值+1.
MOVF CNT9D,W ; (XOR運算"CNT9D&COMP"後
XORWF COMP3 ; ,存入COMP1.)
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續
GOTO ZERO1 ;
GOTO INIT ;

RESET MOVLW 0FFH ; RESET RB
MOVWF RB ;..
RETURN ;

PIC_INIT
;Bank1
CLRF INTCON ;
;BSF INTCON,T0IE ;
BSF STATUS,RP0 ;
MOVLW B'00000000' ;
MOVWF TRISB ;
MOVLW B'00000000' ;
MOVWF TRISC ;
CLRF PIE2 ;
BSF PIE2,CCP2IE ;
;Bank0
BCF STATUS,RP0 ;
MOVLW B'11111111' ;
MOVWF RB ;
MOVLW 0XFF ;
MOVWF RC ;
MOVLW B'00110001' ;
MOVWF T1CON ;
MOVLW B'00000001' ;
MOVWF CCP2CON ;
MOVLW 0XF4 ;
MOVWF CCPR2H ;
MOVLW 0X24 ;
MOVWF CCPR2L ;
RETURN ;

LDTAB MOVWF PCL ;
ORG 0E0H ;

RETLW B'00001000' ;0
RETLW B'11101011' ;1
RETLW B'01010000' ;2
RETLW B'11000000' ;3
RETLW B'10000011' ;4
RETLW B'10000100' ;5
RETLW B'00000100' ;6
RETLW B'10001001' ;7
RETLW B'00000000' ;8
RETLW B'10000001' ;9
RETLW 00 ;

CCP2_ISR:
BCF PIR2,CCP2IF ;
MOVLW B'00000001' ;
XORWF CCP2CON,F ;
GOTO END_INT ;


W EQU H'0000'
F EQU H'0001'

;----- Register Files------------------------------------------------------

INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
RA EQU H'0005'
RB EQU H'0006'
RC EQU H'0007'
RD EQU H'0008'

PCLATH EQU H'000A'
INTCON EQU H'000B'
PIR1 EQU H'000C'
PIR2 EQU H'000D'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
RCSTA EQU H'0018'
TXREG EQU H'0019'
RCREG EQU H'001A'
CCPR2L EQU H'001B'
CCPR2H EQU H'001C'
CCP2CON EQU H'001D'
ADRES EQU H'001E'
ADCON0 EQU H'001F'

OPTION_R EQU H'0081'
TRISA EQU H'0085'
TRISB EQU H'0086'
TRISC EQU H'0087'
TRISD EQU H'0088'
TRISE EQU H'0089'
PIE1 EQU H'008C'
PIE2 EQU H'008D'
PCON EQU H'008E'
PR2 EQU H'0092'
SSPADD EQU H'0093'
SSPSTAT EQU H'0094'
TXSTA EQU H'0098'
SPBRG EQU H'0099'
ADCON1 EQU H'009F'

;----- STATUS Bits --------------------------------------------------------


ADCS1 EQU H'0007'
ADCS0 EQU H'0006'
CHS2 EQU H'0005'
CHS1 EQU H'0004'
CHS0 EQU H'0003'
GO EQU H'0002'
NOT_DONE EQU H'0002'
GO_DONE EQU H'0002'
ADON EQU H'0000'

;----- OPTION Bits --------------------------------------------------------

NOT_RBPU EQU H'0007'
INTEDG EQU H'0006'
T0CS EQU H'0005'
T0SE EQU H'0004'
PSA EQU H'0003'
PS2 EQU H'0002'
PS1 EQU H'0001'
PS0 EQU H'0000'

;----- TRISE Bits ---------------------------------------------------------

IBF EQU H'0007'
OBF EQU H'0006'
IBOV EQU H'0005'
PSPMODE EQU H'0004'
TRISE2 EQU H'0002'
TRISE1 EQU H'0001'
TRISE0 EQU H'0000'

;----- PIE1 Bits ----------------------------------------------------------

PSPIE EQU H'0007'
ADIE EQU H'0006'
RCIE EQU H'0005'
TXIE EQU H'0004'
SSPIE EQU H'0003'
CCP1IE EQU H'0002'
TMR2IE EQU H'0001'
TMR1IE EQU H'0000'

;----- PIE2 Bits ----------------------------------------------------------

CCP2IE EQU H'0000'

;----- PCON Bits ----------------------------------------------------------

NOT_POR EQU H'0001'

;----- SSPSTAT Bits -------------------------------------------------------

D EQU H'0005'
I2C_DATA EQU H'0005'
NOT_A EQU H'0005'
NOT_ADDRESS EQU H'0005'
D_A EQU H'0005'
DATA_ADDRESS EQU H'0005'
P EQU H'0004'
I2C_STOP EQU H'0004'
S EQU H'0003'
I2C_START EQU H'0003'
R EQU H'0002'
I2C_READ EQU H'0002'
NOT_W EQU H'0002'
NOT_WRITE EQU H'0002'
R_W EQU H'0002'
READ_WRITE EQU H'0002'
UA EQU H'0001'
BF EQU H'0000'

;----- TXSTA Bits ---------------------------------------------------------

CSRC EQU H'0007'
TX9 EQU H'0006'
NOT_TX8 EQU H'0006' ; Backward compatibility only
TX8_9 EQU H'0006' ; Backward compatibility only
TXEN EQU H'0005'
SYNC EQU H'0004'
BRGH EQU H'0002'
TRMT EQU H'0001'
TX9D EQU H'0000'
TXD8 EQU H'0000' ; Backward compatibility only

;----- ADCON1 Bits --------------------------------------------------------

PCFG2 EQU H'0002'
PCFG1 EQU H'0001'
PCFG0 EQU H'0000'

;==========================================================================
;
; RAM Definition
;
;==========================================================================

__MAXRAM H'FF'
__BADRAM H'8F'-H'91', H'95'-H'97', H'9A'-H'9E'

;==========================================================================
;
; Configuration Bits
;
;==========================================================================

_CP_ALL EQU H'3F8F'
_CP_75 EQU H'3F9F'
_CP_50 EQU H'3FAF'
_CP_OFF EQU H'3FBF'
_PWRTE_ON EQU H'3FBF'
_PWRTE_OFF EQU H'3FB7'
_WDT_ON EQU H'3FBF'
_WDT_OFF EQU H'3FBB'
_LP_OSC EQU H'3FBC'
_XT_OSC EQU H'3FBD'
_HS_OSC EQU H'3FBE'
_RC_OSC EQU H'3FBF'


CNTT EQU 31H ;
CNTH EQU 32H ;
CNTK1 EQU 33H ;
CNTK2 EQU 34H ;
TABN EQU 35H ;
DSPN EQU 36H ;
TEMP EQU 37H ;
TEMP1 EQU 38H ;
TEMP2 EQU 39H ;
TEMP3 EQU 3AH ;
SCAND EQU 3BH ;
SCAND1 EQU 3CH ;
SCAND2 EQU 3DH ;
SCAND3 EQU 3EH ;
DELYT EQU 3FH ;
DELYT1 EQU 40H ;
COMP EQU 41H ;
COMP1 EQU 42H ;
COMP2 EQU 43H ;
COMP3 EQU 44H ;
DSPTB EQU 0E0H ;

CNT9A EQU 45H ;
CNT9B EQU 46H ;
CNT9C EQU 47H ;
CNT9D EQU 48H ;
ASS EQU 49H ;

TMR0H EQU 4BH ;

END ;







發表於: 2004/9/27 18:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 0~9999計數程式,請教各位
#2
版主
版主


查看用戶資訊
MPLAB-SIM可以模擬TIMER。所以,您可以利用它,配合WATCH視窗來看出來:
1、TIMER會不會增加。
2、如果TIMER會增加,但是不會產生中斷 (但是該TIMER的FLAG應該還是會變成1才對),那就是沒有將該中斷功能正確啟動。

發表於: 2004/9/28 21:57
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 0~9999計數程式,請教各位
#3
初級會員
初級會員


查看用戶資訊
感謝版主的友善回應,但因敝人對pic摸索中.只能參照書本範例截取片段,現改寫如下
但還是有問題,電路為RB0~7接7 SEG (SINK MODE),RC 4~7 接PNP以推動 7SEG
煩請再不吝賜教

;0計數9 ;
LIST P=16C73 ;
W_STK EQU 0X20 ;
STATUS_STK EQU 0X21 ;
PCLATH_STK EQU 0X22 ;
TMPCNT EQU 0X24 ;
CNT EQU 0X25 ;
SCANCH EQU 0X26 ;
CH EQU 0X27 ;
TNR0H EQU 0X28 ;
#DEFINE _DIGIT_ADDR 0X30 ;

ORG 00H ;
GOTO START ;
ORG 04H ;
MOVF STATUS,W ;
CLRF STATUS ;
MOVWF STATUS_STK ;
MOVF PCLATH,W ;
MOVWF PCLATH_STK ;
CLRF PCLATH ;
BCF STATUS,RP0 ;
BTFSC PIR2,CCP2IF ;
GOTO INIT ;

END_INT:
BCF STATUS,RP0 ;
MOVF PCLATH_STK,W ;
MOVWF PCLATH ;
MOVF STATUS_STK,W ;
MOVWF STATUS ;
MOVF W_STK,W ;
RETFIE ;

START CALL PIC_INIT ;
BSF INTCON,PEIE ;
BSF INTCON,GIE ;


INIT MOVLW 0FFH ; RESET RB
MOVWF RB ;..
MOVWF RC ;
MOVLW DSPTB ; 將TABLE表資料,載入TEMP register
MOVWF TABN ;..
MOVF TABN,W ;..
MOVWF TEMP ;..
MOVWF TEMP1 ;..
MOVWF TEMP2 ;..
MOVWF TEMP3 ;..
MOVLW 0AH ; 設定計數器CNTT=0A
MOVWF CNTT ;..
MOVLW 64H ; 設定計數器CNTH=64H
MOVWF CNTH ;..
MOVLW 03H ; 設定計數器CNTK(K1 K2)=03E8H
MOVWF CNTK1 ;..
MOVLW 0E8H ;
MOVWF CNTK2 ;..

MOVLW 00 ; 設定計數器CNT9X=00
MOVWF CNT9A ; ..
MOVWF CNT9B ; ..
MOVWF CNT9C ; ..
MOVWF CNT9D ; ..
MOVLW 01H ; 被減數 be applied for ROUND4
MOVWF ASS ; ..

ZERO1 MOVF TABN,W ; 歸零
MOVWF TEMP2 ; ..
MOVWF TEMP1 ; ..
MOVWF TEMP ; ..

ROUND1 CALL RESET ;
MOVLW 0AH ; 設定比較器COMP=0A
MOVWF COMP ;..
MOVLW 70H ; 設定SCAN個位數
MOVWF SCAND ;..
MOVF SCAND,W ; 將SCANNER 設定RA ENABLE
MOVWF RC ;..
MOVF TEMP,W ; (將個位數PC(PROGRAM COUNTER)移至W register
CALL LDTAB ; 載入table表至PC
MOVWF RB ; 顯示TABLE表數值至個位數 7 seg)
;GOTO END_INT ;
;RETURN ;

INCF TEMP ; 每次執行,TEMP數值+1
INCF CNT9A ; 每次執行,CNT9A數值+1
MOVF CNT9A,W ; (XOR運算"CNT9A&COMP"後
XORWF COMP ; ,存入COMP
BTFSS 03H,02 ; ZF旗標為"0"則跳行,否則繼續)
GOTO ROUND1 ;
GOTO INIT ;



RESET MOVLW 0FFH ; RESET RB
MOVWF RB ;..
RETURN ;

PIC_INIT
;Bank1
CLRF INTCON ;
;BSF INTCON,T0IE ;
BSF STATUS,RP0 ;
MOVLW B'00000000' ;
MOVWF TRISB ;
MOVLW B'00000000' ;
MOVWF TRISC ;
CLRF PIE2 ;
BSF PIE2,CCP2IE ;
;Bank0
BCF STATUS,RP0 ;
MOVLW B'11111111' ;
MOVWF RB ;
MOVLW 0XFF ;
MOVWF RC ;
MOVLW B'00110001' ;
MOVWF T1CON ;
MOVLW B'00001000' ;
MOVWF CCP2CON ;
MOVLW 0XF4 ;
MOVWF CCPR2H ;
MOVLW 0X24 ;
MOVWF CCPR2L ;
RETURN ;

LDTAB MOVWF PCL ;
ORG 0E0H ;

RETLW B'00001000' ;0
RETLW B'11101011' ;1
RETLW B'01010000' ;2
RETLW B'11000000' ;3
RETLW B'10000011' ;4
RETLW B'10000100' ;5
RETLW B'00000100' ;6
RETLW B'10001001' ;7
RETLW B'00000000' ;8
RETLW B'10000001' ;9
RETLW 00 ;

發表於: 2004/10/1 11:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 0~9999計數程式,請教各位
#4
版主
版主


查看用戶資訊
良心建議:

1、不要post這麼一大坨程式上來。也許別人有時間幫您debug;但我是沒有。建議先自行研究,找出可能有問題的地方,再丟一小段程式上來問問題。

2、如果是初學者,可到書局買本中文書來入門;或者參加本公司舉辦的教育訓練;或者自行從右方「教材及講義」抓資料自行參考。

發表於: 2004/10/1 12:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 0~9999計數程式,請教各位
#5
初級會員
初級會員


查看用戶資訊
謝謝版主的回應建議,我會就你的建議研究流程.

發表於: 2004/10/4 12:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 0~9999計數程式,請教各位
#6
新會員
新會員


查看用戶資訊
參照:

saintw 寫道:
謝謝版主的回應建議,我會就你的建議研究流程.


我想你的寫程式方式可能要更改建議寫一段測試一段,
這樣可以知道錯誤點在何處這一點比你會寫程式還重要

PQ 上

發表於: 2004/10/11 14:09
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 can 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連結

http://elearning.microchip.com.tw/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源