| 
 
| 本帖最后由 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]
 }
 
 不知道怎实现....要不然就要写两个函数了!
 | 
 |