下面开始写程序
#include
//也许有人问为什么不用STM8S.H,因为IAR自己已经写好了,而且还很好用,为什么不用呢
/*****************************************************************************/
//本实验用于实现LED灯点亮
//在开发板里有两个可供编程的LED,分别接在单片机的PC1,PC2引脚上
//并且通过限流电阻接到VCC3.3V上,即采用灌入模式
//那么我们在程序里将LED的相应寄存器写0点亮LED,写1则熄灭
/******************************************************************************/
/*****************************************************************************
引脚初始化程序,参见第11节.对应数据手册,我们要做
DDR---1:引脚输入输出方向控制,默认是0,即输入模式,此处我们选输出模式
CR1---2:通过软件置1或置0,用来在输入或输出模式下选择不同的功能,此处我们选推挽输出
ODR---3:端口数据输出寄存器,通过软件置1或置0,实现对LED电压的控制
由于仅仅是驱动LED,不涉及到其他信息,其他寄存器就不予理睬了
******************************************************************************/
void GPIO_Init()
{
PC_DDR_DDR1=1;//PC1即LED1设为输出模式
//也有人用PC_DDR|=0X02 (PC_DDR=(PC_DDR|0X02))
//这是把PC口的所有IO口一起赋值,用的是"或",不会影响其他位
//如果有人问为什么可以这么写,那你真应该去看看书了
//需要控制多个引脚的时候我们可以用后面的写法,比较简洁
PC_DDR_DDR2=1;//PC2即LED2设为输出模式
PC_CR1_C11 =1;//PC1设为推挽输出模式
PC_CR1_C12 =1;//PC2设为推挽输出模式
PC_ODR_ODR1=0;//点亮LED1,因为默认该值上电时为0,我们这里可以不写,同理下面写LED2
PC_ODR_ODR2=0;//点亮LED2
}
/*****************************************************************************
上面的程序可以用第二种方式写,即为
void GPIO_Init()
{
PC_DDR|=0X06;
PC_CR1|=0X06;
PC_ODR|=0;//PC_ODR|=0X00;
}
******************************************************************************/
void main()
{
GPIO_Init();//执行PC1,PC2初始化,以驱动LED
while(1);//程序在这里永久执行循环,停止在这里
}
下载程序,立马能见到两个LED点亮了。如果这是你第一个STM8程序,你觉得还没到高潮,那么请将ODR值一个改成1,就能看到区别了
上一篇:STM8S208R8的第二个程序---按键控制LED
下一篇:基于MP430控制的正弦波信号源的设计与制作
推荐阅读最新更新时间:2024-03-16 15:15