单片机串口通信的问题

2019-07-15 16:49发布

本帖最后由 music_mc 于 2015-6-17 22:55 编辑
  1. P0=0xf0;
  2. S2BUF=0xfc;       
  3. P0=S2BUF; //为什么这里P0=0X00???
  4. while(!(S2CON & S2ti));
  5. S2CON &= ~S2TI;
复制代码双机通信
单片机相同是STC15F60s2
波特率相同,误差%0为什么P0会是0x00?中断里面什么都没
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
zhj_nt
1楼-- · 2019-07-15 18:23
 精彩回答 2  元偷偷看……
music_mc
2楼-- · 2019-07-15 23:17
本帖最后由 music_mc 于 2015-6-17 23:02 编辑
  1. void main()
  2. {
  3.         P_SW2 |= S2_S0;             //S2_S0=1 (P4.6/RxD2_2, P4.7/TxD2_2)

  4.         S2CON = 0x50;                //8位数据,可变波特率       
  5.         AUXR |= 0x01;                //串口1选择定时器2为波特率发生器               
  6.         AUXR |= 0x04;                //定时器2时钟为Fosc,即1T
  7.         T2L = 0x8F;                        //设定定时初值
  8.         T2H = 0xFD;                        //设定定时初值
  9.         AUXR |= 0x10;                //启动定时器2
  10.         IE2=0x01;
  11.         EA=1;

  12.         P0=0XF0;
  13.         S2BUF=0xfc;               
  14.         P0=S2BUF;                //为什么这里P0是0x00 ?
  15.         while(!(S2CON & S2TI));
  16.         S2CON &= ~S2TI;                       

  17.         while(1)
  18.         {
  19.         }
  20. }
  21. void Uart2() interrupt 8  using 1
  22. {

  23. }
复制代码
木途单行道
3楼-- · 2019-07-16 01:22
P0=S2BUF=0xfc;没有等于0x00。
music_mc
4楼-- · 2019-07-16 03:55
木途单行道 发表于 2015-6-18 07:49
P0=S2BUF=0xfc;没有等于0x00。

我也知道啊,我是说,实物测试,无所谓P0是0x00
music_mc
5楼-- · 2019-07-16 05:17
 精彩回答 2  元偷偷看……
music_mc
6楼-- · 2019-07-16 08:24
zhj_nt 发表于 2015-6-18 13:34
还是S2BUF读和写代表不同的寄存器?

这个有道理,S2BUF是2个寄存器,同个地址,收发相同地址,只是,应该如何印证确实是这样的呢

一周热门 更多>