Hi, i'm pretty new to programming. I'm currently using Keil uvision to program AT89S4051 Microcontroller in C language. I'm trying to read bit by bit data from the I/O port every 50us and store it in an external memory bit by bit. However, i would want to store a bit then shift to next bit and store. After 8 bits, store on a new byte and for 300 bytes. Anyone could suggest a method on how to do that? My program is posted down below (it's probably full of mistakes) Thanks in advance.
#include <reg51.h> sbit Tsignal = P1^2; //Input Signal sbit Learn = P1^3; unsigned int i; unsigned char xdata x[300]; unsigned char xdata y[300]; void timer0(void) { TMOD = 0x01; //Timer0 , Mode 1 TH0 = 0xFF; //Set timer to count from -46 = FFD2h TL0 = 0xD2; TR0 = 1; while(TF0==0); //Turn on Timer0 TF0 = 0; //Set Flag to 0; TR0 = 0; //Turn off Timer0 } void main(void) { Learn=0; if(Learn==1) //If learn button is pressed, data as stored as sampling data { for(i=0;i<299;i++) //Loop for 300 bytes { timer0(); //Call timer0 function x[i] = Tsignal; //Store Tsignal in x } } else //When Learn button is not pressed, data is stored as { for(i=0;i<299;i++) //Loop for 300 bytes { timer0(); //Call timer0 function y[i] = Tsignal; //Store Tsignal in y } } }
Yeah, definitely i will choose a suitable/better choice after i studied the notes. Just now i was only trying to say that i chose the External Memory is not because of Per mentioned about I2C.