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 $