后来我把uchar j,k;定义成全局变量。
#pragma asm
MOV R0,#34
MOV R1,#120
LOOP:
#pragma endasm
改成
#pragma asm
MOV j,#34
MOV k,#120
LOOP:
#pragma endasm
我用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
改成
我用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 k,LOOP
DJNZ j,LOOP
#pragma endasm
用的时间和不嵌入汇编一样。
嵌入汇编没作用。
|