本帖最后由 fnh02 于 2013-12-31 17:19 编辑
#define freq 11059200
#define PWM_limt (freq/1000*4.2)
#define UART_BAUDRATE_2400_T2 (65536-freq/4/2400)
T2L = UART_BAUDRATE_2400_T2; //设定定时初值
T2H = UART_BAUDRATE_2400_T2 >> 8; //设定定时初值
上面这两行编译没有问题,可以通过
TL0= PWM_limt; -->这一行也没有提示出错!
TH0= PWM_limt >> 8; -->这一行出错了 error C193: '>>': bad operand type
好像定义里面有*号 乘法运算表达式的基本上都会出错。
请教一下大大们~!!:funk:
不知道还允许不允许开新的问题...
void CCAP0_Time_SET (u32 i)
{
i += (CCAP0H<<8)|CCAP0L; //取 CCAP0定时器当前值
CCAP0L = ((u8 *)& i)[3]; //更新CCAP0[3]计数器值L
CCAP0H = ((u8 *)& i)[2]; //更新CCAP0[2]计数器值H
PWM.CCAP0L1 = ((u8 *)& i)[1]; //更新CCAP0[1]
PWM.CCAP0H1 = ((u8 *)& i)[0]; //更新CCAP0[0]
}
我想把它做成
void CCAP0_Time_SET (u8 x,u32 i)
{
i += (CCAPxH<<8)|CCAPxL; //取 CCAPx定时器当前值
CCAPxL = ((u8 *)& i)[3]; //更新CCAPx[3]计数器值L
CCAPxH = ((u8 *)& i)[2]; //更新CCAPx[2]计数器值H
PWM.CCAPxL1 = ((u8 *)& i)[1]; //更新CCAPx[1]
PWM.CCAPxH1 = ((u8 *)& i)[0]; //更新CCAPx[0]
}
不知道怎实现....要不然就要写两个函数了! |