void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
各位同仁:keil中延时子程序的参数为什么是char?而不是
因为这里最大循环到120,不超过255,所又定义UCHAR就行了。这个MS延时子程序是检测过的,所以就这样设计了。在1T单片机里这样写过。void delayms(unsigned char ms)\/\/ 延时子程序 { unsigned int i;while(ms--){ for(i = 0; i < 600; i++);} } 这里由于需要循环600次,uchar不够,所又定...
Keil软件调试不知道那里错了,跳到延时程序就没在回来主程序过。
延时子程序中的 for 循环条件不对,定义的 i ,j 都是无符号数,可却是>=0循环,这样=0时也要循环一次的,可循环完了还要减1,那0-1是什么数呢,因没有负数,所以,就出错了,在子程序中就回不来了。要将两个 for 循环的条件中的>=0都要改在>0就可以了。如果定义 i, j 都是带符号数...
为什么我的程序在单片机上和proteus只是一直执行第一个while,而不转如 ...
单从程序上看,出了main函数的里面的LED,被赋值了但是根本没有用到,设置了全局变量unsigned char。在proteus下仿真的时候,把选项设置好不过貌似你的主函数里面的没有使用死循环结构,这样你的程序运行运行一遍就停止了。
51单片机中,我用KEIL仿真,发现用WHILE(),执行一个循环要9微秒,对吗...
这个差不多的,while指令编译成机器码后是不止一条指令的,而且还不只是单周期指令,几条指令下来,12M晶振如果采用12T模式的话,这个结果差不离。
单片机C语言延时需要注意的问题
2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。unsigned char delay(unsigned char i,unsigned char j,unsigned char k){unsigned char b,c;b="j";c="k";do{ do{ ...
请教关于单片机C语言中用while延时的问题
机器指令,这是需要一定周期的,周期长短 视不同的编译软件 而有所不同,目前也没人对这个 转换差别 做过 专业的考量,故LZ 的问题,没有确切 的答案,只能 是告诉 你,大于某个时间;如例子 的答案是 大于 500ms,但大到什么程度,不知道,不过可以从 软件中 单步调试 中 得到。
keilc一个程序,运行总说我有未调用的子函数,我实在看不出来是哪个了,求...
PROCESS。在Keil C中,如果没有显式调用到定义过的函数,就会出现这样的的警告。当出现这样的警告时,可以不用管,因为不影响其它部分。你展示出来的程序没有什么错误的,可能是你调用的头文件中有些函数没有用到,还有就是你把ReadOneChar(void)的定义改成unsigned char ReadOneChar(void) 试一试。
单片机C语言中while的延时时间?
C语言延时程序:10ms延时子程序(12MHZ)void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);} 1s延时子程序(12MHZ)void delay1s(void){ unsigned char h,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;...
51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算...
如果单纯延时,可以用实验的办法,在keilc51里面仿真 void Delay1S(char n){ char i,j;n=n*4;for(;n;n--){ for(i=6;i;i++){ for(j=7;j;j++) \/\/ 一个循环约为1mS ;} } } 看编译后的汇编:C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟 C:0x0807 0D INC ...
怎样在单片机C代码中加入汇编延时子程序?
4:在汇编语言程序中必须声明被调用子程序为公共子程序,在被调用的文件中还需要声明此文件是可从新定位的。PUBLIC DELAY,DEL DELAYY SEGMENT CODE RSEG DELAYY 实例如下:C51语言文件:include "reg51.h"extern void DELAY(void);extern void DEL(void);void main(void){ P1=0x00;DELAY();...