如何减小周期

kusheng176 2010-10-18 08:58:17
我现在写了一段扫描程序,扫描完一次的话算一个扫描周期。
我用软件模拟的时候,晶振设置为6MHz时,周期为2ms;晶振设置为11.0592MHz时,周期为1ms。
但是我现在要烧到芯片里去,晶振已经固定了是6MHz,但是我的理想周期的话要0.5ms,请问下有什么方法吗?
...全文
77 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Great_Bug 2010-10-25
  • 打赏
  • 举报
回复
把C改成汇编,效率可以好一些. 不过也要看什么人去改写它.
dereckgail 2010-10-22
  • 打赏
  • 举报
回复
周期不能改变吧,最好换一个晶振
kusheng176 2010-10-22
  • 打赏
  • 举报
回复
那请问一下,如果把C换成汇编的话,能减小么?
其实我本身程序不长啊。。。

void main()
{
for(j=0;j<8;j++)
{
PC=0xFF ^ (0x01<<j); //PC=0xfe,左移直到PC=0x7f
if(j<4)
{
num=PA; //扫描PA口
Turn_pa(j);
}
else
{
num=PB; //扫描PB口
Turn_pb(j);
}
}
}

void Turn_pa(unsigned char mask) //对PA口数据进行存储
{
unsigned char j; //对PA口的每一位的状态存入buffer的低四位中
for (j=0; j<8;j++)
{
if(num & 1)
{
buffer[j]|=1<<mask;
}
num >>= 1;
}
}



void Turn_pb(unsigned char mask) //对PB口数据进行存储
{
unsigned char j; //对PB口的每一位的状态存入buffer的高四位中
for (j=0; j<8;j++)
{
if(num & 1)
{
buffer[j]|=1<<mask;
}
num >>= 1;
}
}
galle 2010-10-22
  • 打赏
  • 举报
回复
还有你的TURNA和B的程序为什么要循环8次?四次就OK了
PA PB PC 都接的什么东西?最好提供电路看看,然后说明你要解决什么问题!
现在看你的算法肯定有优化的地方!
galle 2010-10-22
  • 打赏
  • 举报
回复
如果要减少周期,尽可能的使用减操作判断。
a691662 2010-10-19
  • 打赏
  • 举报
回复
哦 楼上在说PLL 锁相环?
貌似PLL可以倍频的…………
lbing7 2010-10-19
  • 打赏
  • 举报
回复
有一种叫倍频电路,具体,偶也不太清楚,只是听说过...
Great_Bug 2010-10-19
  • 打赏
  • 举报
回复
其实....最简单的办法是,放弃那个"晶振已经固定了是6MHz"....改成24MHZ
dian_technology 2010-10-19
  • 打赏
  • 举报
回复
1。算法优化。
2。硬件升级。
空影 2010-10-18
  • 打赏
  • 举报
回复
看看你的延时程序,是否是用定时器的,反正都可以从算法上改的
a691662 2010-10-18
  • 打赏
  • 举报
回复
只能是算法了…………还有用运算周期少的语句
wackestar 2010-10-18
  • 打赏
  • 举报
回复
优化,从程序上优化,从算法上优化。

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