这两天一向搞不明白中止和守时,传闻这东西能够进步CPU的功率,我想应该是很重要的编程办法,所以就在书上找了一个小程序,想从试验中发现点什么。
要求是使用守时器T0的方法1,发生10ms的守时,并使P1.0引脚上输出周期为20ms的方波,选用中止方法,设体系的时钟频率为12MHz。
先说程序,如下
上面的程序选用的是中止的方法发生中止的,计数器每次加1需求花必定的时刻,守时器守时便是靠这个时刻的堆集得到的,89C51有四个寄存器单元TH0,TL0,TH1,TL1是寄存计数值的,每个寄存器8位,还有一个寄存器TMOD能够设置作业形式,每种形式计数地规模不一样,所具有的功用也不一样,这个问题今后有空再说一下。
守时器的操控是经过设置相关的寄存器得到的,主要有两个TCON 和TMOD
TCON是操控寄存器,里边有很多中止标志位,经过对它的设置能够操控单片机的中止,单片机经过它能够知道体系是不是有中止发生
TMOD是作业形式寄存器,它能够操控单片机的作业方法,经过它能够操控单片机的触发方法以及C/T的切换
由于本文的思维是选用中止操控的方法,所以还需求对中止操控位IE进行设置
在此再介绍一下KEIL软件和PROTEUS软件的联调
先看一下keil软件
这个软件是免费的,用起来十分便利,能够支撑C言语编程和汇编编程,咱们挑选的是汇编编程,在编译前要建好工程
编译的时分,要留意,本软件终究要生成hex类型的文件以支撑仿真,所以要点击一下target左面的按钮,如下图
翻开之后,便是下面的界面,挑选output选项卡,在creat hex file前面打钩
假如程序没有过错,就在工程那个文件夹下面生成了hex文件,好了,程序作业完成了
下面进入单片机硬件电路的规划(实践中应该是先硬件后软件,本文忘考虑这点了)
这是在proteus环境下的电路图,这是一款十分不错的仿真软件(留意要设置一下晶振的振动频率为12MHz)
我的电路是要在P1.0口输出脉冲信号,下面是仿真
作用十分不错,小有成就感啊
经过此次规划,能够发现,单片机的中止是在单片机计数满之后发生的,那么计数器在这个进程便是一个精确的计时功用,发生中止,就要进入中止服务程序,这个程序是由咱们自己编写的,为了脉冲可继续输出,需求在这个程序中为计数器赋初值,而且取反P1.0,好了,歇息一下