TQ2440端口介绍:

TQ2440之LED点亮_寄存器

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

TQ2440之LED点亮_引脚_02

                                            

TQ2440之LED点亮_外部中断_03

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);
}
}