单片机如何进行ROM数据读 *** 作

单片机如何进行ROM数据读 *** 作,第1张

如果是并行接口的ROM,则一般控制WR 、RD和CS即可,然后直接从ROM的数据接口读取就行了,串行的话得看具体数据手册上写的读写时序了~

这个是AVR的外部ram测试和线路,http://wwwmculovercom/post/50html

我不太清楚你这个函数(以及它的子函数们)具有什么功能、有什么如此刻不容缓的紧迫性,以至于要所有的中断都来调用它……从系统架构设计来说,如果你对系统实时性有高要求、开了多重中断嵌套,那么就应当仔细考虑把每个中断里要做的事情最简化,不要把洗奶瓶换尿布这种工作交给驾驶赛车的赛车手来做!

回到你问的这个问题:

① 是的,被这个嵌套母函数调用的子函数也必须声明为嵌套函数。因为有可能运行至该子函数时产生中断调用母函数、继而调用该子函数的实体产生工作空间重叠。

② 如果你将这个母函数做出多个副本,那么子函数要么声明成重入、要么对应于每个母函数创建一个子函数副本、专门给对应的母函数调用。

他们之间可以相互调用,只是传值的问题,最简单的就是只调用一个函数,然后你可以以此类推。

max(int x,int y) //声明函数

{

int z;

z=x>yx:y;

return(z);

}

main()

{

int a,b,c;

scanf("%d,%d",&a,&b);

c=max(a,b); //调用函数

printf("Max is %d",c);

}

利用参数进行值的传递。

如果max();需要再调用其他的函数,同样利用值的传递方法,或者无值也可以调用其他函数,函数本身也可以调用自己本身。

令者,如果a函数在执行过程中要调用b函数,而在调用b函数的同时又要调用a函数,这些属于间接调用,是无终止的,显然,程序中不应出现这种无终止的递归调用,而只应该出现有限次数的、有终止的递归调用,这可以用if语句来控制,只有在某一条件成立时候才继续执行递归调用,否则就不再继续。

希望以上能够帮助到你

这个当然是能使用LJMP指令重主程序跳转到子程序,或从子程序跳回主程序,但一般是不允许这样使用LJMP指令的,很容易造成程序运行混乱。因为调用子程序保护现场要将当前的地址压入堆栈,子程序返回时,会d出该地址赋值给PC指针。如果使用,必须满足以下条件:

1、跳出跳入成对出现,也就是说,从主程序用LJMP跳转到子程序,那么在子程序中的RET前,必须是用LJMP指令跳回。

2、不成对出现,但是如果子程序是LJMP跳转来的控制,那么在RET前,需要压入返回位置的地址。比如:

主程序:

LJMP  SUB01

 

CON: ;返回地址

SUB: ;子程序

SUB01: ;跳转到的地址

MOV DPTR,#CON ;返回前处理。

PUSH DPH

PUSH DPL

RET

ac //源文件

int max(int x,int y)

{

int temp;

if(x>y)

{

temp=x;

}

else

{

temp=y;

}

}

ah

#ifndef A_H

#define A_H

int max(int x,int y);

#endif

mainc

#include"ah"

void main()

{

int max(7,8);

}

大概就是这样

大概就是这样

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11671511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存