if i send one character from 8051 board to hyperterminal its working. suppose if i send an array to hyperterminal its not working. can anybody suggest whats wrong with my code. here is my sample code #include<reg52.h> void main() { char name; unsigned int i; char hmi[] = {'0','0','0','0','3','0','3','3'}; PCON |= 0x80; TMOD = 0x20; TH1 = 0xFD; SCON = 0x50; TR1 = 1; while(1) { while(!RI); RI = 0; name = SBUF; TI = 0; SBUF = '#'; while(!TI); for(i = 0; i < 8; i++) { TI = 0; SBUF = hmi[i]; while(!TI); } i = 0; TI = 0; SBUF = '?'; while(!TI); } } }
hello Mr.Neo, yes ur correct, # and * are transmitting perfectly. but the array values are not transmitting(only garbage value is transmitting)
Is it possible that you are transmitting the contents of the array correctly but the data in the array is not what you expect? Just have a look at the array in the Watch window to check the contents. I'm not sure when the array will actually be initialised but either the start-up code or main function prologue code will do it. If that didn't succeed, then your array would contain 'garbage'. It's worth eliminating this possibility anyway.
hello Mr.Patrick, yes i checked in watch window, array content is similar to that one i initialized.
It seems like problem with the initialization of array. You first declare the array and next you initialize the array. Now you try.
What parity setting is Hyperterminal using? I note that '#' and '?' characters have an odd number of high bits in their ascii coding while '0' and '3' have an even number of high bits.
hello Mr.Patrick, not only with 0's with any character only garbage value is transmitting
hello Mr.Neo, I tried that too. its not working
Then you do one thing. In the section
for(i = 0; i < 8; i++) { TI = 0; SBUF = hmi[i]; while(!TI); }
SBUF = hmi[i]
SBUF = 0x41
char * hmi ="0003030"