?? main.c
字號:
/*-----------------------------------------------------*
*工 程 名:H08SCI_1 *
*硬件連接:無 *
*程序描述:把收到的數(shù)據(jù)發(fā)送回去 *
*目 的:初步掌握利用查詢方式進(jìn)行串行通信的基本知識(shí) *
*-------《嵌入式應(yīng)用技術(shù)基礎(chǔ)教程》教學(xué)實(shí)例------------*/
//頭文件
#include "SCI.h" //串行通信子程序頭文件
#include "light.h" //燈的初始化頭文件
//函數(shù)聲明
extern void SCIInit(void); //串行口初始化子程序
//內(nèi)存變量聲明
unsigned char SerialBuff[]; //存放接收數(shù)據(jù)的數(shù)組
void Delay1000(void);
//主程序
void main()
{ int lk,i,p;
unsigned char k,mo;
light_ctrla=0xff;
light_ctrlb=0x00;
SCIInit(); //調(diào)串行口初始化子程序
//調(diào)串行口初始化子程序
while(1)
{
i=SCIReN(1,SerialBuff); //等待接收1個(gè)數(shù)據(jù)
if(i==0)
{
k=SerialBuff[0];
//8個(gè)LED中只有一個(gè)燈亮,亮燈順序是從左到右,再從右到左,一個(gè)周期時(shí)間長度約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個(gè)LED中只有2個(gè)燈亮,亮燈順序是從左到右,再從右到左,一個(gè)周期時(shí)間長度約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個(gè)LED中只有一個(gè)燈亮,亮燈順序是從左到右,再從右到左,一個(gè)周期時(shí)間長度約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個(gè)LED中只有2個(gè)燈亮,亮燈順序是從左到右,再從右到左,一個(gè)周期時(shí)間長度約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燈全部一起閃爍(同時(shí)亮同時(shí)熄,周期1秒),并向串行口發(fā)送字符串"輸入錯(cuò)誤!"
else
{ SCISendN(10,"輸入錯(cuò)誤!");
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;
}
}//接收效果演示結(jié)束;
}//while(1)尾部
}//主函數(shù)結(jié)束
//延時(shí)程序,延長時(shí)間1000個(gè)周期
void Delay1000(void)
{ unsigned char u;
for(u=0;u<=110;u++);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -