打印

串口定时发送*代码可以编译通过,运行错误

[复制链接]
1585|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CHUANDAOXY|  楼主 | 2007-3-12 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器0产生10MS中断,定时器1为9600波特率发生器
#include<reg51.h>
#include<stdio.h>

#define uchar unsigned char
#define uint unsigned int

uchar sendflag;

 void intsvr1(void) interrupt 1//定时器0中断服务程序

  {
     TH0= -10000/256;
     TL0= -10000%256;

      sendflag=1;

      if(sendflag)
   {
   printf("*");

   sendflag=0;
   }
   }


///////////////////////////////////////////////////////

void main(void)

{
  EA=1;//开放所有中断
  PT0=1; //定时器0中断优先
  ET0=1; //开放定时器0溢出中断
  IT0=1; //INT0边沿触发
  IT1=1; //外部中断请求1边沿触发
  EX0=1; //开放外部中断源0
  EX1=1; //开放外部中断源1
  ET1=1;//开放定时器1溢出中断

  ///////////////////////////////////////////////////////////////////////////
  TCON=0x08; //                    TCON 
             //    D7     D6     D5     D4     D3     D2     D1      D0

             //   TF1     TR1    TF0    TR0    IE1    IT1    IE0    IT0

       //位地址    8F            8D            8B     8A     89      88

            //     0       0     0       0      1      0      0       0
  ///////////////////////////////////////////////////////////////////////////////

  TMOD=0x21; //                           TMOD
          //位     7       6       5       4      3      2      1         0

          //      GATE    C/T      M1      M0    GATE    C/T    M1     M0

          //        0      0       1       0       0      0        0       1
          //           TIME 1                  |            TIME 0
  ///////////////////////////////////////////////////////////////////////////////
  TH0= -10000/256;
  TL0= -10000%256;

  TL1=0xfc;
  TH1=0xfc;
 ////////////////////////////////////////////////////////////////////////////////
  SCON=0x50;    //                    SCON
         //位     7       6       5       4      3      2      1         0  

         //      SM0     SM1     SM2      REN   TB8    RB8     TI     RI

         //          0          1          0          1         0        0        0       0

  //////////////////////////////////////////////////////////////////////////////////////
  PCON=0x80;//波特率加倍

  TR1=1; //运行TIME1
  TR0=1; //运行TIME0
  TI=1;    //串口发送中断使能
  sendflag=1;
  while(1)
  {}
  }


 

相关帖子

沙发
dai_weis| | 2007-3-12 20:56 | 只看该作者

定时器1如果作为波特率发生器则应关闭中断响应

还有,你的程序是完整的还是部分?
而且没有看到你的串口中断允许?

使用特权

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

本版积分规则

855

主题

1044

帖子

4

粉丝