淘宝店铺 如何购买 联系方式
  网站导航:首页 > 产品列表 >51单片机学习板BH51PRE  

目录导航

   
  1、产品简介
2、板载资源
3、产品清单
4、实例源代码
5、如何下载程序到学习板
6、CPU插入40脚锁紧插座时的方向
7、建立开发环境——工具安装
8、环境配置——建立第一个工程
   
 
 
百合电子工作室产品 ->51单片机学习板BH51PRE:实例源代码  
 


  配套光盘提供入门所需的多个实例(有原理说明及相关知识点),几乎每个实例都有视频演示(个别以图片形式呈现)。

源代码一览:


配套光盘对实例的分析示例:

  实验目的:

  利用指令执行时间固定的原理实现精确延时,用数码管显示0~9秒计时。  

  在《定时器实验—利用定时器延时》中我们得用定时器来实现了比较精确的延时,我们还可以利用指令执行时间得到非常精确的延时,其实在之前的好几个实例中都用到了利用指令执行时间来延时,只是没有精确进行计算过而已。

  不同的指令执行的时间都固定,比如执行MOVA,#35H这条指令所需时间为1个机器周期,执行DJNZ指令的时间均为2个机器周期,而机器周期=12/晶振频率,如果使用12MHz的晶振,则机器周期=12/12000000=1us。

  我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到10时,就自动返回到0,从新计数。一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为0.9983秒(以12MHz晶振为例)。产生一秒延时的程序如下:

 

 
  1. DELY1S:    
  2.     MOV R5,#100     ;1个机器周期  
  3. D2:    
  4.     MOV R6,#20  ;1个机器周期  
  5. D1:    
  6.     MOV R7,#248     ;1个机器周期  
  7.     DJNZ R7,$   ;DJNZ为2个机器周期指令,共执行248次,就是2*248=496个机器周期  
  8.     DJNZ R6,D1  ;20*(496+2+1)=9980个机器周期  
  9.     DJNZ R5,D2  ;100*(9980+2+1)=998300个机器周期 

  对于C语言实现软件延时的难点在于需要确定编译后生成的代码是什么,例如下面一段C程序:

 

 
  1. unsigned char a;   
  2. for(a=3;a>0;a--);  

在Keil环境下编译后得到如下汇编代码:

 
  1.    MOV R7,#0x03   
  2. LOOP:   
  3.    DJNZ R7,LOOP  

计算此汇编代码的执行时间为10us(晶振11.0592MHz)。

根据这一原理,出现了一些自动生成延时代码的工具,使用非常方便,这里给出其中一个工具:单片机工具集

  

辅助资料:

  汇编指令及其执行时间

流程图:

结果演示:(配套光盘才可播放视频)

 

 
 
 
本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4