?? timer.c
字號(hào):
#include "global.h"
//intTimerB0.c
uchar red_vector1;
ulong sumcount;
uint count=0;
uchar uart_flg=0;
long Q1[]={280,320,150,180,140,280,
150,600,100,230,100,280,
320,150,180,140,280,150,600};
/***************說明*********************************
p2^0==Q0;p2^1==Q1;p2^2==Q2;p2^3==Q3;p2^4==Q4;p2^5==Q5;
p2^6==Q6;p2^7==Q7;p3^0==Q8;p3^1==Q9;p3^2==Q10;
P2^0==P5^0;
P2^1==P5^1;
P2^4==P5^2;
***************************************************/
interrupt[TIMERB0_VECTOR] void Timer_B0(void)
{
TBCCR0=Q1[red_vector1];
red_vector1+=1;
switch (red_vector1)
{
case 1:
P5DIR&=~BIT4; //=====
P5DIR|=BIT4; //=====
P5DIR&=~BIT4; //=====
P2OUT&=~BIT0; //Q0
//P5OUT|=BIT0;
//P5OUT|=BIT2;
P2OUT&=~BIT4; //Q4
P2OUT|=BIT5; //Q5
P2OUT|=BIT6; //Q6
//P5OUT&=~BIT1;
P2OUT|=BIT1; //P2.1=1,Q1
break;
case 2:
P2OUT^=BIT5; //p2.5=1 red
break;
case 3:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
break;
case 4:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=1
//P5OUT^=BIT2;
P2OUT^=BIT4; //p2.4=1
break;
case 5:
ADC12CTL0|=0X01;
ADC12CTL0&=~0x01;
while((ADC12CTL1&0X01)==1);
red[count]=ADC12MEM0;
P5OUT^=BIT7;
P5OUT^=BIT7;
break;
case 6:
P2OUT^=BIT5; //p2.5=0 red
break;
case 7:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
//P5OUT^=BIT2;
P2OUT^=BIT4; //p2.4=0
break;
case 8:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=1
break;
case 9:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
break;
case 10:
P2OUT^=BIT0; //p2.0=1
//P5OUT^=BIT0;
opr8402(data_8402[2]); //紅外光亮度控制
opr8402(data_8402[3]); //紅外光增益控制
break;
case 11:
P2OUT^=BIT0; //p2.0=0
//P5OUT^=BIT0;
break;
case 12:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=1
break;
case 13:
P2OUT^=BIT6; //p2.6=1 infrared
break;
case 14:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
break;
case 15:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=1
//P5OUT^=BIT2;
P2OUT^=BIT4; //p2.4=1
break;
case 16:
ADC12CTL0|=0X01;
ADC12CTL0&=~0x01;
while((ADC12CTL1&0X01)==1);
ired[count]=ADC12MEM0;
P5OUT^=BIT7;
P5OUT^=BIT7;
break;
case 17:
P2OUT^=BIT6; //p2.6=0 infrared
break;
case 18:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
//P5OUT^=BIT2;
P2OUT^=BIT4; //p2.4=0
break;
case 19:
// P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=1
break;
case 20:
//P5OUT^=BIT1;
P2OUT^=BIT1; //P2.1=0
P2OUT|=BIT0;
// P5OUT&=~BIT0;
count++;
sumcount++; //流水計(jì)數(shù)器+1
if(count==16)
{
count=0;
}
TBCCTL0&=~CCIE; //不允許B定時(shí)器中斷
// uart_flg++;
//if(uart_flg==2)
// {
// IFG1 |=UTXIFG0;
// uart_flg=0;
// }
flag=1;
break;
}
}
interrupt[TIMERA0_VECTOR] void Timer_A(void)
{
TBCTL|=TBCLR; //清除定時(shí)器B的TBR寄存器、計(jì)數(shù)方向等內(nèi)容
opr8402(data_8402[0]); //紅光亮度控制
opr8402(data_8402[1]); //紅光增益控制
TBCCR0=50; //設(shè)置25微秒間隔
TBCCTL0=CCIE; //允許B定時(shí)器中斷
red_vector1=0; //紅/紅外光間隔向量清零
}
void timerA(void)
{
CCR0=16666-1; //120Hz, 2M/120
CCR2=16666-4200; //占空比 (16666-4200)/16666
CCR1=4200; //2.4ms脈沖,占空比4200/16666
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -