📄 main.c
字号:
/*-----------------------------------------------------*
*工 程 名:H08SCI_1 *
*硬件连接:无 *
*程序描述:把收到的数据发送回去 *
*目 的:初步掌握利用查询方式进行串行通信的基本知识 *
*-------《嵌入式应用技术基础教程》教学实例------------*/
//头文件
#include "SCI.h" //串行通信子程序头文件
#include "light.h" //灯的初始化头文件
//函数声明
extern void SCIInit(void); //串行口初始化子程序
//内存变量声明
unsigned char SerialBuff[]; //存放接收数据的数组
void Delay1000(void);
//主程序
void main()
{ int lk,i,p;
unsigned char k,mo;
light_ctrla=0xff;
light_ctrlb=0x00;
SCIInit(); //调串行口初始化子程序
//调串行口初始化子程序
while(1)
{
i=SCIReN(1,SerialBuff); //等待接收1个数据
if(i==0)
{
k=SerialBuff[0];
//8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
if(SerialBuff[0]=='1')
{ SCISendN(10,"LED效果1");
light_a=0xff;
for(lk=0;lk<512;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(1<<i);
for(lk=0;lk<512;lk++)
Delay1000();
}
light_a=0xff;
for(lk=0;lk<512;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(0x80>>i);
for(lk=0;lk<512;lk++)
Delay1000();
}
light_a=0xff;
}
//8个LED中只有2个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
else if(SerialBuff[0]=='2')
{ SCISendN(10,"LED效果2 ");
light_a=0xff;
for(lk=0;lk<512;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(3<<i);
for(lk=0;lk<512;lk++)
Delay1000();
}
light_a=0xff;
for(lk=0;lk<512;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(0xc0>>i);
for(lk=0;lk<512;lk++)
Delay1000();
}
light_a=0xff;
}
//8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒。
else if(SerialBuff[0]=='3')
{ SCISendN(10,"LED效果3 ");
light_a=0xff;
for(lk=0;lk<1024;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(1<<i);
for(lk=0;lk<1024;lk++)
Delay1000();
}
light_a=0xff;
for(lk=0;lk<1024;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(0x80>>i);
for(lk=0;lk<1024;lk++)
Delay1000();
}
light_a=0xff;
}
//8个LED中只有2个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
else if(SerialBuff[0]=='4')
{ SCISendN(10,"LED效果4 ");
light_a=0xff;
for(lk=0;lk<1024;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(3<<i);
for(lk=0;lk<1024;lk++)
Delay1000();
}
light_a=0xff;
for(lk=0;lk<1024;lk++)
Delay1000();
for(i=0;i<8;i++)
{
light_a=(0xff)^(0xc0>>i);
for(lk=0;lk<1024;lk++)
Delay1000();
}
light_a=0xff;
}
//收到其他字符:LED灯全部一起闪烁(同时亮同时熄,周期1秒),并向串行口发送字符串"输入错误!"
else
{ SCISendN(10,"输入错误!");
for(i=0;i<4;i++)
{
light_a=0xff;
for(lk=0;lk<1024;lk++){
for(p=0;p<2;p++)
Delay1000();}
light_a=0x00;
for(lk=0;lk<1024;lk++){
for(p=0;p<2;p++)
Delay1000();}
}
light_a=0xff;
}
}//接收效果演示结束;
}//while(1)尾部
}//主函数结束
//延时程序,延长时间1000个周期
void Delay1000(void)
{ unsigned char u;
for(u=0;u<=110;u++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -