3450|1

57

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:哪位大哥能解决这个串口问题啊?谢谢!马上送分 [复制链接]

//-------------------------------------头文件--------------------------------------
#include
#include
#include
//-------------------------------------头文件--------------------------------------

//********定义引脚*************************************
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(); } } 现在,电脑上的串口调试软件不能受到单片机发来的数据了 这是什么原因啊? 谢谢! (电路板上的串口是公的) 原理图在: http://www.daxia.com/bbs/moredata.asp?id=79364&syid=1103948 非常感谢! 马上送分

最新回复

qq:19335776 感谢!  详情 回复 发表于 2007-5-28 16:55
点赞 关注

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
qq:19335776
感谢!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表