Advertisement
Guest User

DS89C450

a guest
May 10th, 2012
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.04 KB | None | 0 0
  1. #include<DS89C4xx.h>
  2. #include<stdio.h>
  3.  
  4.  
  5. sbit Tsignal = P3^2;                     //Set sbit Tsignal at P3.2
  6. sbit Learn = P2^7;                       //Set sbit Learn at P1.3
  7. unsigned int i;
  8. unsigned int u;
  9. unsigned char p;
  10. unsigned char xdata x[500];              
  11. unsigned char xdata y[500];  
  12.      
  13. void tx_port1(unsigned char a)
  14. {
  15.     SBUF1=a;
  16.     while(TI_1==0);
  17.     TI_1=0;        
  18. }
  19.  
  20.  
  21. void SPort (void)
  22. {
  23.  TMOD = 0x20;
  24.  TH1 = 0xFD;
  25.  SCON0 = 0x50;
  26.  SCON1 = 0x50;
  27.  TR1 = 1;
  28. }
  29.  
  30.  
  31.  
  32. void timer0(void)
  33. {
  34.  TMOD = 0x01;                           //Timer0 , Mode 1
  35.  TH0 = 0xFF;                            //Set timer to count from -35 = FFDDh
  36.  TL0 = 0xDA;                            //Read every 38us.
  37.  TR0 = 1;
  38.  while(TF0==0);                         //Turn on Timer0                             
  39.  TF0 = 0;                               //Set Flag to 0;
  40.  TR0 = 0;                               //Turn off Timer0
  41. }//end function
  42.  
  43. void ext_int0(void)interrupt 0    //External Interrupt0
  44. {
  45.  if(Learn==1)                            
  46.  {
  47.  
  48.    for(i=0;i<500;i++)                    //Loop for 500 bytes
  49.    {
  50.     timer0();                            //Call timer0 function
  51.                        
  52.      for(u=0;u<8;u++)                    //Bit Shift Loop
  53.    {
  54.      x[i] = x[i] <<1;                    //Left Bit Shift by 1
  55.      p = Tsignal;                        //Store Tsignal to Buffer p
  56.      tx_port1(p);
  57.      x[i] |= p;                           //OR Masking of p with x[i]                          
  58.      
  59.  
  60.    }//End Bitshift loop
  61.    
  62.    }//end 500 bytes for loop
  63.  }//end Learn while loop
  64.  
  65.  
  66.  else                       //When Learn button is not pressed, data is stored in y
  67.  {
  68.   for(i=0;i<500;i++)                     //Loop for 500 bytes
  69.   {
  70.    timer0();                             //Call timer0 function
  71.  
  72.     for(u=0;u<8;u++)
  73.    {
  74.      y[i] = y[i] <<1;                    //Left Shift bit by 1;
  75.      p = Tsignal;                                         //Store Tsignal in buffer p;
  76.      tx_port1(p);                      
  77.      y[i] |= p;                          //OR masking p with y[i];                                   
  78.    }
  79.                                      
  80.                          
  81.   }//end 500bytes for loop
  82.  }//end while loop
  83. }
  84.  
  85. /********************MAIN********************/
  86. void main(void)
  87. {
  88.  SPort();
  89.  PMR=1;
  90.  Learn = 0;                                      
  91.  EA = 1;                                         //Enable Edge Trigger Interrupt
  92.  EX0 = 1;
  93.  IT0 = 1;
  94.  
  95.  
  96.  
  97. }//end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement