Advertisement
Guest User

Untitled

a guest
Aug 1st, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.59 KB | None | 0 0
  1. #include <K1887VE3T.H>
  2.  
  3. #define DELAYS      10
  4. #define RAMSTART    0xD800
  5. #define RAMLEN      0x0010 //0x1000
  6.  
  7. typedef unsigned char   BYTE;
  8. typedef unsigned int    WORD;
  9. typedef union lhw {
  10.     WORD w;
  11.     BYTE l;
  12.     BYTE h;
  13. } LHWORD;
  14.  
  15. void delay(WORD iters)
  16. {
  17.     WORD i = 0;
  18.     for(i = 0; i < iters; i++)
  19.     {
  20.        
  21.     }
  22. }
  23.  
  24. void send_error(BYTE exepted, BYTE recieved, WORD address)
  25. {
  26.     LHWORD addr;
  27.     addr.w = address;
  28.     S0TBUF = exepted;
  29.     delay(DELAYS);
  30.     S0TBUF = recieved;
  31.     delay(DELAYS);
  32.     S0TBUF = addr.l;
  33.     delay(DELAYS);
  34.     S0TBUF = addr.h;
  35.     delay(DELAYS);
  36. }
  37.  
  38. void send_ok()
  39. {
  40.     S0TBUF = 0x43;
  41.     delay(DELAYS);
  42.     S0TBUF = 0x4D;
  43.     delay(DELAYS);
  44. }
  45.  
  46. int main()
  47. {
  48.     BYTE seq = 0;
  49.     WORD    offset = 0;
  50.     BYTE* addrp = RAMSTART;
  51.     BYTE    test_seq[5] = {0x55, 0xAA, 0xFF, 0x00, 0x55};
  52.    
  53.     SP = 0xFBFE;
  54.     DP3 |= 0x8400;
  55.     DP6 |=0xFF;
  56.     P3 |= 0x8400;
  57.   DP3 &= 0xF7FF;        /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */
  58.   S0TIC = 0x80;         /* SET TRANSMIT INTERRUPT FLAG                   */
  59.   S0RIC = 0x00;         /* DELETE RECEIVE INTERRUPT FLAG                 */
  60.   S0BG  = 0x40;         /* SET BAUDRATE TO 9600 BAUD                     */
  61.   S0CON = 0x8011;       /* SET SERIAL MODE                               */
  62.     ALTSEL0P3 |= 0x8400;
  63.    
  64.     for(offset = 0; offset < RAMLEN; offset++)
  65.         addrp[offset] = test_seq[0];
  66.    
  67.     while(1)
  68.     {
  69.         send_ok();
  70.         for(seq = 0; seq < 4; seq++)
  71.         {
  72.             for(offset = 0; offset < RAMLEN; offset++)
  73.             {
  74.                 if(addrp[offset] == test_seq[seq])
  75.                 {
  76.                     addrp[offset] = test_seq[seq + 1];
  77.                 }
  78.                 else
  79.                 {
  80.                     send_error(test_seq[seq], addrp[offset], (WORD)addrp + offset);
  81.                     addrp[offset] = test_seq[seq + 1];
  82.                 }
  83.             }
  84.         }
  85.     }
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement