⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer1captocontrolled.c

📁 LPC213X开发板提供的定时器1输入捕获实验,基于前后台的实验.
💻 C
字号:
/********************************************************************************************
* 文 件 名:Timer1CapToControlLED.c
* 功    能:使用定时器1的输入捕获功能,获取延时参数(通过KEY2),用于控制LED8~LED1的闪烁频率。
* 注    意:根据ARMSKY-LPC213X/214X教学实验开发板原理图可知,LED1~LED8由74HC595_2控制。
*           用跳线帽短接P0.22和595_SI,P1.25和595_SCK,P1.20和595_CS2,P0.10和KEY2。
* 作    者:POWER
* 日    期:2006年7月30号
* 斯凯科技主页:www.armsky.net
* 斯凯科技论坛:www.armsky.net/bbs
*********************************************************************************************/
#include    "config.h"

#define      SPI_CS         ((uint32)0x01<<20)                 // P1.20引脚模拟SPI的片选信号
#define      SPI_DATA       ((uint32)0x01<<22)                 // P0.22引脚模拟SPI的数据信号
#define      SPI_CLK        ((uint32)0x01<<25)                 // P1.25引脚模拟SPI的时钟信号
#define      H_SPI_CS()     IO1SET=SPI_CS                      // SPI的片选信号置高 
#define      L_SPI_CS()     IO1CLR=SPI_CS                      // SPI的片选信号置低
#define      H_SPI_DATA()   IO0SET=SPI_DATA                    // SPI的数据信号置高
#define      L_SPI_DATA()   IO0CLR=SPI_DATA                    // SPI的数据信号置低
#define      H_SPI_CLK()    IO1SET=SPI_CLK                     // SPI的时钟信号置高
#define      L_SPI_CLK()    IO1CLR=SPI_CLK                     // SPI的时钟信号置低

/********************************************************************************************
* 函数名称:Delay()
* 功    能:软件延时
* 入口参数:count    延时参数,值越大,延时越长
* 出口参数:无
*********************************************************************************************/
void Delay(uint32 count)
{
  uint32 i;
  
  for(;count>0;count--)
     for(i=0;i<10;i++);
}

/********************************************************************************************
* 函数名称:SendDataTo74HC595()
* 功    能:向74HC595发送一字节数据
* 入口参数:data    要发送的数据
* 出口参数:无
* 注    意:发送数据时,高位先发送
*********************************************************************************************/
void SendDataTo74HC595(uint8 data)
{
  uint8 i;
  
  L_SPI_CS();                                  // SPI_CS=0
  for(i=0;i<8;i++)                             // 发送8位数据(1个字节)
     {
       L_SPI_CLK();                            // SPI_CLK=0
       /* 设置SPI_DATA输出值 */
       if((data & 0x80)!=0)
         H_SPI_DATA();                         // SPI_DATA=1
       else
         L_SPI_DATA();                         // SPI_DATA=0
       data<<=1;                               // 将要发送的1字节数据左移一位
       H_SPI_CLK();                            // SPI_CLK=1
      }
  H_SPI_CS();                                  // SPI_CS=1     
}

/********************************************************************************************
* 函数名称:main()
* 功    能:使用定时器1捕获按键KEY2定时,控制LED8~LED1闪烁
*********************************************************************************************/
int main(void)
{
  volatile uint32 i;
  
  PINSEL1&=~((uint32)0x03<<12);                          // 设置P0.22引脚为GPIO
  PINSEL2&=~((uint32)0x01<<3);                           // 设置P1.20和P1.25引脚为GPIO
  IO0DIR|=SPI_DATA;                                      // 设置P0.22,P1.20,P1.25引脚为输出
  IO1DIR|=(SPI_CS | SPI_CLK);                                     
 
  /* 设置P0.10连接CAP1.0 */
  PINSEL0&=~((uint32)0x03<<20);                                         
  PINSEL0|=((uint32)0x02<<20);
  
  T1PR=99;                                               // 分频
  T1CCR=1<<1;                                            // 设置CAP1.0下降沿捕获
  T1TC=0;                                                // 定时器1计数器清零
  T1TCR=0x01;                                            // 启动定时器1
     
  while(1)                                               // 死循环
       {  
         i=T1CR0;                                        // 读取捕获到的T1TC值,用作延时参数
         SendDataTo74HC595(0x00);                        // LED8 ~LED1全灭
         Delay(i);                                       // 延时
         SendDataTo74HC595(0xff);                        // LED8 ~LED1全亮
         Delay(i);
       }
  return 0;
}                                                                                                             









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -