code uchar HMI1[4]= {0xcc,0x33,0xc3,0x3c}; //帧尾
uchar Switching_coordinates[13]={0x00}; // 数据缓存
code uchar Powerout[6]={0xAA,0x00,0xcc,0x33,0xc3,0x3c}; //帧头
void HMI_switch(uchar number,int Xs,int Ys,int Xe,int Ye,int X,int Y) //因为输座标麻烦,不方便移植 ,所以自动拆高底位
{
send_string( HMI2_switch,2); //发帧头
Switching_coordinates[0]=number; //图片编号
Switching_coordinates[1]=(uchar)(Xs>>8);
Switching_coordinates[2]=(uchar)Xs;
Switching_coordinates[3]=(uchar)(Ys>>8);
Switching_coordinates[4]=(uchar)Ys;
Switching_coordinates[5]=(uchar)(Xe>>8);
Switching_coordinates[6]=(uchar)Xe;
Switching_coordinates[7]=(uchar)(Ye>>8);
Switching_coordinates[8]=(uchar)Ye;
Switching_coordinates[9]=(uchar)(X>>8);
Switching_coordinates[10]=(uchar)X;
Switching_coordinates[11]=(uchar)(Y>>8);
Switching_coordinates[12]=(uchar)Y;
send_string(Switching_coordinates,13); //发数据
send_string(HMI1,4); //帧尾
}
mian{
while(1)
{
HMI_switch(0x02,0x0150,0x01d0,0x01c8,0x0248,0x0150,0x01d0); //每秒发一次
if (ul_clok_satar)
{
ul_clok_satar=~ul_clok_satar;
PWMCounter++;
if(PWMCounter<=ul_PWMCounterSATAT[ul])
ul_PWM=1;
else
ul_PWM=0;
if(PWMCounter>=200)
PWMCounter=0;
}
}
}
void TM0_Isr() interrupt 1 //100US
{
if(facecare)
{
facecare_Time_Counter=~facecare_Time_Counter;
}
if (ul_satar|clok_satar)
{
ul_clok_satar=~ul_clok_satar;
}
}
每次到发送的时候,串口占用时间过长,定时器虽然反转了,主程序跟不上。PWM会有0.2MS偏差
我是把计数写在中断直接处理输出。还是怎么改一下 定时器1已经被另一路高速PWM占用了。
|