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;
}
}
}
}
/*预处理命令*/
#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;
}
}
}
}
我定时器初始化有问题,已经解决了,不过还要谢谢你!
不错不错不错不错不错不错
不错不错不错不错不错不错