各位,连发了几个贴子,但是疑问还是没解决,我还没做目标板,但是用proteus7.7画了图纸,编写了软件如下:
uchar const led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar l;
void main(void)
{
uchar i=0,k=0;
WDTCTL=WDTPW+WDTHOLD; _DINT();
BCSCTL2=0; BCSCTL1|=XT2OFF;
TACTL=TASSEL_2+TAIE+MC_2;
TAR=0;
TACCTL0=CCIE;
TACCR0=0x0fff;
P2DIR=0xff;
P2SEL=0;
P2OUT=0;
P1DIR=0xff;
P3DIR=0xff;
P1SEL=0x00;
P3SEL=0x00;
P1OUT=led[i];
P3OUT=led[k];
_EINT(); while(1);
}
#pragma vector= TIMER0_A1_VECTOR
__interrupt void TIMER0_A1(void)
{
uchar i=0,k=0;
if(l++==50)
{
if(P2OUT&0x80)
P2OUT=0x01;
else
P2OUT<<=1;
if(i++==9)
{
i=0;
if(k++==9)
k=0;
}
P1OUT=led[i];
P3OUT=led[k];
}
}
但是还是不能中断,这和IAR 的simulator模式应该就没关系了。如果中断能行,P2口的走·马灯应·闪动,P1和P3口·的数码管应从0-9显示。
请教各位了,谢谢!
Peter_Zheng:
进不了中断时因为你的中断向量不对。#pragma vector= TIMER0_A1_VECTOR对应的是CCR1的中断,而程序中设置的是CCR0的中断。
请看头文件里中断向量的注释
#define TIMER0_A1_VECTOR (8 * 2u) /* 0xFFF0 Timer0)A CC1, TA0 */
#define TIMER0_A0_VECTOR (9 * 2u) /* 0xFFF2 Timer0_A CC0 */
Young Hu:
回复 Peter_Zheng:
zhi chen,
建议您使用硬件开发板来进行调试和学习,毕竟以后还是要基于真实的硬件来开发,把时间浪费在其他方面不值。
像我们都没有用过proteus7.7,可能不会给您很满意的答案。
TI中文支持网



