⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oneled.c

📁 自已编写的一个用于调试单片机串口的一个下位机程序。很实用的。
💻 C
字号:
/*#include <REG51.h>
sbit gate=P2^0;
void main(void)
{
	unsigned int i,j;
	while(1)
	{
		for(i=1000;i>0;i--);
		for(j=1000;j>0;j--);
		gate=!gate;
	}

}

#include <AT89X51.H>
#include <stdio.h>
void   CheckLED(void);
sbit   LED0=P1^4;
sbit   LED1=P1^5;
sbit   LED2=P1^6;
sbit   Beep=P1^7;

void main(void)
{
int x,y;
SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1 定时方式2
TH1 = 0xE8; //11.0592MHz 1200 波特率
TL1 = 0xE8;
TI = 1;
TR1 = 1; //启动定时器
LED0=0;
while(1)
{
	printf("您好!我叫Robot!我是一个会做算术的机器人!\n"); //显示
	printf("请您输入两个int,X 和 Y\n"); //显示
	scanf("%d%d",&x,&y); //输入
	if (x < y)
		printf("X<Y\n"); //当X 小于Y 时
	else //当X 不小于Y 时再作判断
		{
			if (x == y)
				printf("X=Y\n"); //当X 等于Y 时
			else
			printf("X>Y\n"); //当X 大于Y 时
		}
}
}*/

#include <reg51.h>
//#include <absacc.h>
#include <intrins.h>
//#include <stdio.h>
//#include <string.h>
#include <stdlib.h>
//#include <ctype.h>
#define uchar unsigned char
#define uint  unsigned int
#define   Error         0xff
uint   data   counter;
uchar  data   uc0;
sbit   LED0=P1^4;
sbit   LED1=P1^5;
sbit   LED2=P1^6;
sbit   Beep=P1^7;
bit    bdata  flag;
void   RcvDataBy232(void);
void 	InitSBUF(void);
void 	TranDataBy232(void);
void 	SendBuf();
void 	OpeningBeep(uchar OBN);
void 	DELAY(uint z);
void   RestWatchdog(void);

/*********************************************************************
 ------------        主从多机串行中断服务程序     ------------------
 -- 主机先发送地址帧,从机接收到地址帧后,先判断是否为键盘地址:是则接收 
 -- 主机发送过来的所有数据信息,否则返回.
 *********************************************************************/
/*void SerialCom(void) interrupt 4 using 1
{
    EA=0;
    ES=0;                      /* 关串行中断 
    RcvDataBy232();
    OpeningBeep(uc0);
    SBUF=0x66;
    TranDataBy232();
    ES=1;
    RI=0;  TI=0; EA=1;
	flag=1;
}*/

/****************************************
 ---------  延时函数 ,大约1MS.-----------
 ****************************************/
void DELAY(uint z)
{
    uchar data l;
    while((z--)>0)
    {
for(l=0;l<31;l++)    RestWatchdog();   /* 125 _nop_();		;   /* 125 _nop_(); */
    }
}

void   RestWatchdog(void)
{
    _nop_();
    _nop_();
    _nop_();
}

void OpeningBeep(uchar OBN)
{
    uchar data i;
    for(i=0;i<OBN;i++)
	{
       Beep=0;
       DELAY(150);
       Beep=1;
       DELAY(100);
   }
}
/*******************************************
 ---------- 初始化串行口来多机通信 ---------
 *******************************************/
void InitSBUF(void)     
{
   TMOD=0x20;           /* T/C1定义为方式2 */
   TL1=0xfd;            /* 9600时TH1,TL1=0xfd,1200时TH1,TL1=0XE8 */
   TH1=0xfd; 
//   TL0=0xef;          /* 初值为0X2AEF,定时值为50ms */
//   TH0=0x2a;  
   PCON=0x0;
   SCON=0x50;           /* 串行口为方式1,SM2=1,TB8=0,RB8=0 */
  /* SM0=0;*/
   TR1=1;   //ES=1;  ;  /*ET0=1; ES=1; TR0=1;*/
  /* SM2=1;*/   PS=1;
   RI=0;    TI=0; EA=1;
}

/*****************************************************
 -------从串行端口接收一字节数据,并存入UC0变量中------
 *****************************************************/

/*void   RcvDataBy232(void)
{
    counter=0;
    do{
        counter++;
        RestWatchdog();
        if(counter>0x6ff)
        { uc0=Error;goto rete1;}   /* 1fff 
          RestWatchdog();
      }   while(RI==0);
    uc0=SBUF;
	flag=1;
	OpeningBeep(uc0);
rete1:  
		RI=0;
}*/

/*****************************************************
 -------从串行端口发送一字节数据,数据已存入SBUF中------
 *****************************************************/
void TranDataBy232(void)
{
   while(TI==0) ;
   TI=0;
}

void SendBuf() 
{
  uchar data i=0x01;
  do{         //发送数据  
            	SBUF=i;
            	TranDataBy232();
				i++;           
        
     }while(i<5);           /*  如果主机返回成功信号则退出,否则重新发新/ *  初始化串行口*/  
}

void main(void)
{
	LED0=0;
	OpeningBeep(3);
	InitSBUF();			                
	flag=0;
	uc0=0;
while(1)
	{
	DELAY(255);
	LED0=~LED0;
/***连续发* */ 
//	SendBuf();
/**逐个发*/	
	while(RI)
		{//RestWatchdog();
			uc0=SBUF;
			RI=0;			
			if(uc0==0x11)
				uc0=0xee;
			SBUF=uc0;
			TranDataBy232();		
			if(uc0<9)
				OpeningBeep(uc0);
			else
				OpeningBeep(1);
		} 
	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -