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

📄 main.c

📁 要用到开发工具SD-H08
💻 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 + -