欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 初学MCU >> 了解单片机 >> 文章正文

PIC系列单片机入门并不难(7)

    本文由单片机之路(www.mcuway.com)推荐 

   这回再说一个程序转向的语句,goto指令,学过basic和c等语言的对它不陌生。
 
    单片机对程序的执行是逐句自上而下进行。当它运行到某个位置,如果你不希望继续运行它下面的语句,而是希望它无条件的强行转到某一句上,就可以使用goto语句。

    我们还是通过例子来说明goto的使用方法。
 
    已知外部晶振的频率为4MHz,设计程序从pic12ce512单片机的GP1管脚上输出一个方波信号,信号频率固定并计算出频率的值。

           movlw    0F9H             '常数进W  
           tris     GPIO             '把W内的数复制到TRIS ,GP1  GP2为输出,其他为输入
myWAVE:    bsf      GPIO,GP1         '管脚GP1输出高电平点亮LED灯(如果你已经接上灯的话)
           nop
           nop
           nop
           nop
           nop
           nop
           nop
           bcf      GPIO,GP1         '管脚GP1输出低电平关闭LED灯
           nop
           nop
           nop
           nop
           nop
           goto   myWAVE           'myWAVE是标号,某行必须有这个标号,否则程序通不过 
           nop                            '由于goto的存在,以下语句得不到运行
           nop
           nop

    当程序自上而下运行到goto语句时,不再继续运行它底下的语句,而是让程序强行转向到标号为myWAVE的语句上,并继续运行.这样一来的结果,程序会永远在标号myWAVE的这一句 bsf  GPIO,GP1到goto之间循环,  打转转.客观运行的结果是GP1管脚电平不停地一会儿高,一会儿低,就输出了方波信号.

    要计算方波的频率,我们必须知道单片机每运行一条指令需要多少时间.这个时间的单位不以通常的秒、 毫秒或微秒作为单位,而是以”机器周期”为单位.以后凡是我们讨论单片机内部的时间问题都要以机器周期作为时间单位.至于一个机器周期究竟是多少微妙或毫秒,取决于单片机的品牌和振荡频率大小,等一会儿我们再用公式计算我们PIC12CE512在4MHz震荡频率下的机器周期是多少个微妙。

    我们先看看程序中GP1脚的高电平、低电平都是用了多少个机器周期.

    PIC单片机所有指令都是单机器周期的指令,例外的情况是goto语句要用2个机器周期,还有一个call指令用的时间也不完全是一个机器周期(待后续),其他品牌的某些单片机可不是这样,一条指令往往要用几个周期……

    从bsf到bcf有8个指令,都是单周期指令,所以GP1高电平时间长度是8个机器周期;从bcf到bsf有7条指令,其中6条是单周期指令,1条双周期指令(goto).所以GP1低电平时间长度也是8个机器周期。这样,我们输出方波的周期长度就是16个机器周期.  本文由单片机之路(www.mcuway.com)整理推荐.

    Pic品牌的机器周期 = 4/振荡频率          (公式)

    所以,在我们的例子当中,1个机器周期=4/4MHz= 1 uS

    也就是说,我们的例子中,执行一条指令仅需要1微秒的时间.

    这样,我们输出的方波周期就是16微秒, 频率是 f=1/16=0.0625兆赫=62.5KHz

    如果这个方波的频率比较低,你再接一个扬声器到GP1脚上你就可以听到声音了,频率降低到几赫兹的时候,接一个led灯,就会不停的闪烁.

    当然,频率太低你用的nop指令的数目会很多,程序虽简单但是臃肿,这没有关系,我们主要是在学习程序, 弄清楚道理是目的。要想使得程序不臃肿我们有的是办法,这就必须再学习新的指令.

    如果此前讲的你基本都弄明白了,那你现在已经抓住单片机入门的门把手了,还需轻轻的推开.

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章51单片机教程(从原理开始基于汇编)
普通文章1课:单片机概述
普通文章2课:8051单片机引脚介绍
普通文章3课:单片机存储器结构结构分析
普通文章4课:第一个单片机小程序
普通文章5课:单片机延时程序分析
普通文章6课:单片机并行口结构
普通文章7课:单片机的特殊功能寄存器
普通文章8课:单片机寻址方式与指令系统
普通文章9课:单片机数据传递类指令
普通文章10课:单片机数据传送类指令
普通文章11课:单片机算术运算指令
普通文章12课:单片机逻辑运算类指令
普通文章13课:单片机逻辑与或异或指令祥解
普通文章14课:单片机条件转移指令
普通文章15课:单片机位操作指令
普通文章16课:单片机定时器与计数器
普通文章17课:单片机定时器/计数器的方式控制
普通文章18课:单片机的中断系统
普通文章19课:单片机定时器、中断试验
普通文章20课:单片机定时/计数器实验
普通文章21课:单片机串行口介绍

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com