keil c51调试相关问题
keilc51实验课程老师要求写一个程序,需要输入数据,调试过程中运行到scanf语句后还能不能输入数据继续运行下去...
keil c51实验课程老师要求写一个程序,需要输入数据,调试过程中运行到scanf语句后还能不能输入数据继续运行下去
展开
1个回答
展开全部
答案是:不能运行下去。
原因说明:
1、如果你在KEIL里面打开HELP,然后再搜索里面输入scanf,KEIL对该函数的解释中,第一句便这么说:
The scanf function reads data from the input stream using the getchar routine.
意思是函数scanf将以调用函数getchar的方式来从输入流中读取数据。
继续搜索getchar,同样KEIL会解释说:
The getchar function reads a single character from the input stream using the _getkey function.
意思是getchar调用_getkey来实现,幸运的是_getkey这个函数,KEIL给出了源代码:
就在 C:\Keil\C51\LIB 的getkey.c中:如下
char _getkey () {
char c;
while (!RI);
c = SBUF;
RI = 0;
return (c);
}
看到了吧,呵呵,里面有个循环查询 while (!RI);,你觉得程序还会继续运行吗。。。
也就是说,如果你想继续运行程序,你就得修改函数_getkey,将他写成中断的形式,
KEIL之所以给出代码,估计他们自己也觉得采用查询的方式不靠谱。。
原因说明:
1、如果你在KEIL里面打开HELP,然后再搜索里面输入scanf,KEIL对该函数的解释中,第一句便这么说:
The scanf function reads data from the input stream using the getchar routine.
意思是函数scanf将以调用函数getchar的方式来从输入流中读取数据。
继续搜索getchar,同样KEIL会解释说:
The getchar function reads a single character from the input stream using the _getkey function.
意思是getchar调用_getkey来实现,幸运的是_getkey这个函数,KEIL给出了源代码:
就在 C:\Keil\C51\LIB 的getkey.c中:如下
char _getkey () {
char c;
while (!RI);
c = SBUF;
RI = 0;
return (c);
}
看到了吧,呵呵,里面有个循环查询 while (!RI);,你觉得程序还会继续运行吗。。。
也就是说,如果你想继续运行程序,你就得修改函数_getkey,将他写成中断的形式,
KEIL之所以给出代码,估计他们自己也觉得采用查询的方式不靠谱。。
追问
那对于这样的程序我怎样能检验是否能得到我想要的结果?也就是说老师怎样对我进行验收
追答
仿真 或者 把程序下载到单片机里面去运行看看。
程序要求,应该就是验收要求吧,这个不清楚了。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询