基于ARM7 TDMI-S CPU的LPC2103的多功能电子钟
int main (void)
{
PLL_Init();
UART1_Init();
GPIO_init(14); // 选择GPIO功能
GPIO_init(15);
GPIO_init(16);
GPIO_init(18);
GPIO_init(2);
GPIO_init(3);
GPIO_init(4);
GPIO_init(27);
GPIO_init(6);
GPIO_init(7);
GPIO_inout(14,0); // 设置输入
GPIO_inout(15,0);
GPIO_inout(16,0);
GPIO_inout(18,0);
GPIO_inout(2,0);
GPIO_inout(3,0);
GPIO_inout(4,0);
GPIO_inout(27,0);
GPIO_inout(6,0);
GPIO_inout(7,0);
GPIO_init(23); //LED控制端的初始化
GPIO_init(24);
GPIO_init(10);
GPIO_init(11);
GPIO_init(12);
GPIO_init(25);
GPIO_inout(23,1);
GPIO_inout(24,1);
GPIO_inout(10,1);
GPIO_inout(11,1);
GPIO_inout(12,1);
GPIO_inout(25,1);
GPIO_SET(23,1);
GPIO_SET(24,1);
GPIO_SET(10,1);
GPIO_SET(11,1);
GPIO_SET(12,1);
GPIO_SET(25,1);
GPIO_init(DATA);
GPIO_init(CLK);
GPIO_init(DIG_EN0);
GPIO_init(DIG_EN1);
GPIO_init(DIG_EN2);
GPIO_init(DIG_EN3);
GPIO_inout(DATA,OUTPUT);
GPIO_inout(CLK,OUTPUT);
GPIO_inout(DIG_EN0,OUTPUT);
GPIO_inout(DIG_EN1,OUTPUT);
GPIO_inout(DIG_EN2,OUTPUT);
GPIO_inout(DIG_EN3,OUTPUT);
GPIO_SET(CLK,HIGH);
GPIO_SET(DATA,HIGH);
//GPIO_init(5);
//GPIO_inout(5,1);
//GPIO_SET(5,1);
Timer1Init();
Timer2Init(); // 定时器初始化
VICIRQStatus=1<26; // IRQ中断使能
VICIntSelect = 0<26; // 定时器2分配为IRQ中断
VICVectCntl1 = 0x20 | 26; /* 定时器2分配为向量IRQ通道0 */
VICVectAddr1 = (UINT32) Timer2ISR; /* 分配中断服务程序地址 */
VICIntEnable = 1 < 26; /* 定时器2中断使能 */
VICIntSelect = 0<5;
VICVectCntl0 = 0x20 | 5; /* 定时器1分配为向量IRQ通道0 */
VICVectAddr0 = (UINT32) Timer1ISR; /* 分配中断服务程序地址 */
VICIntEnable = 1 < 5; /* 定时器1中断使能 */
while(1)
{
timeupdate();
if(alarm!=0)
{
if(al_on3off[al_num]==0)
display=al_num*1111;
else
display=al_shi[al_num]*100+al_fen[al_num];
}
else
{ switch(dis_bit)
{ case 0:
display=shi*100+fen;
break;
case 1:
display=miao*100+week;
break;
case 2:
display=nian;
break;
case 3:
display=yue*100+ri;
break;
}
}
if(time10==1)
{time10=0;
if(GetKey()==1)
{
keysure();
}
}
if(LS==1)
{ if(miao%2==0)
{ GPIO_SET(25,1);
GPIO_SET(11,1);
GPIO_SET(12,1);
T0TCR=0x01;
}
else
{ GPIO_SET(25,0);
GPIO_SET(11,0);
GPIO_SET(12,0);
T0TCR=0x00;
}
}
}
}
以下是名为main.h的文件
typedef unsigned char UINT8 ;
typedef unsigned int UINT16 ;
typedef unsigned int UINT32 ;
//--------------------------------------------------------------------------------
#defineUART_BPS 115200
/* 系统设置, Fosc、Fcclk、Fcco、Fpclk必须定义*/
#define Fosc(11059200)//晶振频率,10MHz~25MHz,应当与实际一至
#define Fcclk(Fosc * 4) //66.3552 系统频率,必须为Fosc的整数倍(1~32),且<=60MHZ
#define Fcco(Fcclk * 4) //CCO频率,必须为Fcclk的2、4、8、16倍,范围为156MHz~320MHz
#define Fpclk(Fcclk / 4) * 1 //016.5888,VPB时钟频率,只能为(Fcclk / 4)的1 ~ 4倍
//--------------------------------------------------------------------------------
typedef enum
{
LOW,
HIGH
}en_Level;
typedef enum
{
INPUT,
OUTPUT
}en_InOut;
enum
{
FALSE,
TRUE
};
#defineSH(0x01 < 0)
#defineSG(0x01 < 1)
#defineSF(0x01 < 2)
#defineSE(0x01 < 3)
#defineSD(0x01 < 4)
#defineSC(0x01 < 5)
#defineSB(0x01 < 6)
#defineSA(0x01 < 7)
const UINT8 DIGData[] =
{
SA |SB |SC | SD |SE |SF,//0
SB | SC,//01
SA |SB |SG | SE | SD,//02
SA |SB |SC | SD | SG,//03
SB |SF | SG | SC,//04
SA |SF |SG |SC | SD,//05
SA |SC | SD | SE | SG | SF,//06
SA | SB| SC,//07
SA |SB |SC | SD | SE | SF | SG,//08
SA |SB |SC|SD | SF | SG,//09
0,//mask - 10
SG//minus - 11
};
//--------------------------------------------------------------------------------
#defineLED125
#defineLED212
#defineLED311
#defineLED410
#defineLED524
#defineDATA26
#defineCLK13
#defineDIG_EN021
#defineDIG_EN120
#defineDIG_EN219
#defineDIG_EN317
#defineINT016
#defineINT114
#defineINT215
#defineIR_IN18
#defineBUZZER23
//--------------------------------------------------------------------------------
void PLL_Init(void);
void Timer0_Init(void);
void UART1_Init (void);
UINT8 GPIO_READ(UINT8 GPIO_num) ;
void GPIO_init(UINT8 GPIO_num);
void GPIO_inout(UINT8 GPIO_num,UINT8 in_out);
//inline voidGPIO_SET(UINT8 GPIO_num,UINT8 High_Low);
void __irq IRQ_Timer0 (void);
void GPIO_SET(UINT8 GPIO_num,UINT8 High_Low);
//--------------------------------------------------------------------------------
ARM7TDMI-SLPC2103多功能电子 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)