/******************** (C) COPYRIGHT 风驰iCreate嵌入式开发工作室 ***************************
* 文件名 :led.c
* 描述 :IO口配置函数库
* 实验平台:iCreate STM8开发板
* 寄存器版本 :V1.0.0
* 作者 :ling_guansheng QQ:779814207
* 博客 :
* 修改时间 :2011-12-20
* iCreate STM8开发板硬件连接
|--------------------|
| LED1-PD0 |
| LED2-PD1 |
| LED3-PD2 |
| LED4-PD3 |
|--------------------|
****************************************************************************************/
#include "led.h"
static void Delay(u32 nCount);
/**************************************************************************
* 函数名:LED_conf
* 描述 :STM8开发板上与LED相连接引脚初始化
* 输入 :无
*
* 输出 :无
* 返回 :无
* 调用 :外部调用
*************************************************************************/
void LED_conf(void)
{
PD_DDR|=0x0f; /* 设置数据方向寄存器 1为输出,0为输入--查看STM8寄存器.pdf P87 */
PD_CR1|=0x0f; /* 设置推挽输出--查看STM8寄存器.pdf P88 */
PD_CR2|=0x0f; /* 设置输出频率 1为10M,0为2M--查看STM8寄存器.pdf P89 */
}
/**************************************************************************
* 函数名:Set_Led_On
* 描述 :LED灯全亮
* 输入 :无
*
* 输出 :无
* 返回 :无
* 调用 :外部调用
*************************************************************************/
void Set_Led_On(void)
{
PD_ODR&=0xf0; /* 对数据寄存器写入值 写0亮,写1灭--查看STM8寄存器.pdf P85 */
}
/**************************************************************************
* 函数名:Set_Led_Off
* 描述 :LED灯全灭
* 输入 :无
*
* 输出 :无
* 返回 :无
* 调用 :外部调用
*************************************************************************/
void Set_Led_Off(void)
{
PD_ODR|=0x0f; /* 对数据寄存器写入值 写0亮,写1灭--查看STM8寄存器.pdf P85 */
}
/**************************************************************************
* 函数名:LED_Display
* 描述 :LED流水灯
* 输入 :无
*
* 输出 :无
* 返回 :无
* 调用 :外部调用
*************************************************************************/
void LED_Display(void)
{
u8 PortVal;
for(PortVal=0;PortVal<4;PortVal++)
{
PD_ODR =(u8)(~(1<<PortVal)); /* 移位再取反 */
Delay(0x1fff); /* 延时一小段时间,否则看不出LED的亮灭效果 */
}
}
/**************************************************************************
* 函数名:LED_Display_Bit
* 描述 :用51编程风格实现LED0的亮灭
* 输入 :无
*
* 输出 :无
* 返回 :无
* 调用 :外部调用
*************************************************************************/
void LED_Display_Bit()
{
PD0_out = 0; /* PD0引脚输出0 */
Delay(0x1fff);
PD0_out = 1; /* PD0引脚输出1 */
Delay(0x1fff);
}
/**************************************************************************
* 函数名:Delay
* 描述 :延时函数
* 输入 :nCount--要延时的计数值
*
* 输出 :无
* 返回 :无
* 调用 :内部调用
*************************************************************************/
static void Delay(u32 nCount)
{
/* Decrement nCount value */
while (nCount != 0)
{
nCount--;
}
}
/******************* (C) COPYRIGHT 风驰iCreate嵌入式开发工作室 *****END OF FILE****/
评论0