为什么我用单片机串口发一个数组的内容出去,顺序是乱的?,
- /*uart.c*/
- #define uc unsigned char
- #define ui unsigned int
- #define ul unsigned long
- #define iuc idata unsigned char
- #define iui idata unsigned int
- #define iul idata unsigned long
- #define bt bit
- #define swch switch
- #define cs case
- #define whl while
- #define rtn return
- #define brk break
- #define itrpt interrupt
- uart_init(bt xos)
- {
- if(xos==1)
- {
- P_SW2|=0x80; /*启动内部扩展区寄存器访问功能*/
- XOSCCR|=0xc0; /*启动外部晶振*/
- while(!(XOSCCR & 1)); /*待晶振频率稳定*/
- CLKDIV=0x00; /*晶振不分频*/
- CKSEL=0x01; /*选用外部晶振*/
- }
- SCON=0x50; /*设定串口工作方式*/
- TMOD|=0x21; /*设置T0T1寄存器*/
- AUXR=0xfc; /*配置辅助寄存器*/
- TL1=TH1=0xdc; /*设置波特率为9.6kbit/s*/
- TR1=1;
- REN=1; /*允许接收串口数据*/
- EA=1; /*打开总中断*/
- ES=1; /*打开串口中断*/
- P3M1=0x01; /*00000001*/
- P3M0=0x02; /*00000010,将串口接收口设为高阻输入模式,发送口设置为强推挽模式*/
- }
- uart_txd(uc buf[])
- {
- iui i;
- iui j=sizeof(buf);
- TI=RI=0;
- for(i=0;i<j;i++)
- {
- SBUF=buf[i];
- while(TI==0)
- {
- ;
- }
- TI=0;
- }
- }
- /*—————————————两个文件的分割线—————————————*/
- /*main.c*/
- #include <STC8x.H>
- #include <UART.H>
- iui txdbuf[13]={‘H’,’E’,’L’,’L’,’O’,’ ‘,’W’,’O’,’R’,’L’,’D’,’!’,’\0′};
- main()
- {
- uart_init(0);
- t0_init();
- e0_init();
- P33=0;
- while(1)
- {
- ;
- }
- }
复制代码