📄 main.c
字号:
#include <ioCC1110.h>
#define uint unsigned int
#define uchar unsigned char
#define led1 P1_0
#define led2 P1_1
uint counter=0; //统计溢出次数
uint TempFlag; //用来标志是否要闪烁
void Initial(void);
void Delay(uint);
/*****************************************
//初始化T2的配置程序
*****************************************/
#define TIMER2_INIT() \
do { \
T2CTL = 0x00; \
T2CT = 0x00; \
T2PR = 0x00; \
} while (0)
/*****************************************
set_counter T2CT
prescaler T2PR
tick_period T2CTL.TIP
(dis)enable_interrupt T2CTL.INT
clear_expired T2CTL.TEX
mode T2CTL.TIG
*****************************************/
#define TIMER2_SET_COUNTER(counter) do{ T2CT = counter; }while(0)
#define TIMER2_SET_PRESCALER(prescaler) do{ T2PR = prescaler; }while(0)
#define TIMER2_SET_TICK_PERIOD(tick) do{ T2CTL = ((T2CTL & ~0x03) | tick); }while(0)
#define TIMER2_ENABLE_INTERRUPT() do{ T2CTL |= 0x10; }while(0)
#define TIMER2_DISABLE_INTERRUPT() do{ T2CTL &= ~0x10; }while(0)
#define TIMER2_CLEAR_EXPIRED() do{ T2CTL &= ~0x40; }while(0)
#define TIMER2_EXPIRED (T2CTL & 0x40)
#define TIMER2_SET_MODE(mode) (T2CTL = (mode) ? T2CTL|0x04 : T2CTL&~0x04)
/****************************
//初始化程序
***************************/
void Initial(void)
{
//初始化P1
P1DIR = 0x03; //P10 P11为输出
led1 = 1;
led2 = 1; //灭LED
//用T2来做实验
TIMER2_INIT();
EA = 1; //开总中断
IEN1 |= 0X04; //开T2中断
//T2CTL &= ~0X10; //关T2CTL寄存器允许中断
TIMER2_ENABLE_INTERRUPT(); //开
TIMER2_SET_COUNTER(0x50); // t = T2PR*VAL(T2CTL.TIP)/TIMER tick speed.
TIMER2_SET_TICK_PERIOD(0);
TIMER2_SET_MODE(1);
}
/***************************
//主函数
***************************/
void main()
{
Initial(); //调用初始化函数
led1 = 0; //点这红色LED
led2 = 1;
while(1) //等待中断
{
if(TempFlag)
{
//led2 = led1;
led1 = !led1;
TempFlag = 0;
Delay(6000);
}
}
}
#pragma vector = T2_VECTOR
__interrupt void T2_ISR(void)
{
TIMER2_CLEAR_EXPIRED(); //清T2CTL寄存器标志位
IRCON = 0x00; //可不清中断标志,硬件自动完成
if(counter<2)counter++; //10次中断LED闪烁一轮
else
{
counter = 0; //计数清零
TempFlag = !TempFlag; //改变闪烁标志
}
}
/****************************
//普通延时程序
***************************/
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++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -