把代码写成诗歌吧
#include "iocc2530.h"
#define led1 P1_0
#define led2 P1_1
#define uint unsigned int
#define uchar unsigned char
#define uint32 unsigned long
#define CRYSTAL 0
#define RC 1
char LEDBLINK;
void Set_ST_Period(uint sec);
void Init_SLEEP_TIMER(void);
void Delay(uint n);
void LedGlint(void);
void InitLEDIO(){
//1111 1100
P1SEL &=0xFC;
//0000 0011
P1DIR |=0x03;
led1=1;
led2=1;
}
//设置系统主时钟函数
void SET_MAIN_CLOCK(source){
if(source){
CLKCONCMD |= 0x40;
while(!(CLKCONSTA & 0x40));
}else{
CLKCONCMD &= ~0x47;
while((CLKCONSTA & 0x40));
}
}
//设置系统低速时钟函数
void SET_LOW_CLOCK(source){
(source==RC)?(CLKCONCMD |= 0X80):(CLKCONCMD &= ~0x80);
}
void main(){
SET_MAIN_CLOCK(CRYSTAL);
SET_MAIN_CLOCK(CRYSTAL);
InitLEDIO();
LEDBLINK=0;
led1=0;
led2=1;
//初始化睡眠定时器
Init_SLEEP_TIMER();
//闪烁LED1
LedGlint();
//设置睡眠状态8秒
Set_ST_Period(8);
while(1){
if(LEDBLINK){
LedGlint();
Set_ST_Period(8);
led2=!led2;
LEDBLINK=0;
}
Delay(100);
}
}
//初始化睡眠定时器
void Init_SLEEP_TIMER(void){
ST2=0X00;
ST1=0X0F;
ST0=0X0F;
EA=1;
STIE=1;
STIF=0;
}
//延时函数
void Delay(uint n){
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
//LED1闪烁函数 闪烁10次
void LedGlint(void){
uchar j=10;
while(j--){
led1=!led1;
Delay(10000);
}
}
//设置睡眠时间
void Set_ST_Period(uint sec){
//读睡眠定时器当前的值到sleepTimer中 先读ST0的值
long sleepTimer=0;
sleepTimer |=ST0;
sleepTimer |=(long)ST1 << 8;
sleepTimer |=(long)ST2 << 16;
//睡眠定时器的时钟频率为32.768khz.1s增加32768
//将睡眠时间加到sleepTimer上
sleepTimer +=((long)sec * (long)32768);
//将sleepTimer写入睡眠定时器
ST2=(char)(sleepTimer>>16);
ST1=(char)(sleepTimer>>8);
ST0=(char)sleepTimer;
}
#pragma vector = ST_VECTOR
__interrupt void ST_ISR(void){
STIF=0;
LEDBLINK=1;
}