微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 单片机学习知识点全攻略(三)

单片机学习知识点全攻略(三)

时间:05-15 来源:本站整理 点击:

C rel

  第一条指令的功能是如果CY等于1就转移,如果不等于1就次序执行。那么转移到什么地方去呢?我们能这样理解:JC 标号,如果等于1就转到标号处执行。这条指令我们在上节课中已讲到,不再重复。

  第二条指令则和第一条指令相反,即如果CY=0就转移,不等于0就次序执行,当然,我们也同样理解: JNC 标号

  判位变量转移指令

  JB bit,rel

  JNB bit,rel

  第一条指令是如果指定的bit位中的值是1,则转移,不然次序执行。同样,我们能这样理解这条指令:JB bit,标号

  第二条指令请大家先自行分析

  下面我们举个例程说明:

  ORG 0000H

  LJMP START

  ORG 30H

  START:MOV SP,#5FH

  MOV P1,#0FFH

  MOV P3,#0FFH

  L1: JNB P3.2,L2 ;P3.2上接有一只按钮,它按下时,P3.2=0

  JNB P3.3,L3 ;P3.3上接有一只按钮,它按下时,P3.3=0

  LJM P L1

  L2: MOV P1,#00H

  LJMP L1

  L3: MOV P1,#0FFH

  LJMP L1

  END

  把上面的例程写入片子,看看有什么现象………

  按下接在P3.2上的按钮,P1口的灯全亮了,松开或再按,灯并不熄灭,然后按下接在P3.3上的按钮,灯就全灭了。这像什么?这不就是工业现场经常用到的"启动"、"停止"的功能吗?

  怎么做到的呢?一开始,将0FFH送入P3口,这样,P3的所有引线都处于高电平,然后执行L1,如果P3.2是高电平(键没有按下),则次序执行JNB P3.3,L3语句,同样,如果P3.3是高电平(键没有按下),则次序执行LJMP L1语句。这样就不停地检测P3.2、P3.3,如果有一次P3.2上的按钮按下去了,则转移到L2,执行MOV P1,#00H,使灯全亮,然后又转去L1,再次循环,直到检测到P3.3为0,则转L3,执行MOV P1,#0FFH,例灯全灭,再转去L1,如此循环不已。大家能否稍加改动,将本程序用JB指令改写?


  16、单片机定时器与计数器

  一、计数概念的引入

  从选票的统计谈起:画"正"。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。

  二、计数器的容量

  从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999…。那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。

  三、定时

  8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?

  一个闹钟,我将它定时在1个小时后闹响,换言之,也能说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。

  

  《单片机定时器记数器结构》

  结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机供给一个非常稳定的计数源。那么供给组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶体震荡器经过12分频后获得的一个脉冲源。晶体震荡器的频率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个12M的晶体震荡器,它供给给计数器的脉冲时间间隔是多少呢?当然这很不难,就是12M/12等于1M,也就是1个微秒。结论:计数脉冲的间隔与晶体震荡器有关,12M的晶体震荡器,计数脉冲的间隔是1微秒。

  四、溢出

  让我们再来看水滴的例程,当水持续落下,盆中的水持续变满,最终有一滴水使得盆中的水满了。这个时候如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是"溢出"。

水溢出是流到地上,而计数器溢出后将使得TF0变为"1"。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top