欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stc12c5a想要在串口1接收到的內容后加回車換行符號卻實現不了 [打印本頁]

作者: Cheney01    時間: 2021-1-11 10:01
標題: stc12c5a想要在串口1接收到的內容后加回車換行符號卻實現不了
stc12c5a想要在串口1接收到的內容后加回車換行符號后由串口2發送出去卻實現不了,有大佬能幫忙看看修改一下嗎?初始學徒比較菜
  1. #include<stc12c5a.h>

  2. #define S2RI 0x01        
  3. #define S2TI 0x02
  4. sbit RW=P1^7;
  5. unsigned char *a,*b;
  6. unsigned char flag1,flag2;
  7. void InitUART(void)
  8. {
  9.     TMOD = 0x20;   
  10.     SCON = 0x50;   
  11.     TH1 = 0xFA;           
  12.     TL1 = TH1;
  13.     TR1 = 1;           
  14.     EA =1;      
  15.     ES =1;        

  16.     S2CON = 0x50;   
  17.     BRT = 0xFA;         
  18.     AUXR = 0x10;   
  19.     IE2 =0x01;        
  20. }
  21. void UART_1SendOneByte(unsigned char c)
  22. {
  23.     SBUF = c;
  24.     while(!TI);           
  25.     TI = 0;         
  26. }
  27. void UART_2SendOneByte(unsigned char c)
  28. {
  29.                 RW=1;
  30.     S2BUF=c;
  31.     while(!(S2CON&S2TI));  
  32.     S2CON&=~S2TI;
  33.                 RW=0;
  34. }
  35. void uart1SendStr(unsigned char *s)
  36. {
  37.         while(*s!='\0')
  38.   {
  39.                 UART_1SendOneByte(*s);
  40.                 s++;
  41.   }
  42. }
  43. void uart2SendStr(unsigned char *s)
  44. {
  45.         while(*s!='\0')            
  46.   {
  47.   UART_2SendOneByte(*s);
  48.   s++;
  49.   }
  50. }
  51. void delay(unsigned int z)
  52. {
  53.         unsigned int x,y;
  54.         for(x=z;x>0;x--)
  55.         for(y=600;y>0;y--);
  56. }
  57. void main(void)
  58. {
  59.     InitUART();        
  60.     delay(50);
  61.     while(1)
  62.     {
  63.                                          
  64.       if(flag1==1)
  65.       {
  66.         flag1=0;
  67.         uart2SendStr(a);
  68.                         
  69.       }
  70.       if(flag2==1)
  71.       {
  72.         flag2=0;
  73.         uart1SendStr(b);
  74.       }
  75.      }
  76. }
  77. void UART_1Interrupt(void) interrupt 4
  78. {
  79.         if(RI==1)
  80.         {
  81.           RI=0;
  82.                                         *a=SBUF;
  83.                                         a+='\r';
  84.                                         a+='\n';
  85.                
  86.         }
  87. }
  88. void UART_2Interrupt(void) interrupt 8
  89. {
  90.         if(S2CON&S2RI)
  91.         {
  92.           S2CON&=~S2RI;
  93.           *b=S2BUF;
  94.         }
  95. }
復制代碼


04.zip

695 Bytes, 下載次數: 3


作者: munuc_w    時間: 2021-1-11 11:32
回車符0x0D,換行符0x0A,添加后發送即可。或者加 '\r'是回車符,'\n'是換行符。
作者: 人人學會單片機    時間: 2021-1-11 16:15
用我這個貼子的代碼就行 多字節發送 帶了 換行和回車 還支持軟件復位
你是STC12 可能定時器寄存器需要修改一下.
http://m.raoushi.com/bbs/dpj-200927-1.html

作者: Cheney01    時間: 2021-1-11 16:25
添加了,可能是添加的不對,實現不了
作者: 田賀    時間: 2021-1-11 22:28
*a沒申請內存
a+=是對地址操作而不是字符串
a申請時要用數組或者malloc
調用時用下標形式或者string庫函數
作者: xhaity    時間: 2021-1-11 23:39
把*a;定義成數組形式試一下, a[10];  a[0]  = SBUF;a[1] ='\r' ;a[2]  ='\n';a[3] = '\0';
作者: Cheney01    時間: 2021-1-12 15:05
謝謝各位大佬,我嘗試一下




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1