单片机中断小实验
要求是利用定时器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,好了,休息一下
单片机中 相关文章:
- 各种单片机中断程序的写法(12-02)
- 单片机中断测量速度的程序带仿真文件(12-02)
- 关于单片机中断详解(12-01)
- 个人对单片机中断程序的理解(12-01)
- 51单片机中断号与定时器的工作方式(12-01)
- 第8课 单片机中断(12-01)