STM8的GPIO输出实验-点亮LED(软件延时)
- UID
- 1062083
- 性别
- 男
|
STM8的GPIO输出实验-点亮LED(软件延时)
使用ST三合一体验套件中的STM8S体验系统板。 1、让板上的三个LED点亮。
试验程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)
}
main()
{
GPIO_Init();
while (1)
{
PD_ODR=0x0d;//PD0、PD2、PD3为输出1,LED亮
}
}
实验效果图如下:
如果使用开漏输出,则不能使LED点亮。
2、让三个LED闪烁,程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)
}
void Delay(unsigned int i)
{
unsigned int j;
while(i--)
{
//for(j=0;j<10000;j++);
}
}
main()
{
GPIO_Init();
while (1)
{
PD_ODR=0x0d;//PD0、PD2、PD3为输出1,LED亮
Delay(60000);
PD_ODR=0x00;
Delay(60000);
}
}
上述的延时使用软件延时来实现,在STVD软件中没有找到想C51那样可以软件仿真确定延时时间的方法,有知道的告诉我一声。
3、让三个LED逐次循环点亮,实现流水灯的效果。
在上述程序的基础上在做修改即可。具体程序如下:
#include "STM8S105C_S.h"
void GPIO_Init(void)
{
PD_DDR|=0x0D;//PD0、PD2、PD3为输出,其余保持原功能
PD_CR1|=0x0D;//对应位设置为推挽输出
//PD_CR1&=0xF2;//对应位设置为模拟开漏输出(不是真正开漏)
}
void Delay(unsigned int i)
{
unsigned int j;
while(i--)
{
//for(j=0;j<10000;j++);
}
}
main()
{
GPIO_Init();
while (1)
{
PD_ODR=0x08;//PD0、PD2、PD3为输出1,LED亮
Delay(60000);
PD_ODR=0x04;
Delay(60000);
PD_ODR=0x01;
Delay(60000);
}
}
关键字:STM8 GPIO输出 点亮LED 软件延时 |
|
|
|
|
|