|
|
View previous topic :: View next topic |
Author |
Message |
future
Joined: 14 May 2004 Posts: 330
|
Optimization? what is this logic? |
Posted: Fri Jul 09, 2004 4:56 pm |
|
|
Code: | ....................output_a(0x00); set_tris_a(0b00101111);
076E: CLRF F89
0770: MOVLW 2F
0772: MOVWF F92
....................output_b(0x00); set_tris_b(0b00000001);
0774: CLRF F8A
0776: MOVLW 01
0778: MOVWF F93
....................output_c(0x00); set_tris_c(0b10000000);
077A: CLRF F8B
077C: MOVLW 80
077E: MOVWF F94
....................output_d(0x00); set_tris_d(0b00000000);
0780: CLRF F8C
0782: MOVLW 00 //why not CLRF F95 ?
0784: MOVWF F95
....................output_e(0x00); set_tris_e(0b00000011);
0786: CLRF F8D
0788: BSF F96.0 //why not MOVLW 3
078A: BSF F96.1 // MOVWF F96 ?
078C: BCF F96.2 |
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Jul 09, 2004 8:03 pm |
|
|
Quote: | output_e(0x00);
set_tris_e(0b00000011);
0786: CLRF F8D
0788: BSF F96.0 //why not MOVLW 3
078A: BSF F96.1 // MOVWF F96 ?
078C: BCF F96.2 |
They are also doing this BSF, BCF stuff with the ADC functions,
and with the initialization code inserted at the start of main().
I have emailed them about this, and asked them to go back
to the byte-wide writes instead of doing bit diddling. So far,
they have ignored the issue. All of this started with vs. 3.2xx.
The more people that complain to them about this, the better,
because otherwise, they won't ever change it. Please email
support@ccsinfo.com about it. Show them your code above. |
|
|
C-H Wu Guest
|
Re: Optimization? what is this logic? |
Posted: Fri Jul 09, 2004 10:42 pm |
|
|
future wrote: | Code: | ....................output_e(0x00); set_tris_e(0b00000011);
0786: CLRF F8D
0788: BSF F96.0 //why not MOVLW 3
078A: BSF F96.1 // MOVWF F96 ?
078C: BCF F96.2 |
|
0xF96 is _VERY_ special, it is quite different from 0xF92.
Considering 18F452, SFR 0xF96 has 8 bits including PSPMODE, IBF, OBF, IBOV and three bits for TRISE, as a result, MOVLW 3, MOVWF F96 will not just set your tris bits but also set other SFR bit you might _NOT_ want.
Using bit setting for set_tris_e() with 0xF96 is necessary.
set_tris_e() shall be, and must be, quite different from set_tris_a().
Best wishes |
|
|
|
|
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
|