单片机串口调试
1 #include <reg52.h> 2 #include <stdio.h> 3 #define uc unsigned char 4 #define uint unsigned int 5 6 uc flag, i, k, flag_t, s[50] = "", j = 0, flag_n = 0; 7 uc code table[] = "I get "; 8 9 void init() 10 { 11 TMOD = 0x20; 12 TH1 = 0xfd; 13 TL1 = 0xfd; 14 TR1 = 1; 15 16 SM0 = 0; 17 SM1 = 1; 18 REN = 1; 19 EA = 1; 20 ES = 1; 21 } 22 23 24 void main() 25 { 26 init(); 27 while ( 1 ) 28 { 29 if ( flag == 1 ) 30 { 31 if ( flag_n != 0 ) 32 { 33 TI = 1; 34 printf( "\n" ); 35 while ( !TI ) 36 ; 37 TI = 0; 38 } 39 for ( i = 0; i < 6; i++ ) 40 { 41 SBUF = table[i]; 42 while ( !TI ) 43 ; 44 TI = 0; 45 } 46 for ( i = 0; s[i] != '#' && i < 50; i++ ) 47 { 48 SBUF = s[i]; 49 while ( !TI ) 50 ; 51 TI = 0; 52 SBUF = 'b'; 53 while ( !TI ) 54 ; 55 TI = 0; 56 } 57 flag = 0; 58 } 59 if ( flag_t == 1 ) 60 { 61 TI = 1; 62 printf( "\nYou transfer %s", s ); 63 while ( !TI ) 64 ; 65 TI = 0; 66 flag_t = 0; 67 } 68 } 69 } 70 71 72 void ser() interrupt 4 73 { 74 if ( RI ) 75 { 76 RI = 0; 77 78 if ( flag == 0 && j != 0 ) 79 { 80 flag_n++; 81 for ( j = 0; s[j] != '#' && j < 50; j++ ) 82 s[j] = '\0'; 83 j = 0; 84 } 85 s[j] = SBUF; 86 87 for ( k = 0; k < 20; k++ ) 88 { 89 SBUF = j; 90 while ( !TI ) 91 ; 92 TI = 0; 93 } 94 95 96 flag = 1; 97 if ( s[j] == '#' || j == 49 ) 98 flag_t = 1; 99 else 100 j++; 101 } 102 103 if ( TI ) 104 { 105 } 106 }