#include "ioCC2530.h"
void delay(int time)
{
int i;
char j;
for(i=0;i<time;i++)
for(j=0;j<240;j++)
{
asm("NOP");
asm("NOP");
asm("NOP");
}
}
#define D3 P1_0 // P1_0定義為P1_0
#define D4 P1_1 // P1_0定義為P1_1
#define D5 P1_3 // P1_0定義為P1_3
#define D6 P1_4 // P1_0定義為P1_4
#define SW1 P1_2 //SW1端口宏定義
int cishu=0;
unsigned char h;
/*******************LED1初始化部分*****************/
void InitLed()
{
P1SEL &= 0xE0; //設置P1_0,P1_1,P1_3,P1_4,P1_2口為普通I/O口
P1DIR |= 0x1B; //設置P1_0,P1_1,P1_3,P1_4口為輸出口
P1=0x00; //熄滅所有燈
}
void InitT1()
{
T3CTL|=0x1C;
T1CTL|=0x01;
PERCFG=0x40;
P1SEL|=0x1B;
T1CCTL2=0x64;
T1CCTL1=0x64;
T3CCTL0=0x74;
T3CCTL1=0x74;
T1CC2L=0xFF;
T1CC2H=h;
T1CC1L=0xFF;
T1CC1H=h;
T3CC0=0x01;
T3CC1=0x01;
}
/***************************************************/
void main(void)
{
unsigned char js=0;
unsigned char a=1; //a=1為漸亮,a=2為漸滅
InitLed(); //調用初始化函數
InitT1();
while(1)
{
if(SW1==0)
{
delay(1);
if(SW1==0)
cishu++;
if(cishu>3)
cishu=1;
while(!SW1);
}
if(cishu==1)
{
if((T1STAT&0x7F)>0) //定時器1通道2中斷標志,為1
{
T1STAT=T1STAT&0x80; //清除中斷標志,與04相反
js++;
if(js>=1) //改變亮度的時間
{
js=0; //清零
if(a==1)
{
delay(25);
h=h+1; //漸亮
}
else
{
delay(25);
h=h-1; //漸滅
}
T1CC2L=0xff;
T1CC2H=h;
T1CC1L=0xff;
T1CC1H=h;
T3CC0=h;
T3CC1=h;
if(h>=254) //最大亮度
a=2; //設為漸滅
if(h==0) //最小亮度
a=1;
}
}
}
}
}
/*if((T1STAT&0x7F)>0)
{
js++;
if(js>=1)
{
js=0;
if(a==1)
h=h+1;
else
h=h-1;
T1CC1L=0xff;
T1CC1H=h;
T1CC2L=0xff;
T1CC2H=h;
if(h>=254)
a=2;
if(h==0)
a=1;
}
}*/
|