原创 TMR0中断跑马灯!

2007-11-21 21:27 2792 3 3 分类: PCB

摘自“中原孔海洋”


前几个项目已经涉及了TMR0的中断,但在前面的例子中使用的都是查询方式,没有真正使用中断。所以今天继续练习中断,这次是真正使用TMR0的中断方式。
项目十分简单,主要就是为了初步练习一下PIC单片机中中断程序的书写。项目内容大致如下:主程序中使接在RB口上的8个LED等自左往右循环亮灯,实现跑马灯的效果,每个灯亮一段较长的时间;在循环过程中会发生中断,中断发生时,如果相应的LED灯亮,则将其熄灭,如果其灭,则将其点亮。中断使用的TMR0设置的定时时间较短,这样,在点亮的LED灯自左往右循环移动的过程中,每个LED又同时会亮灭闪烁。

本例程序如下所示(由于程序较长,所以分开到两个图中显示):


点击看大图

点击看大图
编辑好源程序并编译成源代码以后,我们就来绘制电路图。本例电路图也较为简单,主要是使用了一个排阻,而排阻的阻值设为了100欧,需要稍加注意。电路图如下:

点击看大图
最后,我们来进行仿真,将上面汇编生成的源代码装入单片机,点击仿真按钮,可以看到如下所示的效果:

点击看大图
可能你会发现,有的LED灯闪烁了2次,而有的闪烁了3次,这主要是因为软件延时程序的延时长度是定时器定时的两倍多,并不能被其整除,所以,会出现这样的效果。如果你将其精确地设为2倍或者3倍,那么你就可以看到每一个LED都会闪烁相同的次数。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条