//晟矽微单片机编程第五天//流水灯升级版
//为了方便移植和后期更改io方便不得不用#define宏定义,这样太麻烦了也没有别的办法了.
//qq:74145445
//快手:共同学习stm8
/**************************************************/
// MC32P7311
// _____@_____
// led0--p16|1 16|p17--led13
// vdd|2 15|vss
// led1--p15|3 14|p00--led12
// led2--p14|4 13|p01--led11
// led3--p13|5 12|p02--led10
// led4--p12|6 11|p03--led9
// led5--p11|7 10|p04--led8
// led6--p10|8_________9|p05--led7
/**************************************************/
#define bit0 0b00000001
#define bit1 0b00000010
#define bit2 0b00000100
#define bit3 0b00001000
#define bit4 0b00010000
#define bit5 0b00100000
#define bit6 0b01000000
#define bit7 0b10000000
#define bit8 0b0000000100000000
#define bit9 0b0000001000000000
#define bit10 0b0000010000000000
#define bit11 0b0000100000000000
#define bit12 0b0001000000000000
#define bit13 0b0010000000000000
#define bit14 0b0100000000000000
#define bit15 0b1000000000000000
/**************************************************/
//led0--p16
#define led_0chu OEP1 |=bit6 //输出使能0输入1为输出
#define led_0h IOP1 |=bit6 //点亮led
#define led_0l IOP1 &=~bit6 //熄灭led
//led1--p15
#define led_1chu OEP1 |=bit5
#define led_1h IOP1 |=bit5
#define led_1l IOP1 &=~bit5
//led2--p14
#define led_2chu OEP1 |=bit4
#define led_2h IOP1 |=bit4
#define led_2l IOP1 &=~bit4
//led3--p13
#define led_3chu OEP1 |=bit3
#define led_3h IOP1 |=bit3
#define led_3l IOP1 &=~bit3
//led4--p12
#define led_4chu OEP1 |=bit2
#define led_4h IOP1 |=bit2
#define led_4l IOP1 &=~bit2
//led5--p11
#define led_5chu OEP1 |=bit1
#define led_5h IOP1 |=bit1
#define led_5l IOP1 &=~bit1
//led6--p10
#define led_6chu OEP1 |=bit0
#define led_6h IOP1 |=bit0
#define led_6l IOP1 &=~bit0
//led7--p05
#define led_7chu OEP0 |=bit5
#define led_7h IOP0 |=bit5
#define led_7l IOP0 &=~bit5
//led8--p04
#define led_8chu OEP0 |=bit4
#define led_8h IOP0 |=bit4
#define led_8l IOP0 &=~bit4
//led9--p03
#define led_9chu OEP0 |=bit3
#define led_9h IOP0 |=bit3
#define led_9l IOP0 &=~bit3
//led10--p02
#define led_10chu OEP0 |=bit2
#define led_10h IOP0 |=bit2
#define led_10l IOP0 &=~bit2
//led11--p01
#define led_11chu OEP0 |=bit1
#define led_11h IOP0 |=bit1
#define led_11l IOP0 &=~bit1
//led12--p00
#define led_12chu OEP0 |=bit0
#define led_12h IOP0 |=bit0
#define led_12l IOP0 &=~bit0
//led13--p17
#define led_13chu OEP1 |=bit7
#define led_13h IOP1 |=bit7
#define led_13l IOP1 &=~bit7
/**************************************************/
#include"MC32P7311.h"
unsigned char b1; //全局变量
void yanshi(); //延时
void panduan(); //判断
/**************************************************/
void main()
{
unsigned char a1,a2;
led_0chu;
led_1chu;
led_2chu;
led_3chu;
led_4chu;
led_5chu;
led_6chu;
led_7chu;
led_8chu;
led_9chu;
led_10chu;
led_11chu;
led_12chu;
led_13chu;
/*
led_0l;
led_1l;
led_2l;
led_3l;
led_4l;
led_5l;
led_6l;
led_7l;
led_8l;
led_9l;
led_10l;
led_11l;
led_12l;
led_13l;
*/
for(;;)
{
b1 =0x01;
for(a1=14;a1>0;a1--) //左移
{
panduan();
yanshi();
b1 <<=1; //左移一位
}
//b1 =bit13;
for(a1=14;a1>0;a1--) //右移
{
panduan();
yanshi();
b1 >>=1; //右移一位
}
/**************************************************/
//心跳灯
for(a2=5;a2>0;a2--) //心跳5次
{
b1 =0x01;
for(a1=14;a1>0;a1--) //左移
{
b1 |=bit0; //每一次都把末尾填满
panduan();
yanshi();
b1 <<=1; //左移一位
}
//上面已经点亮>>熄灭
for(a1=14;a1>0;a1--) //左移
{
b1 |=bit0; //末尾一直亮
panduan();
yanshi();
b1 >>=1; //左移一位
}
}
/**************************************************/
//两面流→←
unsigned char aa1,aa2;
for(a1=2;a1>0;a1--)
{
aa1 =bit0;
aa2 =bit13;
for(a2=7;a2>0;a2--)
{
b1 |=aa1;
b1 |=aa2;
panduan();
yanshi();
aa1 <<=1;
aa2 >>=1;
}
}
/**************************************************/
//开发你的想象力写一个
/**************************************************/
}
}
/**************************************************/
void panduan() //判断
{
if(b1&&bit0){led_0h;} else{led_0l;}
if(b1&&bit1){led_1h;} else{led_1l;}
if(b1&&bit2){led_2h;} else{led_2l;}
if(b1&&bit3){led_3h;} else{led_1l;}
if(b1&&bit4){led_4h;} else{led_1l;}
if(b1&&bit5){led_5h;} else{led_1l;}
if(b1&&bit6){led_6h;} else{led_1l;}
if(b1&&bit7){led_7h;} else{led_1l;}
if(b1&&bit8){led_8h;} else{led_1l;}
if(b1&&bit9){led_9h;} else{led_1l;}
if(b1&&bit10){led_10h;} else{led_1l;}
if(b1&&bit11){led_11h;} else{led_1l;}
if(b1&&bit12){led_12h;} else{led_12l;}
if(b1&&bit13){led_13h;} else{led_13l;}
}
/**************************************************/
void yanshi() //延时
{
unsigned char x,y;
for(x=200;x>0;x--)
{
for(y=200;y>0;y--);
}
}
/**************************************************/ |