為什么調(diào)用printf在這個(gè)板子上輸出中文會(huì)出現(xiàn)亂碼,我拿不同的板子試了基本一樣的代碼就沒亂碼,板子應(yīng)該沒有問題,請賜教
單片機(jī)源碼如下:
- #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(" 瞬時(shí)速度:%.1fL/min\n\n",b); delayms(5);
- }
- void UartInit(void) //9600bps@11.0592MHz
- {
- SCON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR |= 0x01; //串口1選擇定時(shí)器2為波特率發(fā)生器
- AUXR |= 0x04; //定時(shí)器2時(shí)鐘為Fosc,即1T
- T2L = 0xE0; //設(shè)定定時(shí)初值
- T2H = 0xFE; //設(shè)定定時(shí)初值
- AUXR |= 0x10; //啟動(dòng)定時(shí)器2
- }
- void keyscan()
- {
- if(P33==0)
- {
- delayms(5);
- if(P33==0)
- {
- flag=1;
- }
- while(!P33);
- }
- }
- void delayms(int ms) //延時(shí)函數(shù)
- {
- int i,j;
- for(i=ms;i>0;i--)
- for(j=845;j>0;j--);
- }
- void allinit() //初始化板子的,不會(huì)有問題
- {
- P2=0XA0;
- P0=0X00;//關(guān)閉蜂鳴器,繼電器
- P2=0X80;
- P0=0XFF;//關(guān)閉LED燈
- P2=0XC0;
- P0=0XFF;//選擇所有數(shù)碼管
- P2=0XFF;
- P0=0XFF;//關(guān)閉所有數(shù)碼管
- }
復(fù)制代碼
|