bambangSud

Serial2display

Sep 1st, 2013
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. /*
  2. BLINK.C > Serial2Sevensecment
  3. Device: 89S51
  4.  
  5. compiler: SDCC on MIDE-51 >> http://sdcc.sourceforge.net/
  6. Bandung 21 Mei 13
  7. Done: 28 Mei 2013
  8. */
  9.  
  10. #include <at89x51.h>
  11.  
  12. char tabel[]={238,130,118,214,154,220,252,134,254,222,0,16};
  13. int i,j,x,id;
  14. int tock,second,minute,hour;
  15. volatile unsigned char n ;
  16. volatile unsigned int tick,k,xblink;
  17. volatile char index[10],buffer[11];
  18.  
  19. void TimerISR (void) __interrupt TF0_VECTOR // OK 22 mei 13
  20. {
  21. TH0=0xDC;
  22. TL0=0x00;
  23. tick++;
  24. if(tick==2){
  25. tick=0;
  26.  
  27.  
  28. if(i==0) {i=0x10;
  29. }
  30. i=i>>1;
  31. P0=i;
  32. P2 =tabel[index[j]]; //
  33. j++;
  34. if(j==10) j=5;
  35.  
  36. }
  37. }
  38.  
  39. //--------------
  40. void SerialISR (void) __interrupt SI0_VECTOR //4 23may13
  41. {
  42. if (RI)
  43. {
  44.  
  45. n = SBUF;
  46. RI = 0;
  47. if(n=='*'){k=0;}
  48.  
  49. //index[k]=n-48;
  50. buffer[k]=n-48;
  51. if(n==' '){
  52. //index[k]=10;
  53. buffer[k]=10;
  54. }
  55. k++;
  56. xblink=0;
  57. if(buffer[3]+48=='B'){
  58. xblink=buffer[4]*10+buffer[5];
  59. }
  60. //if(k==10) k=6;
  61. //}
  62. }
  63. else if (TI)
  64. {
  65. SBUF = n;
  66. TI = 0;
  67. }
  68. }
  69. //--------------
  70.  
  71. void delay(int n)
  72. {
  73. int i, j;
  74. for (i=1;i<=n;i++)
  75. for (j=1;j<=10;j++);
  76. }
  77.  
  78. void putchar (char c)
  79. {
  80. while (!TI);
  81. TI = 0;
  82. SBUF = c;
  83. }
  84.  
  85. char getchar(void)
  86. {
  87. if (RI!=0)
  88. {
  89. RI = 0;
  90. return SBUF;
  91. }
  92. else
  93. return -1;
  94. }
  95.  
  96. void initseri()
  97. {
  98.  
  99. PCON = 0x80;
  100. TH1 = 0xFA;
  101. TR1 = 1;
  102. ES = 1;
  103. TI = 0;
  104. RI = 0;
  105. EA = 1;
  106. }
  107.  
  108.  
  109. void blink()
  110. {
  111. delay(5000);
  112. TR0=0;
  113. P0=0x00;
  114. P2=0xff;
  115. delay(5000);
  116. TR0=1;
  117. }
  118. //------------------------------------------------------------------------------
  119.  
  120. int main(void)
  121. {
  122.  
  123. TL0=0;
  124. TH0=0;
  125. ET0=1;
  126. EA = 0;
  127. SCON = 0x50;
  128. TMOD |= 0x22;
  129.  
  130. TR0=1;
  131. TR1 = 1;
  132. ES = 1;
  133. EA = 1;
  134.  
  135. id=P1;
  136. id &=0b00111111;
  137.  
  138. initseri();
  139. i=0x10;
  140. j=6;
  141.  
  142. index[6]=11;
  143. index[7]=11;
  144. index[8]=11;
  145. index[9]=11;
  146. k=6;
  147.  
  148. while(1) //loop
  149. {
  150.  
  151. int n=0;
  152. n=((buffer[1])*10)+(buffer[2]); //25may13
  153. if(n==id){
  154. n=6;
  155. while(n<10){
  156. index[n]=buffer[n];
  157. n++;
  158. }
  159.  
  160. if(xblink!=0 && (buffer[3]+48=='B')){
  161. blink();
  162. xblink--;
  163. }
  164. }
  165. }
  166.  
  167. }// main-------
Advertisement
Add Comment
Please, Sign In to add comment