本人写了一个串口程序,输出结果一直是00,对照各种书籍实在找不出问题,求大牛指点。波特率,初始化,中断各种原因都找过。最后还按照老师的方法自发自收做了一遍,都正常。可就是输出结果不对。。。
- #include <STC89C5xRC.H>
- #include <stdio.h>
- sbit staus=P3^5;
- void systerm_init(void);
- void Delay20ms(void);
- void send(unsigned char x);
- unsigned char buf[12]="hello world";
- void main()
- {
- unsigned char flag=0x01;
- //unsigned char i;
- systerm_init();
- while(1)
- {
- if(staus==0){
- Delay20ms();
- if(staus==0)
- {
- /* for(i=0;i<12;i++)
- send(buf[i]);
- */
- send(0x8e); //test
- }
- }
-
- }
- }
- void systerm_init(void)
- {
- P0=0xFF;P1=0xFF;
- P2=0xFF;P3=0xFF;
- PCON=0x00; //smod=0
- TCON=0x20; //T1工作方式2
- TL1=0xFD; //波特率为9600bps
- TH1=0xFD;
- TR1=1;
- SCON=0x50; //方式1
- EA=1;
- ES=1;
- }
-
- void Delay20ms(void) //@11.0592MHz
- {
- unsigned char i, j;
- i = 36;
- j = 217;
- do
- {
- while (--j);
- } while (--i);
- }
- void send(unsigned char x)
- {
- ES=0;
- SBUF=x;
- P2=x;
- while(!TI);
- TI=0;//软件清零
- ES=1;
- }
- void UART_R(void) interrupt 4
- {
- RI=0;
- P1=SBUF;
- }
|