为什么我用单片机串口发一个数组的内容出去,顺序是乱的?

为什么我用单片机串口发一个数组的内容出去,顺序是乱的?, /*uart.c*/ #define uc unsigned char #define ui unsigned int #…

为什么我用单片机串口发一个数组的内容出去,顺序是乱的?,

  1. /*uart.c*/
  2. #define uc unsigned char
  3. #define ui unsigned int
  4. #define ul unsigned long
  5. #define iuc idata unsigned char
  6. #define iui idata unsigned int
  7. #define iul idata unsigned long
  8. #define bt bit
  9. #define swch switch
  10. #define cs case
  11. #define whl while
  12. #define rtn return
  13. #define brk break
  14. #define itrpt interrupt
  15. uart_init(bt xos)
  16. {
  17. if(xos==1)
  18.   {
  19.   P_SW2|=0x80; /*启动内部扩展区寄存器访问功能*/
  20.   XOSCCR|=0xc0; /*启动外部晶振*/
  21.   while(!(XOSCCR & 1)); /*待晶振频率稳定*/
  22.   CLKDIV=0x00; /*晶振不分频*/
  23.   CKSEL=0x01; /*选用外部晶振*/
  24.   }
  25. SCON=0x50;   /*设定串口工作方式*/
  26. TMOD|=0x21;  /*设置T0T1寄存器*/
  27. AUXR=0xfc;  /*配置辅助寄存器*/
  28. TL1=TH1=0xdc; /*设置波特率为9.6kbit/s*/
  29. TR1=1;
  30. REN=1; /*允许接收串口数据*/
  31. EA=1;  /*打开总中断*/
  32. ES=1; /*打开串口中断*/
  33. P3M1=0x01; /*00000001*/
  34. P3M0=0x02; /*00000010,将串口接收口设为高阻输入模式,发送口设置为强推挽模式*/
  35. }
  36. uart_txd(uc buf[])
  37. {
  38. iui i;
  39. iui j=sizeof(buf);
  40. TI=RI=0;
  41. for(i=0;i<j;i++)
  42.   {
  43.   SBUF=buf[i];
  44.   while(TI==0)
  45.     {
  46.     ;
  47.     }
  48.   TI=0;
  49.   }
  50. }
  51. /*—————————————两个文件的分割线—————————————*/
  52. /*main.c*/
  53. #include <STC8x.H>
  54. #include <UART.H>
  55. iui txdbuf[13]={‘H’,’E’,’L’,’L’,’O’,’ ‘,’W’,’O’,’R’,’L’,’D’,’!’,’\0′};
  56. main()
  57. {
  58. uart_init(0);
  59. t0_init();
  60. e0_init();
  61. P33=0;
  62. while(1)
  63.   {
  64.   ;
  65.   }
  66. }

复制代码

作者: soufei

为您推荐


Fatal error: Can't use function return value in write context in /www/wwwroot/www.qianrushi.com.cn/wp-content/themes/news/footer.php on line 115