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占用了。
|