CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

3rd if in a while isn't taken in consideration

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
noyz



Joined: 31 Jan 2009
Posts: 59

View user's profile Send private message

3rd if in a while isn't taken in consideration
PostPosted: Sat Jan 31, 2009 10:02 pm     Reply with quote

take a look at this:
Code:

while (!input(PIN_C2))  {
  if (!input(PIN_C3)) {cg();g('1');b=0;break;}
  if (!input(PIN_D0)) {cg();g('3');b=0;break;}
  if (!input(PIN_D1)) {cg();g('5');b=0;break;}   
 }

That was exactly my code written. I thought that I did someting wrong on my electrical part... but everything was from the code and CCS.
With the following code my program works just fine:
Code:

while (!input(PIN_C2))  {
  if (!input(PIN_C3)) {cg();g('1');b=0;break;}
  if (!input(PIN_D0)) {cg();g('3');b=0;break;}
     break;
}
while (!input(PIN_C2)) {if (!input(PIN_D1)) {cg();g('5');b=0;break;}  break;
}


I wonder why the 3rd if or line in a while isn't taken in consideration ??
Is there something wrong with my ccs ?
n-squared



Joined: 03 Oct 2006
Posts: 99

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Sat Jan 31, 2009 10:37 pm     Reply with quote

I think the CCS forum message editor should contain a button for adding a standard text message:
"Please specify which processor and which compiler version you are using. Some header code would be appreciated. No more than 50 lines".
Maybe we will be better equipped to help you.
What you can do on your own is compile and look at the LST file to see if the compiler generated code for the third line.

Good luck
_________________
Every solution has a problem.
noyz



Joined: 31 Jan 2009
Posts: 59

View user's profile Send private message

PostPosted: Sun Feb 01, 2009 1:33 pm     Reply with quote

i don't really understand what you are talking about
Code:

#include <16F871.h>
#device adc=8

#FUSES NOWDT                      //No Watch Dog Timer
#FUSES XT                      //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=16 000 000)


is this what u wanted me to write to you ?
sorry for my bad english :|

by the way i looked into the LST file and there isn't the 3rd if in the first case ori.. if i have if if if.. again the 3rd if isn't there... The same problem if i have if (()&&()&&())
FvM



Joined: 27 Aug 2008
Posts: 2337
Location: Germany

View user's profile Send private message

PostPosted: Sun Feb 01, 2009 1:48 pm     Reply with quote

I can't reproduce your observation with a minimal test program. (PCM v4.084)
Code:
#include <16F871.h>
#device adc=8

#FUSES NOWDT                      //No Watch Dog Timer
#FUSES XT                      //Crystal osc <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES BROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=16 000 000)

void cg(void)
{
}
void g(char)
{
}
int8 b;
void main(void) {
while (!input(PIN_C2))  {
  if (!input(PIN_C3)) {cg();g('1');b=0;break;}
  if (!input(PIN_D0)) {cg();g('3');b=0;break;}
  if (!input(PIN_D1)) {cg();g('5');b=0;break;}   
 }
 }
noyz



Joined: 31 Jan 2009
Posts: 59

View user's profile Send private message

PostPosted: Mon Feb 02, 2009 3:57 pm     Reply with quote

i'm sorry but i've find out that in LST file is that if present. but it didn't work ... the first code with 2 while and max 2 if in while.. works.. this one i don't know why doesn't :
Code:
#include "C:\Documents and Settings\Noyz2k\My Documents\gear-display\PIC16F871.h"
void cg()
   {
   output_low(PIN_B7);
   output_low(PIN_B6);
   output_low(PIN_B5);
   output_low(PIN_B4);
   output_low(PIN_B3);
   output_low(PIN_B2);
   output_low(PIN_B1);
   output_low(PIN_B0);
   output_low(PIN_D7);
   output_low(PIN_D6);
   output_low(PIN_D5);
   output_low(PIN_D4);
   output_low(PIN_C7);
   output_low(PIN_C6);
   output_low(PIN_C5);
   output_low(PIN_C4);
   output_low(PIN_D3);
   output_low(PIN_D2);
   }
