Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
版主
|
不懂,可以打 0800-717-718 技術支援專線。
發表於: 2006/10/19 15:38
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
中級會員
|
'MPASMㄧ天講義' 看的霧煞煞 , 因為實在抽不出時間上課 .
謝謝 Ryang !
發表於: 2006/10/19 11:48
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
版主
|
不行這樣寫,udata是屬於Linker定變數的指令,而城市裡是用絕對定址的方式(org)所以是不對的。
可以用 Cblock + res + endc 的指令來定義變數或直接使用EQU 也可以。 看你的程式還是常數跟變數分不清楚,equ 可以為常數或變數看你的指令如何,你都把分鐘和小時都宣告為位址0x00造成打架了,
發表於: 2006/10/19 10:49
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
中級會員
|
謝謝幫忙 !
改了一點如下 , 組譯過不了 . ;************************************************************************** ;**** File : clock.asm ;**** 設計一個時鐘程式 ;************************************************************************** list p = 18F452 #include <p18F452.inc> HourU equ H'0' ; hour upper digit HourL equ H'0' ; hour lower digit MinU equ H'0' ; minute upper digit MinL equ H'0' ; minute lower digit Nine equ H'9' Six equ H'6' Two equ H'2' One equ H'1' Zero equ 0x00 Temp equ 0x00 Temp1 equ 0x01 Count1 equ 0x00 TMR1_VAL equ .2000 ; Timer1 設定為 500ms 中斷一次 udata global SecH, SecL SecH res 1 SecL res 1 ;******************************************************************** ;**** RESET Vector @ 0x0000 ;******************************************************************** org 0x0000 bra Main ; org 0x0008 bra Hi_ISRs ; ;******************************************************************** ;**** The Main Program start from Here !! ;******************************************************************** org 0x002A Main: clrf SecH clrf SecL call Init_IO call Init_Timer1 bsf RCON,IPEN ; Enable Interrupt priority bsf INTCON,GIEH ; Enable all High Priority Interrupt ; Null_Loop call CountUp goto Null_Loop ; Do loop here ; ;*********************************************************************** ;**** Initial the PORTE&PORTD for the output port ;*********************************************************************** CountUp if SecL < Nine incf PORTD incf SecL call TIMER100U else if SecH < Six incf SecH clrf SecL clrf PORTD call TIMER100U else clrf SecL clrf SecH clrf PORTD call TIMER100U endif endif return Init_IO movlw 00FH movwf ADCON1 bsf TRISB,0 bcf PORTB,0 clrf TRISE movlw b'00000010' movwf PORTE clrf TRISD movlw b'00000000' movwf PORTD call TIMER100U return ;*********************************************************************** ;**** Initial Timer1 as a 500ms Timer ;*********************************************************************** Init_Timer1 movlw 0CFH ; 16-bit mode , Prescaler = 1:1 , Async mode movwf T1CON ; Use external 32768Hz crystal , Timer1 On ; movlw (.65536-TMR1_VAL)/.256 ; Calcute the MSB value for the Timer1 movwf TMR1H movlw (.65536-TMR1_VAL)%.256 ; Calcute the LSB value for the Timer1 movwf TMR1L ; movlw 001H ; Set Timer1 for high priority interrupt movwf PIE1 ; Clear Timer1 Interrupt flag movlw 001H movwf IPR1 bcf PIR1, TMR1IF bsf PIE1, TMR1IE ; Enable Timer1 Interrupt return TIMER100U movlw 002H movwf Count1 decfsz Count1 bra $-2 return ;*************************************************************************************** ;**** ISRs() : 中斷服務程式 ;**** ;*************************************************************************************** Hi_ISRs bcf PIR1, TMR1IF ; Clear Timer1 Interrupt flag ; movlw (.65536-TMR1_VAL)/.256 ; Calcute the MSB value for the Timer1 movwf TMR1H movlw (.65536-TMR1_VAL)%.256 ; Calcute the LSB value for the Timer1 movwf TMR1L ; btfsc PORTB,0 ; infsnz PORTD ; PORTD = PORTD + 1; retfie FAST ; Return with shadow register ; END
發表於: 2006/10/18 15:31
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
版主
|
說來話長,請參考右邊教育訓練裡的 W100 & W400 & MPASMㄧ天講義。
發表於: 2006/10/18 15:18
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
中級會員
|
願聞其詳 ! 請指教 !
變數該如何宣告呢 ?
發表於: 2006/10/18 15:14
|
|||
|
Re: 組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
版主
|
從宣告上來看,SecH & SecL 是常數其值為0,但程式處理時卻把它當作是變數且戰的位址都是0x00且位址重複,所以你的程式要改。
發表於: 2006/10/18 14:47
|
|||
|
組語變數可以這樣用嗎 ?
|
||||
---|---|---|---|---|
中級會員
|
我用pic18f452及ICD2 想寫組語時發現變數SecL一直是常數,
同時不知到 if...else...endif 這樣做是否有效 . 以下是發展中程式 , SecL 代表秒數的個位數, 超過 9 時 秒數的 十位要進位 , 但是 SecL 一直不變, 是何原因, 請先進們指教 !
;**************************************************************************
發表於: 2006/10/18 9:04
|
|||
|