如果是并行接口的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);
}
大概就是这样
大概就是这样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)