HAI, I would like to implement TTL interface to a swipe card reader. I want to read track 2 of a card .This contains alphanumeric characters and each character is of 5 bit size which includes one parity bit. I designed a hardware circuit for this with AT89c2051. The data is coming as a stream of bits from the readers magnetic head. So I have store this bit stream to a bit array. I used bdata variable for this purpose, but is not possible to write to the bit position. How I can write these bits to my bit array? What is wrong with code below: I used the pin P1.6 as the input for the data from card reader's magnetic head. Please help me.
sbit dat=P1^6; bdata unsigned char mydata[13]; for (i = 0; i < 13; i++) { for (mask = 0x01; mask != 0x00; mask <<= 1) { mydata[i] & mask = dat; } }
Here the error I got is errorC141:syntax error near'=';
Please give a replay.
did you mean
mydata[i] = dat & mask ;
?
I am affraid that you can't use complete C code, as the async data from Card reader will be coming at much faster rate than the code execution time.
Attempt to write in ASM and integrate in the 'c' main: -Init. & Reserve arrray of IDATA -Use bitwise operators to store seq. in IDATA
You have varies ways to make this idata available in global scope.
If your code works in simulator & not in actual circuit, most probably your circut has different timings. Ive' have ot got the code and cannot see the problem(havn't run it), here are my suggesitions, 1) Make sure you wait atleast 30mSec before it's initialization is started. To be on the safer side use more delays than what they specifies.
Hope that helps. If you still having problems I'll post a example with C which you can easily convert to ASM.
HAI, Thanx for your fast reply . How its possible in C ,how can i sotre bit stream data?
mydata[i] & mask = dat;
That is not valid 'C' - the expression is not valid for the left-hand side of the '='
View all questions in Keil forum