单片机C51编程的延时函数的计算问题 。欢迎~!【c51语言10s延时函数 c51的延时函数】你的公式有误
12M晶振的时钟周期为1/12M(s)
不同的单片机执行语句的机器周期不一样(比如:Atmel51系列及大多数51的一个机器周期是12个时钟周期,华邦的只需要4个时钟周期)
你用的51系列,机器周期是(1/12M)*12,就是1us
一条for循环大概8个机器周期即8us
所以你的延时为10*125*8us=10ms
C51执行延时时怎么执行其他任务1.用中断
2.如果c51语言10s延时函数你对延时时间要求并非十分精确c51语言10s延时函数,将延时函数改为小延时循环(例如10msc51语言10s延时函数,循环100次c51语言10s延时函数,也是接近一秒),中间插入按键检测动作 。
3.如果你对时间要求相对严格,又不想开中断,推荐你一个土办法,在你写好上述循环函数后,在入口处将一个IO口置高 , 结束处翻转,用示波器测量该IO,微调你c51语言10s延时函数的延迟 。
根据你自己的需要灵活选择 。
c51 单片机编程中断问题,中断后不能继续返回main函数,哪位高手看一下我的程序,多谢了void int1_srv() interrupt 2//INT1中断服务函数,中断向量标号2
{
my_delay_10ms(1);//延时消抖
KEY_BIT = 1;//读MCS51的IO口之前要先对其置1
if(KEY_BIT == 0)//按键仍然是按下状态
{
//while(KEY_BIT == 0);//等待按键抬起
这部分就不用了 。使用边沿触发,不必在等待按键抬起,因为第一个下降沿已经出发了中断 。如果硬件是现成开发板的话就不用这么麻烦了,如果是自制电路板,记得在P3.3加上10uF防抖电容,防抖电路可参考图片 。
我的建议不一定对,但请尝试一下 。
单片机c51延时10s子程序C语言c51语言10s延时函数:
#include reg51.h
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0D8;
TL0 = 0x0F0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
关于c51语言10s延时函数和c51的延时函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 移动内存服务器,服务器内存模式选什么
- mysql怎么做字段描述,mysql导出表字段描述
- 如何进入华为移动服务器,华为服务器怎么进入
- excel怎么布局表格,怎样用表格进行布局
- 写出常用linux命令 说出10个常用的linux命令
- 37手游IoS系统帐号找回,37手游账号找回
- 虚拟机占用电脑磁盘吗,虚拟机占用的是哪个磁盘的空间
- 大神解谜游戏攻略女主,解谜游戏男主回忆
- go语言变量不使用报错 go语言gc