微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 问一下串口助手控制单片机led灯延时怎么写,比如输入1000,延时1000ms

问一下串口助手控制单片机led灯延时怎么写,比如输入1000,延时1000ms

时间:10-02 整理:3721RD 点击:
大神们帮忙看一下,我知道这样写只能延时一帧数据,但是用数组的也不能delay(table)呀,这个问题困扰很久了,大神帮我解决一下,谢谢
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint a, fa;
sbit led=P1^0;
void delay(uint x)
{
uchar i;
while(x--)
for(i=0;i<125;i++);
}
void init()//初始化
{
TMOD=0X20;//确定T1工作方式
TH1=0Xf3;//计算T1初值,装载TH1(2400波特率)
TL1=0Xf3;//装载TL1
TR1=1;//定时计数器T1开始
REN=1;//允许串行接收位
SM0=0;//选择方式1
SM1=1;
EA=1;//开总中断
ES=1;//开串口中断
}
void main()
{
init();
while(1)
{
  if(fa==1)//如果发为1,则执行下面的发送程序
  {
   ES=0;//关串口中断,开始发送数据
   led=0;
   delay(a);
   led=1;
   SBUF=a;//将接收到的数据a送到缓存器
   while(!TI);//判断发送中断标志位置1了没,置1则下一步
   TI=0;//发送中断标志位清0
   ES=1;//开串口中断
   fa=0;//将fa赋值为0便于下一次接收数据
  }
}
}
void ser() interrupt 4//接收中断函数(收到上位机数据后串口中断打开)
{
RI=0;//接收中断标志位清零
a=SBUF;//将接收的上位机发送的一帧数据用a表示
fa=1;//发
}

谢谢分享!

本人菜鸟一个,2400波特率的TH1=0xF4,

TH1=0xf4

自动设置1s发送一个指令,io翻转就好

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

网站地图

Top