为什么调用printf在这个板子上输出中文会出现乱码,我拿不同的板子试了基本一样的代码就没乱码,板子应该没有问题,请赐教
单片机源码如下:
- #include<STC15F2K60S2.H>
- #include <stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint a;
- bit flag=0;
- float b;
- void delayms(int ms);
- void allinit();
- void keyscan();
- void PCreceive();
- void UartInit(void); //串口初始化
- void main()
- {
- a=100; b=0.01;
- UartInit();//串口初始化
- EA=1; //打开总中断
- ES=1; //串口1中断
- allinit(); //初始化板子
- while(1)
- {
- if(flag==1)
- {
- flag=0;
- PCreceive();
- }
- keyscan();
- }
- }
- void PCreceive()
- {
- TI=1;
- printf(" hello world! \n" );delayms(5);
- printf(" 总水量:%dL \n" ,a);delayms(5);
- printf(" 瞬时速度:%.1fL/min\n\n",b); delayms(5);
- }
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位数据,可变波特率
- AUXR |= 0x01; //串口1选择定时器2为波特率发生器
- AUXR |= 0x04; //定时器2时钟为Fosc,即1T
- T2L = 0xE0; //设定定时初值
- T2H = 0xFE; //设定定时初值
- AUXR |= 0x10; //启动定时器2
- }
- void keyscan()
- {
- if(P33==0)
- {
- delayms(5);
- if(P33==0)
- {
- flag=1;
- }
- while(!P33);
- }
- }
- void delayms(int ms) //延时函数
- {
- int i,j;
- for(i=ms;i>0;i--)
- for(j=845;j>0;j--);
- }
- void allinit() //初始化板子的,不会有问题
- {
- P2=0XA0;
- P0=0X00;//关闭蜂鸣器,继电器
- P2=0X80;
- P0=0XFF;//关闭LED灯
- P2=0XC0;
- P0=0XFF;//选择所有数码管
- P2=0XFF;
- P0=0XFF;//关闭所有数码管
- }
复制代码
|