📄 oneled.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 + -