微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > PC机与单片机送数据,同时用定时器0定时,串口为何不显...

PC机与单片机送数据,同时用定时器0定时,串口为何不显...

时间:10-02 整理:3721RD 点击:
程序已经贴出来,怎样改,才能在串口助手上每1.5S发送一次,0到50的数据,希望大侠指教,朋友帮忙,小弟在此谢过了。

/*预处理命令*/
#include      //包含单片机寄存器的头文件
#define uchar unsigned char
#define uint unsigned int
uchar num,a,num1;
uint i;
uchar code table[50]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0X15,0X16,0x17,0X18,0x19,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50};
/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
********************************************************************************
*/
void timer_2(void)
{
TMOD=0x21;
  TH0 =(65536-50000)/256;
   TL0 =(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
}
void main()
{
   TMOD=0x20;
    TH1=0xfd;     
TL1=0xfd;
TR1=1;
REN=1;          //串口初始化
SM0=0;
SM1=1;
EA=1;           //开启总中断
ES=1;
while(1)
{
  if(num==1)    //判断是否有串口数据的传送
  {
//       ET0=1;
//      ES=0;
   if(num1==30)
   {  
     for(i=0;i 0;x--)
                for(y=120;y>0;y--);       
}
void main()
{
   TMOD=0x20;
    TH1=0xfd;     
TL1=0xfd;
TR1=1;
REN=1;          //串口初始化
SM0=0;
SM1=1;
EA=1;           //开启总中断
ES=1;
while(1)
{
  if(num==1)    //触发是否进入发送数据状态
  {
//       ET0=1;
//      ES=0;
    while(num)  //保持50次发送数据状态
    {
     for(i=0;i<50;i++)
     {
    ES=0;
    num=0;
    SBUF=table[i];    //发送数据a到SBUF,即将单片机的数据发送到计算机
    while(!TI);
    TI=0;   
    ES=1;
    TR0=0;
     Delayms(1500)   //延时约1.5S
     }
    num=0;
   }
  }
}
}

我定时器初始化有问题,已经解决了,不过还要谢谢你!

不错不错不错不错不错不错
不错不错不错不错不错不错

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top