第二段
- bit S1_busy;
- unsigned char idata Put_buf[100]; //最大数量
- void my_printf(char* fmt,...)
- {
- unsigned char i,len;
- va_list ap;
- va_start(ap,fmt);
- len=vsprintf((char*)Put_buf,fmt,ap);
- va_end(ap);
-
- for(i=0;i<len;i++) //把缓存内的字符发送出去
- {
- while(S1_busy); //等待前面的数据发送完成
- S1_busy=1;
- SBUF=Put_buf[i]; //发送一个字节
- }
- memset(Put_buf,0,sizeof(Put_buf)); //清空缓存
- }
复制代码
第三段
- void main()
- {
- unsigned int i;
- UartInit(); //串口初始化
- EA=1; //开总中断
-
- while(1)
- {
- my_printf("Hello World!");
- my_printf(" i=%03d,0x%03X\r\n",i,i++);
- Delay_ms(500);
- }
- }
-
- void Uart1() interrupt 4
- {
- if(RI) //接收中断
- RI = 0; //清标志
- else //发送中断
- {
- TI = 0; //清标志
- S1_busy=0; //非忙
- }
- }
复制代码
|