我这个用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();
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
使用的是_nop_(); 使得P2-0输出71KHz。问题在于我不知道怎么提高这个频率值了。
一周热门 更多>