Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <K1887VE3T.H>
- #define DELAYS 10
- #define RAMSTART 0xD800
- #define RAMLEN 0x0010 //0x1000
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- typedef union lhw {
- WORD w;
- BYTE l;
- BYTE h;
- } LHWORD;
- void delay(WORD iters)
- {
- WORD i = 0;
- for(i = 0; i < iters; i++)
- {
- }
- }
- void send_error(BYTE exepted, BYTE recieved, WORD address)
- {
- LHWORD addr;
- addr.w = address;
- S0TBUF = exepted;
- delay(DELAYS);
- S0TBUF = recieved;
- delay(DELAYS);
- S0TBUF = addr.l;
- delay(DELAYS);
- S0TBUF = addr.h;
- delay(DELAYS);
- }
- void send_ok()
- {
- S0TBUF = 0x43;
- delay(DELAYS);
- S0TBUF = 0x4D;
- delay(DELAYS);
- }
- int main()
- {
- BYTE seq = 0;
- WORD offset = 0;
- BYTE* addrp = RAMSTART;
- BYTE test_seq[5] = {0x55, 0xAA, 0xFF, 0x00, 0x55};
- SP = 0xFBFE;
- DP3 |= 0x8400;
- DP6 |=0xFF;
- P3 |= 0x8400;
- DP3 &= 0xF7FF; /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */
- S0TIC = 0x80; /* SET TRANSMIT INTERRUPT FLAG */
- S0RIC = 0x00; /* DELETE RECEIVE INTERRUPT FLAG */
- S0BG = 0x40; /* SET BAUDRATE TO 9600 BAUD */
- S0CON = 0x8011; /* SET SERIAL MODE */
- ALTSEL0P3 |= 0x8400;
- for(offset = 0; offset < RAMLEN; offset++)
- addrp[offset] = test_seq[0];
- while(1)
- {
- send_ok();
- for(seq = 0; seq < 4; seq++)
- {
- for(offset = 0; offset < RAMLEN; offset++)
- {
- if(addrp[offset] == test_seq[seq])
- {
- addrp[offset] = test_seq[seq + 1];
- }
- else
- {
- send_error(test_seq[seq], addrp[offset], (WORD)addrp + offset);
- addrp[offset] = test_seq[seq + 1];
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement