Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<DS89C4xx.h>
- #include<stdio.h>
- sbit Tsignal = P3^2; //Set sbit Tsignal at P3.2
- sbit Learn = P2^7; //Set sbit Learn at P1.3
- unsigned int i;
- unsigned int u;
- unsigned char p;
- unsigned char xdata x[500];
- unsigned char xdata y[500];
- void tx_port1(unsigned char a)
- {
- SBUF1=a;
- while(TI_1==0);
- TI_1=0;
- }
- void SPort (void)
- {
- TMOD = 0x20;
- TH1 = 0xFD;
- SCON0 = 0x50;
- SCON1 = 0x50;
- TR1 = 1;
- }
- void timer0(void)
- {
- TMOD = 0x01; //Timer0 , Mode 1
- TH0 = 0xFF; //Set timer to count from -35 = FFDDh
- TL0 = 0xDA; //Read every 38us.
- TR0 = 1;
- while(TF0==0); //Turn on Timer0
- TF0 = 0; //Set Flag to 0;
- TR0 = 0; //Turn off Timer0
- }//end function
- void ext_int0(void)interrupt 0 //External Interrupt0
- {
- if(Learn==1)
- {
- for(i=0;i<500;i++) //Loop for 500 bytes
- {
- timer0(); //Call timer0 function
- for(u=0;u<8;u++) //Bit Shift Loop
- {
- x[i] = x[i] <<1; //Left Bit Shift by 1
- p = Tsignal; //Store Tsignal to Buffer p
- tx_port1(p);
- x[i] |= p; //OR Masking of p with x[i]
- }//End Bitshift loop
- }//end 500 bytes for loop
- }//end Learn while loop
- else //When Learn button is not pressed, data is stored in y
- {
- for(i=0;i<500;i++) //Loop for 500 bytes
- {
- timer0(); //Call timer0 function
- for(u=0;u<8;u++)
- {
- y[i] = y[i] <<1; //Left Shift bit by 1;
- p = Tsignal; //Store Tsignal in buffer p;
- tx_port1(p);
- y[i] |= p; //OR masking p with y[i];
- }
- }//end 500bytes for loop
- }//end while loop
- }
- /********************MAIN********************/
- void main(void)
- {
- SPort();
- PMR=1;
- Learn = 0;
- EA = 1; //Enable Edge Trigger Interrupt
- EX0 = 1;
- IT0 = 1;
- }//end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement