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.
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 it's data from a standard track 2 interface and your processor is running at a reasonable rate (>7MHz) then you will easily be able to write the ISR in C.
You might find it easiest to have a 'storage index' and a 'bit mask' to write each bit to a buffer. Much as 'S Edara' suggests.
Thanks Flaver, I have not done my home work on the speed.