我用STC12C5A60S2写彩屏程序,本来清一次显存687ms,
我试着嵌入了一下汇编,结果时间反而多了。
void ClearScreen(uchar color)
{// uchar j,k;
/***
设定显示屏幕的大小
***/
M7_BUS_Instruction_Command_8(0x2a);
M7_BUS_Instruction_Data_8(0x00);
M7_BUS_Instruction_Data_8(0x00);
M7_BUS_Instruction_Data_8(1);
M7_BUS_Instruction_Data_8(0XDF);//480 //row start_end
M7_BUS_Instruction_Command_8(0x2b);
M7_BUS_Instruction_Data_8(0x00);
M7_BUS_Instruction_Data_8(0x00);
M7_BUS_Instruction_Data_8(1);
M7_BUS_Instruction_Data_8(15); //272
M7_BUS_Instruction_Command_8(0x2c);
SetM7_BUSDC();
SetM7_BUSRD();
ClrM7_BUSCS();
//for (j=34;j>0;j--)
//{
//for(k=120;k>0;k--)
//{
#pragma asm
MOV R0,#34
MOV R1,#120
LOOP:
#pragma endasm
M7_BUS_Data_Color_8(color); //一次写32个点
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
M7_BUS_Data_Color_8(color);
//} //color++;
//}
#pragma asm
DJNZ R1,LOOP
DJNZ R0,LOOP
#pragma endasm
SetM7_BUSCS();
}
高手看看给解释解释。谢谢! |