void g(char c)
   {
   if (c=='1')

      {
      output_high(PIN_D5);
      output_high(PIN_D4);
      output_high(PIN_C5);
      }
   if (c=='2')
      {
      output_high(PIN_B7);
      output_high(PIN_B3);
      output_high(PIN_B0);
      output_high(PIN_D7);
      output_high(PIN_D6);
      output_high(PIN_D4);
      output_high(PIN_C7);
      output_high(PIN_D3);
      }
   if (c=='3')
      {
      output_high(PIN_D3);
      output_high(PIN_C5);
      output_high(PIN_C7);
      output_high(PIN_D4);
      output_high(PIN_D6);
      output_high(PIN_D7);
      output_high(PIN_B3);
      output_high(PIN_B7);
      }
   if (c=='4')
      {
      output_high(PIN_C5);
      output_high(PIN_C7);
      output_high(PIN_D4);
      output_high(PIN_B3);
      output_high(PIN_B4);
      }
   if (c=='5')
      {
      output_high(PIN_D3);
      output_high(PIN_C5);
      output_high(PIN_C7);
      output_high(PIN_D6);
      output_high(PIN_D7);
      output_high(PIN_B3);
      output_high(PIN_B4);
      output_high(PIN_B7);
      }
   if ((c=='r')||(c=='R'))
      {
      output_high(PIN_C6);
      output_high(PIN_C7);
      output_high(PIN_D4);
      output_high(PIN_D6);
      output_high(PIN_B0);
      output_high(PIN_B3);
      output_high(PIN_B4);
      output_high(PIN_B7);
      }
   if ((c=='n')||(c=='N'))
      {
      output_high(PIN_C5);
      output_high(PIN_C6);
      output_high(PIN_D4);
      output_high(PIN_B0);
      output_high(PIN_B4);
      output_high(PIN_B5);
      }
   }

