打印

求助:为什么单片机串口不能向.PC.机发数据啊,谢谢!

[复制链接]
1415|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-5-28 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//-------------------------------------头文件--------------------------------------
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
//-------------------------------------头文件--------------------------------------

//********定义引脚*************************************
sbit   P33      =    P3^3;    //喂狗
sbit   P23      =    P2^3;    //使 U7(74HC574) 使能
sbit   D7       =    P0^7;    //使 MAX485 的 830 输入为1
//********定义引脚*************************************



//**************定义变量*************************************************
int WDogZdJs;   //喂狗中断计数
//**************定义变量*************************************************



void delay()
{
    int i,j;
    for(i=0;i<100;i++)
       {
           for(j=0;j<10;j++)
              {
                  ;
              }
           }
}


void Sendtex() //向电脑发送字符 '1'
{
    SBUF='1';
  while(!TI);
  TI=0;
}


void timer0(void) interrupt 1   //喂狗中断程序
{
  TH0 = (65536-5000)/256;     //重载计数初值 每 5 ms 中断一次
  TL0 = (65536-5000)%256;     //这是手动装置,如果 T0 为模式 1 的话,必须要手动装入
                              //如果如果 T0 为模式 2 的话,只要初始化了,
                              //则在这里可以不要 TH0 = (65536-5000)/256; TL0 = (65536-5000)%256;
  WDogZdJs ++;
  if ( WDogZdJs >= 10 )
       {
       P33 =! P33;  //不停喂狗
       WDogZdJs = 0;
    }
}

void main()
{
  int i;
  delay();
  P0 = 0xff;
  P1 = 0xff;
  P2 = 0xff;
  P3 = 0xff;
  P33 =! P33;
   
   
   EA = 1 ;                    //允许中断
   ET0 = 1;                    //T/C0 开中断(定时器0/计数器0)
   ET1 = 0;                    //T/C0 开中断(定时器0/计数器0)
   
   
   TMOD=0x21;                  //定时器1模式1  定时器0模式1 
   //---------------------------处理串口中断---------------------------------------
   ES = 1 ;                    //允许串行中断
   SCON=0x50;                  //串行口工作方式1, 10 位异步收发,波特率由定时器控制
   PCON |= 0x00;
   TL1=0xFA; 
   TH1=0xFA;                   //22.1184M晶振 波特率9600
   TR1=1;                      //启动定时器1/计数器1
   //---------------------------处理串口中断---------------------------------------
   
   
   //------------------------------处理中断喂狗------------------------------------  
   TH0 = (65536-1000)/256;     //预置计数初值,每 5 ms 中断一次
   TL0 = (65536-1000)%256;
    TR0 = 1;                   //启动定时器0/计数器0
   //------------------------------处理中断喂狗------------------------------------ 
   
    
   //-----------------------------使 MAX485 的 830 为1 ----------------------------
   P23 = 0;
     for (i=0; i<50; i++)
      {
       _nop_();
      }
      D7 = 0;   //D7 输出 0 ,因为用了反向器所以输出为 1
      for (i=0; i<50; i++)
      {
       _nop_();
      }
   P23 = 1;
   //-----------------------------使 MAX485 的 830 为1 ----------------------------
  
   while(1)
    {
        delay();
            Sendtex();
                
     }
}

我错在哪里啊?
硬件都是通的,
谢谢!

相关帖子

沙发
conwh| | 2007-5-28 16:14 | 只看该作者

哦,原来那个图是你的。已经告诉你错了,怎么没有改

使用特权

评论回复
板凳
行星| | 2007-5-30 16:23 | 只看该作者

这里面有源代码,你看看吧

http://zxcopycn.jishuqi.net

使用特权

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

本版积分规则

74

主题

121

帖子

1

粉丝