TQ2440之LED点亮

来源:互联网 发布:国外看病知乎 编辑:程序博客网 时间:2024/04/29 07:41

 

TQ2440端口介绍:

功能:实现四个LED灯的显示(全亮,轮询点亮...),管脚配置如下

                                            

PnCON:引脚控制寄存器,决定每个引脚使用哪种功能(有些引脚是复用引脚)

PnDAT:引脚数据寄存器,根据端口的配置,可以读、写数据,端口A只有输出功能

PnUP:引脚上拉寄存器,端口A不具备上拉电阻

MISSCR:杂项控制寄存器(暂时不完全理解,日后在研究)

DCLKCON:控制寄存器(暂时不完全理解,日后在研究)

EXTINTn:外部中断控制寄存器(触发方式,为边沿出发或电平出发,同时还配置信号的触发极性)

EINTFLTn:外部中断滤波器(为确认电平中断,由于噪声滤波必须保持中断管脚40ns的延时)

EINTMASK:外部中断屏蔽寄存器

EINTPEND:外部中断挂起寄存器(表示中断是否发生)

GSTATUSn:通用状态寄存器,包括复位,看门口,电源。。。。。

DSCn:驱动强度控制寄存器

MSLCON:存储器睡眠控制寄存器

 

 

本内容主要是实现LED等“显闪”

源码如下:

void My_Led_Test(void)
{
 int idx;
 
 Uart_Printf("\nMy Led Test Begin\n");
   
 rGPBCON |= 0x15400;    //CONFIGURE PINS: SET PB5、PB6、PB7、PB8  OUTPUT
 rGPBUP |= 0x1E0; //set pins pull-up
 Delay(10);
 while (Uart_Getch() != 's')
 {
  rGPBDAT &= ~(0x0f << 5); //all light on
  Delay(1000);
  rGPBDAT |= (0x0f << 5); //all light off
  Delay(10);
  for (idx = 0; idx < 8; idx ++)
  {
   if (idx <3)
   {
    rGPBDAT &= ~(0x01 << (5 + idx));
    Delay(2000);
   }
   else
   {
    rGPBDAT &= ~(0x01 << (12 - idx));
    Delay(2000);
   }
   if (idx == 3)
    rGPBDAT |= (0x0f << 5); //all light off
  }
  Delay(1000);
 }
}

 

 

 

 

原创粉丝点击