void main()
{
int b,z=1;
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
cg();g('1');delay_ms(100);
cg();g('2');delay_ms(100);
cg();g('3');delay_ms(100);
cg();g('4');delay_ms(100);
cg();g('5');delay_ms(100);
cg();g('r');delay_ms(100);
cg();g('n');delay_ms(100);

output_high(PIN_A0);
output_high(PIN_A1);
output_high(PIN_A2);
output_high(PIN_A3);
output_high(PIN_A4);
output_high(PIN_A5);
delay_ms(1);
   b=1;
while(TRUE)
 {

if (b) {
while (!input(PIN_C2))  {
                     if (!input(PIN_C3)) {cg();g('1');b=0;break;}
                     if (!input(PIN_D0)) {cg();g('3');b=0;break;}
                     if (!input(PIN_D1)) {cg();g('5');b=0;break;}
                     break;
                     }
while (!input(PIN_C0))  {
                     if (!input(PIN_C3)) {cg();g('2');b=0;break;}
                     if (!input(PIN_D0)) {cg();g('4');b=0;break;}
                     if (!input(PIN_D1)) {cg();g('r');b=0;break;}
                     break;
                     }                     

      }
     
     
if (!b)
   {
     if ((!input(PIN_C1))&&(input(PIN_C0))&&(input(PIN_C2))) {cg();g('n');b=1;}
   }
   if (z) {b=0;z=0;}
   }
}
and the lst file :
Code:
CCS PCM C Compiler, Version 4.057, 54385               02-Feb-09 23:41

               Filename: C:\Documents and Settings\Noyz2k\My Documents\gear-display\PIC16F871.lst

               ROM used: 591 words (29%)
                         Largest free fragment is 1457
               RAM used: 8 (6%) at main() level
                         9 (7%) worst case
               Stack:    1 locations

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   15E
0003:  NOP
.................... #include "C:\Documents and Settings\Noyz2k\My Documents\gear-display\PIC16F871.h"
.................... #include <16F871.h>
.................... //////// Standard Header file for the PIC16F871 device ////////////////
.................... #device PIC16F871
.................... #list
.................... 
.................... #device adc=8
.................... 
.................... #FUSES NOWDT                      //No Watch Dog Timer
.................... #FUSES XT                      //Crystal osc <= 4mhz
.................... #FUSES NOPUT                    //No Power Up Timer
.................... #FUSES NOPROTECT                //Code not protected from reading
.................... #FUSES NODEBUG                  //No Debug mode for ICD
.................... #FUSES BROWNOUT               //No brownout reset
.................... #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
.................... #FUSES NOCPD                    //No EE protection
.................... #FUSES NOWRT                    //Program memory not write protected
.................... 
.................... #use delay(clock=16 000 000)
*
014A:  MOVLW  28
014B:  MOVWF  04
014C:  MOVF   00,W
014D:  BTFSC  03.2
014E:  GOTO   15D
014F:  MOVLW  05
0150:  MOVWF  21
0151:  CLRF   20
0152:  DECFSZ 20,F
0153:  GOTO   152
0154:  DECFSZ 21,F
0155:  GOTO   151
0156:  MOVLW  2E
0157:  MOVWF  20
0158:  DECFSZ 20,F
0159:  GOTO   158
015A:  GOTO   15B
015B:  DECFSZ 00,F
015C:  GOTO   14F
015D:  RETLW  00
.................... 
.................... 
.................... void cg()
....................    {
....................    output_low(PIN_B7);
*
0004:  BSF    03.5
0005:  BCF    06.7
0006:  BCF    03.5
0007:  BCF    06.7
....................    output_low(PIN_B6);
0008:  BSF    03.5
0009:  BCF    06.6
000A:  BCF    03.5
000B:  BCF    06.6
....................    output_low(PIN_B5);
000C:  BSF    03.5
000D:  BCF    06.5
000E:  BCF    03.5
000F:  BCF    06.5
....................    output_low(PIN_B4);
0010:  BSF    03.5
0011:  BCF    06.4
0012:  BCF    03.5
0013:  BCF    06.4
....................    output_low(PIN_B3);
0014:  BSF    03.5
0015:  BCF    06.3
0016:  BCF    03.5
0017:  BCF    06.3
....................    output_low(PIN_B2);
0018:  BSF    03.5
0019:  BCF    06.2
001A:  BCF    03.5
001B:  BCF    06.2
....................    output_low(PIN_B1);
001C:  BSF    03.5
001D:  BCF    06.1
001E:  BCF    03.5
001F:  BCF    06.1
....................    output_low(PIN_B0);
0020:  BSF    03.5
0021:  BCF    06.0
0022:  BCF    03.5
0023:  BCF    06.0
....................    output_low(PIN_D7);
0024:  BSF    03.5
0025:  BCF    08.7
0026:  BCF    03.5
0027:  BCF    08.7
....................    output_low(PIN_D6);
0028:  BSF    03.5
0029:  BCF    08.6
002A:  BCF    03.5
002B:  BCF    08.6
....................    output_low(PIN_D5);
002C:  BSF    03.5
002D:  BCF    08.5
002E:  BCF    03.5
002F:  BCF    08.5
....................    output_low(PIN_D4);
0030:  BSF    03.5
0031:  BCF    08.4
0032:  BCF    03.5
0033:  BCF    08.4
....................    output_low(PIN_C7);
0034:  BCF    25.7
0035:  MOVF   25,W
0036:  BSF    03.5
0037:  MOVWF  07
0038:  BCF    03.5
0039:  BCF    07.7
*
0166:  MOVLW  FF
0167:  BCF    03.5
0168:  MOVWF  25
....................    output_low(PIN_C6);
*
003A:  BCF    25.6
003B:  MOVF   25,W
003C:  BSF    03.5
003D:  MOVWF  07
003E:  BCF    03.5
003F:  BCF    07.6
....................    output_low(PIN_C5);
0040:  BCF    25.5
0041:  MOVF   25,W
0042:  BSF    03.5
0043:  MOVWF  07
0044:  BCF    03.5
0045:  BCF    07.5
....................    output_low(PIN_C4);
0046:  BCF    25.4
0047:  MOVF   25,W
0048:  BSF    03.5
0049:  MOVWF  07
004A:  BCF    03.5
004B:  BCF    07.4
....................    output_low(PIN_D3);
004C:  BSF    03.5
004D:  BCF    08.3
004E:  BCF    03.5
004F:  BCF    08.3
....................    output_low(PIN_D2);
0050:  BSF    03.5
0051:  BCF    08.2
0052:  BCF    03.5
0053:  BCF    08.2
....................    }
0054:  RETLW  00
.................... void g(char c)
....................    {
....................    if (c=='1')
0055:  MOVF   28,W
0056:  SUBLW  31
0057:  BTFSS  03.2
0058:  GOTO   067
.................... 
....................       {
....................       output_high(PIN_D5);
0059:  BSF    03.5
005A:  BCF    08.5
005B:  BCF    03.5
005C:  BSF    08.5
....................       output_high(PIN_D4);
005D:  BSF    03.5
005E:  BCF    08.4
005F:  BCF    03.5
0060:  BSF    08.4
....................       output_high(PIN_C5);
0061:  BCF    25.5
0062:  MOVF   25,W
0063:  BSF    03.5
0064:  MOVWF  07
0065:  BCF    03.5
0066:  BSF    07.5
....................       }
....................    if (c=='2')
0067:  MOVF   28,W
0068:  SUBLW  32
0069:  BTFSS  03.2
006A:  GOTO   08D
....................       {
....................       output_high(PIN_B7);
006B:  BSF    03.5
006C:  BCF    06.7
006D:  BCF    03.5
006E:  BSF    06.7
....................       output_high(PIN_B3);
006F:  BSF    03.5
0070:  BCF    06.3
0071:  BCF    03.5
0072:  BSF    06.3
....................       output_high(PIN_B0);
0073:  BSF    03.5
0074:  BCF    06.0
0075:  BCF    03.5
0076:  BSF    06.0
....................       output_high(PIN_D7);
0077:  BSF    03.5
0078:  BCF    08.7
0079:  BCF    03.5
007A:  BSF    08.7
....................       output_high(PIN_D6);
007B:  BSF    03.5
007C:  BCF    08.6
007D:  BCF    03.5
007E:  BSF    08.6
....................       output_high(PIN_D4);
007F:  BSF    03.5
0080:  BCF    08.4
0081:  BCF    03.5
0082:  BSF    08.4
....................       output_high(PIN_C7);
0083:  BCF    25.7
0084:  MOVF   25,W
0085:  BSF    03.5
0086:  MOVWF  07
0087:  BCF    03.5
0088:  BSF    07.7
....................       output_high(PIN_D3);
0089:  BSF    03.5
008A:  BCF    08.3
008B:  BCF    03.5
008C:  BSF    08.3
....................       }
....................    if (c=='3')
008D:  MOVF   28,W
008E:  SUBLW  33
008F:  BTFSS  03.2
0090:  GOTO   0B5
....................       {
....................       output_high(PIN_D3);
0091:  BSF    03.5
0092:  BCF    08.3
0093:  BCF    03.5
0094:  BSF    08.3
....................       output_high(PIN_C5);
0095:  BCF    25.5
0096:  MOVF   25,W
0097:  BSF    03.5
0098:  MOVWF  07
0099:  BCF    03.5
009A:  BSF    07.5
....................       output_high(PIN_C7);
009B:  BCF    25.7
009C:  MOVF   25,W
009D:  BSF    03.5
009E:  MOVWF  07
009F:  BCF    03.5
00A0:  BSF    07.7
....................       output_high(PIN_D4);
00A1:  BSF    03.5
00A2:  BCF    08.4
00A3:  BCF    03.5
00A4:  BSF    08.4
....................       output_high(PIN_D6);
00A5:  BSF    03.5
00A6:  BCF    08.6
00A7:  BCF    03.5
00A8:  BSF    08.6
....................       output_high(PIN_D7);
00A9:  BSF    03.5
00AA:  BCF    08.7
00AB:  BCF    03.5
00AC:  BSF    08.7
....................       output_high(PIN_B3);
00AD:  BSF    03.5
00AE:  BCF    06.3
00AF:  BCF    03.5
00B0:  BSF    06.3
....................       output_high(PIN_B7);
00B1:  BSF    03.5
00B2:  BCF    06.7
00B3:  BCF    03.5
00B4:  BSF    06.7
....................       }
....................    if (c=='4')
00B5:  MOVF   28,W
00B6:  SUBLW  34
00B7:  BTFSS  03.2
00B8:  GOTO   0D1
....................       {
....................       output_high(PIN_C5);
00B9:  BCF    25.5
00BA:  MOVF   25,W
00BB:  BSF    03.5
00BC:  MOVWF  07
00BD:  BCF    03.5
00BE:  BSF    07.5
....................       output_high(PIN_C7);
00BF:  BCF    25.7
00C0:  MOVF   25,W
00C1:  BSF    03.5
00C2:  MOVWF  07
00C3:  BCF    03.5
00C4:  BSF    07.7
....................       output_high(PIN_D4);
00C5:  BSF    03.5
00C6:  BCF    08.4
00C7:  BCF    03.5
00C8:  BSF    08.4
....................       output_high(PIN_B3);
00C9:  BSF    03.5
00CA:  BCF    06.3
00CB:  BCF    03.5
00CC:  BSF    06.3
....................       output_high(PIN_B4);
00CD:  BSF    03.5
00CE:  BCF    06.4
00CF:  BCF    03.5
00D0:  BSF    06.4
....................       }
....................    if (c=='5')
00D1:  MOVF   28,W
00D2:  SUBLW  35
00D3:  BTFSS  03.2
00D4:  GOTO   0F9
....................       {
....................       output_high(PIN_D3);
00D5:  BSF    03.5
00D6:  BCF    08.3
00D7:  BCF    03.5
00D8:  BSF    08.3
....................       output_high(PIN_C5);
00D9:  BCF    25.5
00DA:  MOVF   25,W
00DB:  BSF    03.5
00DC:  MOVWF  07
00DD:  BCF    03.5
00DE:  BSF    07.5
....................       output_high(PIN_C7);
00DF:  BCF    25.7
00E0:  MOVF   25,W
00E1:  BSF    03.5
00E2:  MOVWF  07
00E3:  BCF    03.5
00E4:  BSF    07.7
....................       output_high(PIN_D6);
00E5:  BSF    03.5
00E6:  BCF    08.6
00E7:  BCF    03.5
00E8:  BSF    08.6
....................       output_high(PIN_D7);
00E9:  BSF    03.5
00EA:  BCF    08.7
00EB:  BCF    03.5
00EC:  BSF    08.7
....................       output_high(PIN_B3);
00ED:  BSF    03.5
00EE:  BCF    06.3
00EF:  BCF    03.5
00F0:  BSF    06.3
....................       output_high(PIN_B4);
00F1:  BSF    03.5
00F2:  BCF    06.4
00F3:  BCF    03.5
00F4:  BSF    06.4
....................       output_high(PIN_B7);
00F5:  BSF    03.5
00F6:  BCF    06.7
00F7:  BCF    03.5
00F8:  BSF    06.7
....................       }
....................    if ((c=='r')||(c=='R'))
00F9:  MOVF   28,W
00FA:  SUBLW  72
00FB:  BTFSC  03.2
00FC:  GOTO   101
00FD:  MOVF   28,W
00FE:  SUBLW  52
00FF:  BTFSS  03.2
0100:  GOTO   125
....................       {
....................       output_high(PIN_C6);
0101:  BCF    25.6
0102:  MOVF   25,W
0103:  BSF    03.5
0104:  MOVWF  07
0105:  BCF    03.5
0106:  BSF    07.6
....................       output_high(PIN_C7);
0107:  BCF    25.7
0108:  MOVF   25,W
0109:  BSF    03.5
010A:  MOVWF  07
010B:  BCF    03.5
010C:  BSF    07.7
....................       output_high(PIN_D4);
010D:  BSF    03.5
010E:  BCF    08.4
010F:  BCF    03.5
0110:  BSF    08.4
....................       output_high(PIN_D6);
0111:  BSF    03.5
0112:  BCF    08.6
0113:  BCF    03.5
0114:  BSF    08.6
....................       output_high(PIN_B0);
0115:  BSF    03.5
0116:  BCF    06.0
0117:  BCF    03.5
0118:  BSF    06.0
....................       output_high(PIN_B3);
0119:  BSF    03.5
011A:  BCF    06.3
011B:  BCF    03.5
011C:  BSF    06.3
....................       output_high(PIN_B4);
011D:  BSF    03.5
011E:  BCF    06.4
011F:  BCF    03.5
0120:  BSF    06.4
....................       output_high(PIN_B7);
0121:  BSF    03.5
0122:  BCF    06.7
0123:  BCF    03.5
0124:  BSF    06.7
....................       }
....................    if ((c=='n')||(c=='N'))
0125:  MOVF   28,W
0126:  SUBLW  6E
0127:  BTFSC  03.2
0128:  GOTO   12D
0129:  MOVF   28,W
012A:  SUBLW  4E
012B:  BTFSS  03.2
012C:  GOTO   149
....................       {
....................       output_high(PIN_C5);
012D:  BCF    25.5
012E:  MOVF   25,W
012F:  BSF    03.5
0130:  MOVWF  07
0131:  BCF    03.5
0132:  BSF    07.5
....................       output_high(PIN_C6);
0133:  BCF    25.6
0134:  MOVF   25,W
0135:  BSF    03.5
0136:  MOVWF  07
0137:  BCF    03.5
0138:  BSF    07.6
....................       output_high(PIN_D4);
0139:  BSF    03.5
013A:  BCF    08.4
013B:  BCF    03.5
013C:  BSF    08.4
....................       output_high(PIN_B0);
013D:  BSF    03.5
013E:  BCF    06.0
013F:  BCF    03.5
0140:  BSF    06.0
....................       output_high(PIN_B4);
0141:  BSF    03.5
0142:  BCF    06.4
0143:  BCF    03.5
0144:  BSF    06.4
....................       output_high(PIN_B5);
0145:  BSF    03.5
0146:  BCF    06.5
0147:  BCF    03.5
0148:  BSF    06.5
....................       }
....................    }
0149:  RETLW  00
.................... 
.................... void main()
.................... {
*
015E:  CLRF   04
015F:  MOVLW  1F
0160:  ANDWF  03,F
0161:  BSF    03.5
0162:  BSF    1F.0
0163:  BSF    1F.1
0164:  BSF    1F.2
0165:  BCF    1F.3
.................... int b,z=1;
*
0169:  MOVLW  01
016A:  MOVWF  27
....................    setup_adc_ports(NO_ANALOGS);
016B:  BSF    03.5
016C:  BSF    1F.0
016D:  BSF    1F.1
016E:  BSF    1F.2
016F:  BCF    1F.3
....................    setup_adc(ADC_OFF);
0170:  BCF    03.5
0171:  BCF    1F.0
....................    setup_psp(PSP_DISABLED);
0172:  BSF    03.5
0173:  BCF    09.4
....................    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
0174:  MOVF   01,W
0175:  ANDLW  C7
0176:  IORLW  08
0177:  MOVWF  01
....................    setup_timer_1(T1_DISABLED);
0178:  BCF    03.5
0179:  CLRF   10
....................    setup_timer_2(T2_DISABLED,0,1);
017A:  MOVLW  00
017B:  MOVWF  21
017C:  MOVWF  12
017D:  MOVLW  00
017E:  BSF    03.5
017F:  MOVWF  12
.................... 
....................    // TODO: USER CODE!!
.................... cg();g('1');delay_ms(100);
0180:  BCF    03.5
0181:  CALL   004
0182:  MOVLW  31
0183:  MOVWF  28
0184:  CALL   055
0185:  MOVLW  64
0186:  MOVWF  28
0187:  CALL   14A
.................... cg();g('2');delay_ms(100);
0188:  CALL   004
0189:  MOVLW  32
018A:  MOVWF  28
018B:  CALL   055
018C:  MOVLW  64
018D:  MOVWF  28
018E:  CALL   14A
.................... cg();g('3');delay_ms(100);
018F:  CALL   004
0190:  MOVLW  33
0191:  MOVWF  28
0192:  CALL   055
0193:  MOVLW  64
0194:  MOVWF  28
0195:  CALL   14A
.................... cg();g('4');delay_ms(100);
0196:  CALL   004
0197:  MOVLW  34
0198:  MOVWF  28
0199:  CALL   055
019A:  MOVLW  64
019B:  MOVWF  28
019C:  CALL   14A
.................... cg();g('5');delay_ms(100);
019D:  CALL   004
019E:  MOVLW  35
019F:  MOVWF  28
01A0:  CALL   055
01A1:  MOVLW  64
01A2:  MOVWF  28
01A3:  CALL   14A
.................... cg();g('r');delay_ms(100);
01A4:  CALL   004
01A5:  MOVLW  72
01A6:  MOVWF  28
01A7:  CALL   055
01A8:  MOVLW  64
01A9:  MOVWF  28
01AA:  CALL   14A
.................... cg();g('n');delay_ms(100);
01AB:  CALL   004
01AC:  MOVLW  6E
01AD:  MOVWF  28
01AE:  CALL   055
01AF:  MOVLW  64
01B0:  MOVWF  28
01B1:  CALL   14A
.................... 
.................... output_high(PIN_A0);
01B2:  BSF    03.5
01B3:  BCF    05.0
01B4:  BCF    03.5
01B5:  BSF    05.0
.................... output_high(PIN_A1);
01B6:  BSF    03.5
01B7:  BCF    05.1
01B8:  BCF    03.5
01B9:  BSF    05.1
.................... output_high(PIN_A2);
01BA:  BSF    03.5
01BB:  BCF    05.2
01BC:  BCF    03.5
01BD:  BSF    05.2
.................... output_high(PIN_A3);
01BE:  BSF    03.5
01BF:  BCF    05.3
01C0:  BCF    03.5
01C1:  BSF    05.3
.................... output_high(PIN_A4);
01C2:  BSF    03.5
01C3:  BCF    05.4
01C4:  BCF    03.5
01C5:  BSF    05.4
.................... output_high(PIN_A5);
01C6:  BSF    03.5
01C7:  BCF    05.5
01C8:  BCF    03.5
01C9:  BSF    05.5
.................... delay_ms(1);
01CA:  MOVLW  01
01CB:  MOVWF  28
01CC:  CALL   14A
....................    b=1;
01CD:  MOVLW  01
01CE:  MOVWF  26
.................... while(TRUE)
....................  {
.................... 
.................... if (b) { 
01CF:  MOVF   26,F
01D0:  BTFSC  03.2
01D1:  GOTO   22A
.................... while (!input(PIN_C2))  {
01D2:  BSF    25.2
01D3:  MOVF   25,W
01D4:  BSF    03.5
01D5:  MOVWF  07
01D6:  BCF    03.5
01D7:  BTFSC  07.2
01D8:  GOTO   1FE
....................                      if (!input(PIN_C3)) {cg();g('1');b=0;break;}
01D9:  BSF    25.3
01DA:  MOVF   25,W
01DB:  BSF    03.5
01DC:  MOVWF  07
01DD:  BCF    03.5
01DE:  BTFSC  07.3
01DF:  GOTO   1E6
01E0:  CALL   004
01E1:  MOVLW  31
01E2:  MOVWF  28
01E3:  CALL   055
01E4:  CLRF   26
01E5:  GOTO   1FE
....................                      if (!input(PIN_D0)) {cg();g('3');b=0;break;}
01E6:  BSF    03.5
01E7:  BSF    08.0
01E8:  BCF    03.5
01E9:  BTFSC  08.0
01EA:  GOTO   1F1
01EB:  CALL   004
01EC:  MOVLW  33
01ED:  MOVWF  28
01EE:  CALL   055
01EF:  CLRF   26
01F0:  GOTO   1FE
....................                      if (!input(PIN_D1)) {cg();g('5');b=0;break;}
01F1:  BSF    03.5
01F2:  BSF    08.1
01F3:  BCF    03.5
01F4:  BTFSC  08.1
01F5:  GOTO   1FC
01F6:  CALL   004
01F7:  MOVLW  35
01F8:  MOVWF  28
01F9:  CALL   055
01FA:  CLRF   26
01FB:  GOTO   1FE
....................                      break;
01FC:  GOTO   1FE
....................                      }
01FD:  GOTO   1D2
.................... while (!input(PIN_C0))  {
01FE:  BSF    25.0
01FF:  MOVF   25,W
0200:  BSF    03.5
0201:  MOVWF  07
0202:  BCF    03.5
0203:  BTFSC  07.0
0204:  GOTO   22A
....................                      if (!input(PIN_C3)) {cg();g('2');b=0;break;}
0205:  BSF    25.3
0206:  MOVF   25,W
0207:  BSF    03.5
0208:  MOVWF  07
0209:  BCF    03.5
020A:  BTFSC  07.3
020B:  GOTO   212
020C:  CALL   004
020D:  MOVLW  32
020E:  MOVWF  28
020F:  CALL   055
0210:  CLRF   26
0211:  GOTO   22A
....................                      if (!input(PIN_D0)) {cg();g('4');b=0;break;}
0212:  BSF    03.5
0213:  BSF    08.0
0214:  BCF    03.5
0215:  BTFSC  08.0
0216:  GOTO   21D
0217:  CALL   004
0218:  MOVLW  34
0219:  MOVWF  28
021A:  CALL   055
021B:  CLRF   26
021C:  GOTO   22A
....................                      if (!input(PIN_D1)) {cg();g('r');b=0;break;}
021D:  BSF    03.5
021E:  BSF    08.1
021F:  BCF    03.5
0220:  BTFSC  08.1
0221:  GOTO   228
0222:  CALL   004
0223:  MOVLW  72
0224:  MOVWF  28
0225:  CALL   055
0226:  CLRF   26
0227:  GOTO   22A
....................                      break;
0228:  GOTO   22A
....................                      }                     
0229:  GOTO   1FE
....................       }
....................       
....................       
.................... if (!b)
022A:  MOVF   26,F
022B:  BTFSS  03.2
022C:  GOTO   248
....................    {
....................      if ((!input(PIN_C1))&&(input(PIN_C0))&&(input(PIN_C2))) {cg();g('n');b=1;}
022D:  BSF    25.1
022E:  MOVF   25,W
022F:  BSF    03.5
0230:  MOVWF  07
0231:  BCF    03.5
0232:  BTFSC  07.1
0233:  GOTO   248
0234:  BSF    25.0
0235:  MOVF   25,W
0236:  BSF    03.5
0237:  MOVWF  07
0238:  BCF    03.5
0239:  BTFSS  07.0
023A:  GOTO   248
023B:  BSF    25.2
023C:  MOVF   25,W
023D:  BSF    03.5
023E:  MOVWF  07
023F:  BCF    03.5
0240:  BTFSS  07.2
0241:  GOTO   248
0242:  CALL   004
0243:  MOVLW  6E
0244:  MOVWF  28
0245:  CALL   055
0246:  MOVLW  01
0247:  MOVWF  26
....................    }
....................    if (z) {b=0;z=0;}
0248:  MOVF   27,F
0249:  BTFSC  03.2
024A:  GOTO   24D
024B:  CLRF   26
024C:  CLRF   27
....................    }
024D:  GOTO   1CF
.................... }
024E:  SLEEP

