打印

菜鸟问题-单片机双机通讯

[复制链接]
1735|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuexiwen33|  楼主 | 2009-12-23 17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了一个两个单片机之间的通信程序,就是甲单片机中发送数据乙单片机将此数据显示出来,可是只能传送一次数据,程序不知道哪个地方错了,请高手帮忙看看。。。。
sbit K1 = P1^7;//用于发送数据(共三个数据)
sbit LED1 = P1^0;//显示发送数据
sbit LED2 = P1^2;//显示发送数据
void main()
{

uchar c;
SCON = 0X50;
TMOD = 0X20;
PCON = 0X00;
TH1 = 0XFD;
TL1 = 0XFD;
TI = 0;
RI = 0;
TR1 = 1;
ES = 1;
EA = 1;
while(1)
{
  Delay(100);
  if(K1==0)
  {
   while(K1==0);
   num++;
   num = num%4;
   switch(num)
   {
    case 0:
      c = 'X';
      LED1=LED2=1;
      break;
    case 1:
      c = 'A';
      LED1 = 0;
      LED2 = 1;
      break;
    case 2:
      c = 'B';
      LED1 = 1;
      LED2 = 0;
      break;
    case 3:
      c = 'C';
      LED1 = 0;
      LED2 = 0;
      break;
   }
   SBUF = c;
   while(TI==0);
   TI = 0;
   
  }
}


}
在proteus仿真用仪器检测发现只能发送一个A,再按P1^7就没作用了,这是为什么呢?!

相关帖子

沙发
NE5532| | 2009-12-23 20:40 | 只看该作者
你既然是在P里虚拟调试,为啥不打断点跟踪程序呢?

使用特权

评论回复
板凳
zjjhtony| | 2009-12-23 21:05 | 只看该作者
num++;
num = num%4;
这两句有问题,第一句后,num=1;第二句后,num=0;
每次都是一样。所以只可能是c = 'A'

使用特权

评论回复
地板
xuexiwen33|  楼主 | 2009-12-23 21:45 | 只看该作者
谢了,看错了,这点错误真不应该! 3# zjjhtony

使用特权

评论回复
5
zjjhtony| | 2009-12-24 20:36 | 只看该作者
file:///C:/Documents
对不起,楼主,你的程序没有问题,我看错了。
我仿真过了,OK的。
#include<reg51.h>
#define uchar unsigned char
sbit K1 = P1^7;//用于发送数据(共三个数据)
sbit LED1 = P1^0;//显示发送数据
sbit LED2 = P1^2;//显示发送数据
uchar num=0;
void  delay(uchar i)
{
while(i--) ;
}
void main()
{
uchar c;
SCON = 0X50;
TMOD = 0X20;
PCON = 0X00;
TH1 = 0XFD;
TL1 = 0XFD;
TI = 0;
RI = 0;
TR1 = 1;
ES = 1;
EA = 1;
while(1)
{
    delay(100);
    if(K1==0)
    {
      while(K1==0);
      num++;
      num = num%4;
    switch(num )
    {
        case 0:
         c = 'X';
         LED1=LED2=1;
         break;
       case 1:
          c = 'A';
          LED1 = 0;
          LED2 = 1;
         break;
       case 2:
          c = 'B';
         LED1 = 1;
         LED2 = 0;
          break;
        case 3:
         c = 'C';
          LED1 = 0;
          LED2 = 0;
          break;
      }
      SBUF = c;
     while(!TI);
     TI=0;
   
    }
}

}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

56

帖子

1

粉丝