| 后来我把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
 用的时间和不嵌入汇编一样。
 嵌入汇编没作用。
 |