Configuration Fuses:
   Word  1: 3F79   XT NOWDT NOPUT NOPROTECT NODEBUG BROWNOUT NOLVP NOCPD NOWRT


http://noyz2k.com/gear/MOV03448.avi this is what i'm working about
i'm not using demultiplexer because i hate the flikering rate..
Ttelmah
Guest







PostPosted: Mon Feb 02, 2009 4:10 pm     Reply with quote

The listing is right.
If it isn't doing what you expect, then your code is wrong, or your signals aren't behaving as you think they are.
Code:

....................                      if (!input(PIN_D0)) {cg();g('3');b=0;break;}
//set TRIS high for D0
01E6:  BSF    03.5
01E7:  BSF    08.0
01E8:  BCF    03.5
//Read pin - if it is high, skip to address 1F1
01E9:  BTFSC  08.0
01EA:  GOTO   1F1
01EB:  CALL   004 //This is the call to 'cg'
01EC:  MOVLW  33 //ASCII '3'
01ED:  MOVWF  28
01EE:  CALL   055 //call to 'g'
01EF:  CLRF   26 //set b=0
01F0:  GOTO   1FE
....................                      if (!input(PIN_D1)) {cg();g('5');b=0;break;}
//Correctly gets here if D0 was high
01F1:  BSF    03.5 //Now set tris for D1
01F2:  BSF    08.1
01F3:  BCF    03.5
01F4:  BTFSC  08.1 //and test D1
01F5:  GOTO   1FC
01F6:  CALL   004
01F7:  MOVLW  35
01F8:  MOVWF  28
01F9:  CALL   055
01FA:  CLRF   26
01FB:  GOTO   1FE

Seriously, you have something else wrong. Classic example, would be something like the actual 'high' level on the pins, not quite being 'high'.
The third section of code, _will_ be called, if D0 is high and D1 is low.

Best Wishes
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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