c编程时,51单片机怎么用定时器写延时1ms的子函数

2021-02-02 22:37:20 字数 1618 阅读 4003

1楼:cindere鞡

51单片机的定时器工作方式有4中,其中3种需要在中断函数中重装初值,而且c51明确规定中断版函数不能传入参权数也不能返回参数,那么这样一来就只能用不用重装初值的工作方式2了,我给出了工作方式2的初始化函数:

void init(unsigned int x)这样将x作为定时器的初值传入,当tl0计数完成时,th0会自动将值赋给tl0,th0不变,当然你自己来定义键盘函数或者什么函数来决定x的值。

希望我的回答能帮助到你。

2楼:

假如复使用12mhz晶振

定时器初

制始化:

void init(void )

主程序;

main(void)

}void inter_t0(void) //1ms中断一次

3楼:南柯一梦之小

好办用c51,方式一

void delay(unsigned int t) //t的单位取微秒

4楼:雨

void main()

请帮忙在51系列单片机系统中,编写一个延时1ms的子程序。谢谢。。

5楼:颠倒的世界

1、首先,在电脑中打开keil软件,创建好工程,然后添加c文件,如下图所示。

2、然后添加版c文件,接下来输入**,先权输入一个头文件命令。

3、然后,进行宏定义,**如图所示。

4、然后声明p1口,如下图所示。

5、最后,将延时语句全部添加进去,**按照图中所示的直接敲入即可。

6、最后,点击编译,生成hex文件就可以了,这样51单片机延时语句就完成了。

6楼:一言中

在汇编里面可以用jnz语句,利用所赋初值,写一个减一不为零跳转指令,跟c语言的for循环一个意思

7楼:匿名用户

这个得看你晶振的频率了。。根据for循环可以计算下大致得循环多少次就能定。单片机定延时不精确的。

8楼:匿名用户

void delay_ms(unsigned int n){unsigned int i=0,j=0;

for(i=0;i这是12mhz用的ms延时程序 我用示波器测了回,很准答

9楼:匿名用户

void delay(unsigned int x) //延时 x ms

延时1ms 即为来

源使x=1;

这程序延时约1ms(x=1时用keil测出来约 0.96831272ms,近似1ms),用c语言很难做到准确的1ms。注意晶振为11.0592mhz的时候用~

10楼:手机用户

假设bai12mhz.误差自

du己调,

zhi用daonop微调。

版main: mov r5,#10

del1:mov r6,权#200

del2:mov r7,#246

nopdel3:djnz r7,del3

djnz r6,del2

djnz r5,del1

sjmp $