/*************HLK-W801-KIT-V1.1********************/
/*************1.3' OLED IIC************************/
/*************ID:共同学习stm8**********************/
/*************多平台™一切都是运算******************/
/*************20240421*****************************/
//0X0000 GPIO 数据寄存器 GPIO_DATA RW 读写 GPIO 当前数据 0X180B
#define GPIOA_DATA (*(volatile unsigned int*)(0x40011200+0x0000))
//0X0004 GPIO 数据使能寄存器 GPIO_DATA_EN RW 配置 GPIO_DATA 的使能位 0XFFFF
#define GPIOA_DATA_EN (*(volatile unsigned int*)(0x40011200+0X0004))
//0X0008 GPIO 方向控制寄存器 GPIO_DIR RW 配置 GPIO 方向 0X0000
#define GPIOA_DIR (*(volatile unsigned int*)(0x40011200+0X0008))
//0X000C GPIO 上拉控制寄存器 GPIO_PULL_EN RW 配置 GPIO 上拉 0XFFFF
#define GPIOA_PULL_EN (*(volatile unsigned int*)(0x40011200+0X000c))
//0X001C GPIO 下拉控制寄存器 GPIO_DN_ENA RW 配置 GPIO 下拉 0X0000
#define GPIOA_DN_ENA (*(volatile unsigned int*)(0x40011200+0X001c))
//0X0000 GPIO 数据寄存器 GPIO_DATA RW 读写 GPIO 当前数据 0X180B
#define GPIOB_DATA (*(volatile unsigned int*)(0x40011400+0x0000))
//0X0004 GPIO 数据使能寄存器 GPIO_DATA_EN RW 配置 GPIO_DATA 的使能位 0XFFFF
#define GPIOB_DATA_EN (*(volatile unsigned int*)(0x40011400+0X0004))
//0X0008 GPIO 方向控制寄存器 GPIO_DIR RW 配置 GPIO 方向 0X0000
#define GPIOB_DIR (*(volatile unsigned int*)(0x40011400+0X0008))
//0X000C GPIO 上拉控制寄存器 GPIO_PULL_EN RW 配置 GPIO 上拉 0XFFFF
#define GPIOB_PULL_EN (*(volatile unsigned int*)(0x40011400+0X000c))
//0X001C GPIO 下拉控制寄存器 GPIO_DN_ENA RW 配置 GPIO 下拉 0X0000
#define GPIOB_DN_ENA (*(volatile unsigned int*)(0x40011400+0X001c))
/**************************************************/
// _______________________
// | 1.3' OLED IIC |
// | GND|VCC|SCL|SDA |
// | 128*64 |
// |_______________________|
//显示SCL-----PA2
#define X_SCL_L GPIOA_DATA &=~(1<<2)
#define X_SCL_H GPIOA_DATA |=(1<<2)
//显示SDA-----PA1
#define X_SDA_L GPIOA_DATA &=~(1<<1)
#define X_SDA_H GPIOA_DATA |=(1<<1)
/**************************************************/
#define led1_l GPIOB_DATA |=(1<<5)
#define led1_h GPIOB_DATA &=~(1<<5)
#define led2_l GPIOB_DATA |=(1<<25)
#define led2_h GPIOB_DATA &=~(1<<25)
#define led3_l GPIOB_DATA |=(1<<26)
#define led3_h GPIOB_DATA &=~(1<<26)
#define led4_l GPIOB_DATA |=(1<<18)
#define led4_h GPIOB_DATA &=~(1<<18)
#define led5_l GPIOB_DATA |=(1<<17)
#define led5_h GPIOB_DATA &=~(1<<17)
#define led6_l GPIOB_DATA |=(1<<16)
#define led6_h GPIOB_DATA &=~(1<<16)
#define led7_l GPIOB_DATA |=(1<<11)
#define led7_h GPIOB_DATA &=~(1<<11)
/**************************************************/
void xianshi(); //显示
void yanshi_1s(); //延时1秒
/**************************************************/
unsigned char liushui_a1;
/**************************************************/
int main(void)
{
unsigned char liushui_b1;
GPIOB_DATA_EN |=(1<<5)+(1<<25)+(1<<26)+(1<<18)+(1<<17)+(1<<16)+(1<<11); //使能
GPIOB_DIR |=(1<<5)+(1<<25)+(1<<26)+(1<<18)+(1<<17)+(1<<16)+(1<<11); //输出
GPIOB_DATA |=(1<<5)+(1<<25)+(1<<26)+(1<<18)+(1<<17)+(1<<16)+(1<<11); //输出高
/**************************************************/
while (1)
{
liushui_a1 =0x01;
liushui_b1 =7;
while(liushui_b1--)
{
xianshi(); //显示
yanshi_1s();
liushui_a1 <<=1; //左移一位
}
}
return 0;
}
/**************************************************/
void xianshi() //显示
{
if(liushui_a1&0x01){led1_h;} else{led1_l;}
if(liushui_a1&0x02){led2_h;} else{led2_l;}
if(liushui_a1&0x04){led3_h;} else{led3_l;}
if(liushui_a1&0x08){led4_h;} else{led4_l;}
if(liushui_a1&0x10){led5_h;} else{led5_l;}
if(liushui_a1&0x20){led6_h;} else{led6_l;}
if(liushui_a1&0x40){led7_h;} else{led7_l;}
}
/**************************************************/
void yanshi_1s() //延时1秒
{
volatile unsigned int x,y;
for(x=1000;x>0;x--)
for(y=2500;y>0;y--);
}
/**************************************************/
/**************************************************/
/**************************************************/
/**************************************************/
|