|
|
View previous topic :: View next topic |
Author |
Message |
qseeker
Joined: 25 Jun 2009 Posts: 7
|
Version 4.088 error? |
Posted: Mon Jul 20, 2009 8:16 am |
|
|
Nomber one:
Code: |
#include <18F2580.h>
//******************************************
int32 MY_STATE;
#define GET_MY_STATE(x) bit_test(MY_STATE,x)
#define SET_MY_STATE(x,y) {if(y) bit_set(MY_STATE,x); else bit_clear(MY_STATE,x);}
#define MY_STATE0 0
#define MY_STATE1 1
#define MY_STATE2 2
#define MY_STATE3 3
#define MY_STATE4 4
#define MY_STATE5 5
#define MY_STATE6 6
#define MY_STATE7 7
#define MY_STATE8 8
#define MY_STATE9 9
#define MY_STATE10 10
#define MY_STATE11 11
#define MY_STATE12 12
#define MY_STATE13 13
#define MY_STATE14 14
#define MY_STATE15 15
#define MY_STATE16 16
#define MY_STATE17 17
#define MY_STATE18 18
#define MY_STATE19 19
#define MY_STATE20 20
#define MY_STATE21 21
#define MY_STATE22 22
#define MY_STATE23 23
#define MY_STATE24 24
#define MY_STATE25 25
#define MY_STATE26 26
#define MY_STATE27 27
#define MY_STATE28 28
#define MY_STATE29 29
#define MY_STATE30 30
#define MY_STATE31 31
//******************************************
void main(){
int8 i;
SET_MY_STATE(MY_STATE0,bit_test(i,0))
}
|
Version 3.249
Code: |
.................... SET_MY_STATE(MY_STATE0,bit_test(i,0))
0014: BTFSS 09.0
0016: BRA 001C
0018: BSF 05.0
001A: BRA 001E
001C: BCF 05.0
|
Version 4.088
Code: |
.................... SET_MY_STATE(MY_STATE0,bit_test(i,0))
0014: BTFSS 09.0
0016: BRA 001C
0018: BSF 05.0
001A: BRA 0020
001C: BCF 05.0
001E: BCF 08.7
|
The last command in v4.088 is errorius. This command corrupt highest data bit in MY_STATE any time when i call SET_MY_STATE(x,y) with not constant 'y'.
Nomber two:
file 18F2580.h
Version 3.249
Code: |
#define INT_RB 0xF208
|
Version 4.088
Code: |
#define INT_RB 0xFFF208
|
|
|
|
Ttelmah Guest
|
|
Posted: Mon Jul 20, 2009 8:50 am |
|
|
Read the heading of the forum. To report faults, talk to CCS...
The INT definition, is _not_ an error. CCS added extra bits to the definition, to support chips with other features. These are the extra bytes in the definition.
Double check what compiler mode you are in. BIT 7, or the top byte, may be set, if the int32 type, is set as 'signed'. This is the default, if in ANSI mode for example.
Best Wishes |
|
|
qseeker
Joined: 25 Jun 2009 Posts: 7
|
|
Posted: Mon Jul 20, 2009 9:13 am |
|
|
Thank you, Ttelmah!
I don't sure about compiler error. I just to find out it. The INT defintion is clear for me now, thank you again. I tryed signed and unsigned int32 types without results. On signed and unsigned int16 in v.4 work correct. |
|
|
qseeker
Joined: 25 Jun 2009 Posts: 7
|
|
Posted: Tue Jul 21, 2009 6:35 am |
|
|
Only MY_STATE&=MASK instead of bit_clear() help me solve this problem.
Somebody have same problem with bit_clear(x,y) on int32 'x' with not constant 'y'? |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|