[应用相关] 这个错误原因该怎么改

[复制链接]
635|16
 楼主| chuxh 发表于 2020-7-4 14:59 | 显示全部楼层 |阅读模式
#define uint unsigned int
#define uchar unsigned char
void port_init();
void delay(uint x);
uchar t=0,u=0;
void main()
{
  WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
  port_init();
  while(1)
  {
    if(t==200)
    {
      t=0;
      P9OUT =~P9OUT;
    }
  }
}
void port_init()
{
  P5DIR |= 0x16;
  P5OUT = 0x10;
  P1DIR |= 0xf0;
  P1OUT |= 0xf0;
  P8DIR = 0xff;
  P8OUT = 0xff;
  P9DIR |= 0x0f;
  P9OUT |= 0xff;
  TA0CTL=0x02c2;
  TA0EX0=0x0007;
  TA0R=(65536-20000);
  TAIFG=0;
}
void delay(uint x)
{
  uint a,b;
  for(a=x;a>0;a--)
    for(b=110;b>0;b--);
}
#progma vector=TIMER0_A0_VECTOR  //(Error[Pe011]: unrecognized preprocessing directive)
__interrupt void Timer0_A0()
{
  TA0R=(65536-20000);
  TAIFG=0;         //(Error[Pe137]: expression must be a modifiable lvalue )
  t++;
}
括号里是错误原因,该怎么改,求指教
zwll 发表于 2020-7-4 15:03 | 显示全部楼层
pragma vector = ... ; pragma写错了
stly 发表于 2020-7-4 15:06 | 显示全部楼层
TAIFG 这儿TAIFG是一个宏,一个常量,常量是不能赋值的;
dingy 发表于 2020-7-4 15:10 | 显示全部楼层
TAIFG不是标志位吗,为什么不能赋值?
supernan 发表于 2020-7-4 15:15 | 显示全部楼层
你看看你用的头文件里是定时器0的寄存器是什么名字
chenjunt 发表于 2020-7-4 15:21 | 显示全部楼层
这个里面好像没有涉及到标志位的寄存器
xxmmi 发表于 2020-7-4 15:25 | 显示全部楼层
看看本蕊片的头文件,通过这个文件把硬件跟软件关联在一起。
llia 发表于 2020-7-4 15:29 | 显示全部楼层
TAIFG就是那个中断标志的位,你可以先读出控制寄成器的值与位置码相与,判断是0还是非0
gongche 发表于 2020-7-4 15:33 | 显示全部楼层
还有对位置吗取反相与,再写回控制寄成器,就清了标志位了。
bqyj 发表于 2020-7-4 15:35 | 显示全部楼层

表达式必须是一个可修改的值
tian111 发表于 2020-7-4 15:41 | 显示全部楼层
具体的解决方法根据你使用的编程语言的不同
chenho 发表于 2020-7-4 15:45 | 显示全部楼层
TAIFG=0;  这个有问题
stly 发表于 2020-7-4 15:48 | 显示全部楼层
#progma vector写错了。
dingy 发表于 2020-7-4 15:51 | 显示全部楼层
#progma 看看别人怎么写的
renyaq 发表于 2020-7-4 16:00 | 显示全部楼层
A5,TI内部的外设技术编号,有几个定时器看具体型号,别的型号有B7定时器外设。
xxrs 发表于 2020-7-4 16:03 | 显示全部楼层
向量函数参考例子。
 楼主| chuxh 发表于 2020-7-4 16:07 | 显示全部楼层

明白了,多谢大家讨论这么多哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

936

主题

11296

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部