单片机中断实验c语言,单片机中断小实验

要求是利用定时器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统的时钟频率为12MHz。

先说程序,如下

ORG  0000H

LJMP MAIN                                     ;跳转到主程序

ORG  000BH                                   ;T0的终端入口地址

LJMP DVT0                                     ;转向中断服务程序

ORG  0100H

MAIN:   MOV  TMOD,#01H                        ;置T0工作于方式1

MOV     TH0,#0D8H

MOV      TL0,#0F0H                       ;装入计数初值

SETB ET0                                        ;T0开中断

SETB    EA                                       ;CPU开中断

SETB     TR0                                      ;启动T0

SJMP    $                                            ;等待中断

DVT0:   CPL     P1.0                                      ;P1.0取反输出

MOV      TH0,#0D8H

MOV       TL0,#0F0H                         ;重新装入初值

RETI                                                      ;中断返回

END

上面的程序采用的是中断的方式产生中断的,计数器每次加1需要花一定的时间,定时器定时就是靠这个时间的积累得到的,89C51有四个寄存器单元TH0,TL0,TH1,TL1是存放计数值的,每个寄存器8位,还有一个寄存器TMOD可以设置工作模式,每种模式计数地范围不一样,所具有的功能也不一样,这个问题以后有空再说一下。

定时器的控制是通过设置相关的寄存器得到的,主要有两个TCON 和TMOD

TCON是控制寄存器,里面有好多中断标志位,通过对它的设置可以控制单片机的中断,单片机通过它可以知道系统是不是有中断产生

TMOD是工作模式寄存器,它可以控制单片机的工作方式,通过它可以控制单片机的触发方式以及C/T的切换

因为本文的思想是采用中断控制的方式,所以还需要对中断控制位IE进行设置

在此再介绍一下KEIL软件和PROTEUS软件的联调

先看一下keil软件

021e53540acc505190ac1a0cf719dd48.png

这个软件是免费的,用起来非常方便,可以支持C语言编程和汇编编程,我们选择的是汇编编程,在编译前要建好工程

编译的时候,要注意,本软件最终要生成hex类型的文件以支持仿真,所以要点击一下target左边的按钮,如下图

6262a47a703075d7974b3cda5edb2663.png

打开之后,就是下面的界面,选择output选项卡,在creat hex file前面打钩

694bc6f2caa6944605905f4e107bf27c.png

如果程序没有错误,就在工程那个文件夹下面生成了hex文件,好了,程序工作完成了

下面进入单片机硬件电路的设计(实际中应该是先硬件后软件,本文忘考虑这点了)

这是在proteus环境下的电路图,这是一款非常不错的仿真软件(注意要设置一下晶振的振荡频率为12MHz)

3c761f4499663e62ebbe7dd7d80dec74.png

我的电路是要在P1.0口输出脉冲信号,下面是仿真

fdb5e329328227c4f4a5e31be6d72bec.png

效果非常不错,小有成就感啊

通过此次设计,可以发现,单片机的中断是在单片机计数满之后产生的,那么计数器在这个过程就是一个准确的计时功能,产生中断,就要进入中断服务程序,这个程序是由我们自己编写的,为了脉冲可持续输出,需要在这个程序中为计数器赋初值,并且取反P1.0,好了,休息一下

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值