紧急求助》ST89S52单片机运行程序,时钟端能达到450KHz吗

2019-07-15 09:15发布

我这个用AT89S52运行,时钟端最大只有71KHz而已,有什么办法使得时钟端频率达到450KHz?
#include<reg51.h>   
#include <intrins.h>                                                                                                
#define uchar unsigned char                                                                                         
#define uint unsigned int                                                                                          
/*命令说明*/
#define writedatamode_z  0x40   // 采用自动地址加一方式写显示缓存                                                   
#define writedatamode_g  0x44   //采用地址固定模式写缓存                                                            
#define readkeymode  0x42       //  键盘扫描模式                                                                    
#define  startdata  0xc0 //起始地址     
#define display   0x8c          //开启显示 亮度用后三位决定                                                         
#define closedis   0x80         //关显示                                                                                                                                                                                               
sbit SCLK=P2^0;           //时钟端                                                                                          
sbit DIO =P2^1;           //数据端                                                                                          
uint code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,                                                           
       0x7f,0x6f,0x77,0x7C,0x58,0x5E,0x79,0x71};//0-F



void start()//开始条件                                                                                             
{                                                                                                                  
    SCLK=1;  
_nop_();                                                                                                     
    DIO=1;
_nop_();                                                                                                      
    DIO=0;
_nop_();                                                                                                        
    SCLK=0;
_nop_();
}                                                                                                                                                                                                                                       
void send_data(uchar dat) //送数据低位先传
{                                                                                                                  
    uchar  i;                                                                                                      
    for(i=0;i<8;i++)                                                                                                
    {                                                                                                               
        SCLK=0;                                                                                                     
        DIO=(bit)(dat&0x01);
_nop_();                                                                                       
        SCLK=1;                                                                                                     
        dat>>=1;  
_nop_();                                                                                                
    }                                                                                                               
    SCLK=0;                                                                                                         
}                                                                                                                  
void stop()//结束条件                                                                                               
{                                                                                                                  
    SCLK=0;
_nop_();                                                                                                     
    DIO=0;     
_nop_();                                                                                                  
    SCLK=1;  
_nop_();                                                                                                      
    DIO=1;
_nop_();                                                                                                      
}                                                                                                                  
void main()                                                                                                         
{                                                                                                                  

    start();                                                                                                        
    send_data(closedis);//关显示                                                                                    
    stop();                                                                                                         
    while(1)                                                                                                        
    {
        start();                                                                                                   
        send_data(writedatamode_z);//自动地址                                                                       
        stop();                                                                                                     

        start();                                                                                                     
        send_data(0xc0); //起始地址                                                                           

             send_data(0xff);                                                                                 

        stop();

        start();                                                                                                   
        send_data(display);//开显示                                                                                 
        stop();



    }                                                                                                               
}      

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。