博文
【026】查表方式流水灯(2007-05-02 15:13:00)
摘要:;**************************************************************************
; 标题: 查表方式流水灯(汇编)
; 作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
; 日期: 2007.2.21
; 软件: Keil A51 V8.00
; 芯片: AT89X51
; 说明: 实验板实测通过,查表方式可以任意在表中定义流动的方式
; 采用a不变,dptr自加的方式
; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
 ......
【025】移位方式流水灯(2007-05-02 13:06:00)
摘要:;**************************************************************************
; 标题: 移位方式流水灯(汇编)
; 作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
; 日期: 2007.2.21
; 软件: Keil A51 V8.00
; 芯片: AT89X51
; 说明: 实验板实测通过
; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
ajmp start
start: mov &nbs......
【024】定时器和硬计数器实现1个LED隔1s闪一次(2007-05-02 12:38:00)
摘要:;**************************************************************************
; 标题: 定时器和硬计数器实现1个LED隔1s闪一次(汇编)
; 作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
; 日期: 2007.2.21
; 软件: Keil A51 V8.00
; 芯片: AT89X51
; 说明: 定时器0产生50ms脉冲,每次使P1.1口产生一下降沿,P1.1口与计数器1相接,
; 计满10即0.5s取反一次P1.0口,实验板实测通过。
; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
ajmp start &n......
【023】定时器和软计数器中断方式实现1个LED隔1s闪一次(2007-05-02 12:35:00)
摘要:;**************************************************************************
; 标题: 定时器和软计数器中断方式实现1个LED隔1s闪一次(汇编)
; 作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
; 参考: 《单片机轻松入门》 周坚
; 日期: 2007.2.21
; 软件: Keil A51 V8.00
; 芯片: AT89X51
; 说明: 实验板实测通过
; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
ajmp start
org 000b......
【022】定时器和软计数器查询方式实现1个LED隔1s闪一次(2007-05-02 11:15:00)
摘要:;**************************************************************************
;标题: 定时器和软计数器查询方式实现1个LED隔1s闪一次(汇编)
;作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
;日期: 2007.2.21
;软件: Keil A51 V8.00
;芯片: AT89X51
;说明: 实验板实测通过,注意中断发生后要对tf0进行软件清零
;声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
ajmp start
start: clr p1.0 ;p1.0口置低电平,灯亮
&......
【021】 延时法实现1个LED隔1s闪一次(汇编)(2007-05-02 11:13:00)
摘要:;**************************************************************************
; 标题: 延时法实现1个LED隔1s闪一次(汇编)
; 作者: wentao http://blog.liuwentao.net
; http://wentao.programfan.com
; 参考: 延时子程序参考 http://blog.liuwentao.net/read.php?122
; 日期: 2007.2.21
; 软件: Keil A51 V8.00
; 芯片: AT89X51
; 说明: 实验板实测通过,这里1s并非精确值
; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
;**************************************************************************
org 0000h
&n......
【020】一些通过计算51汇编指令得出的软延时子程序(2007-05-01 18:34:00)
摘要:声明:
这是电子之城公布的一个51开发板资料中看到的软延时子程序,由于时间太久远,原作者覃业宇先生的主页已经失效,现把原文件内容整理上来备用。
;*****************************************************************
;
; This programme is for study Ver2.0.0 beta
;This programme must be run in 12MHz standard settings
; Timer programmer
; Designer: Mr.Koii
; Copyright 2002-2003 koiistudio
; 2003.04.04 at Changsha. H.N. P.R.China.
;
;*****************************************************************
;*****......
【019】Proteus与Keil的整合 [51](2006-08-29 21:17:00)
摘要:今天参照 电子制作2004年第10期《Proteus与Keil的整合》一文, 将Proteus与Keil结合在一起调试了一下,效果还不错。只是两个软件的界面要切换查看,虽然可以通过调整窗口大小和位置来同时观看,但感觉还是不太方便,如果能有个双头显卡来个双屏显示那就更帅了^_^
现将原文摘录如下:
Proteus是Labcenter公司出品的电路分析、实物仿真系统。它可仿真各种电路和集成IC,最让我们高兴的是它支持许多型号的单片机的仿真,另外还提供Schematic Drawing与PCB设计功能。它的元件库齐全,使用方便,是不可多得的电子电路设计辅助软件。keil是目前世界上最好的51单片机的汇编和C语言的开发工具。它支持汇编,C语言以及混合编程,同时具备功能强大的软件仿真和硬件仿真(用mon51协议,需硬件支持)功能。但是我们在利用它的仿真功能的时候都有一定的限制。如果我们把这两个软件结合来用,调试软硬件就方便多了。其实Proteus在设计的时候已经注意到和各种单片机编译程序的整合了。如它可以和Keil、MPLAB IDE等编译模拟软件结合。笔者在这里先向大家介绍Proteus怎么样和keil结合的。
首先,你要下载安装这两个软件了。Proteus可以到官方网站(http://www.labcenter.co.uk/)下载试用板(试用版无存盘功能),最新版本是6.5。Keil也可以到它的官方网站(www.keil.com)去下载它的demo板(有2K代码限制),最新的版本是7.20。下载后就可以安装了。
第二步,安装完毕,把C:\Program Files\Labcenter Electronics\Proteus 6 Professional\MODELS\目录下的 VDM51.dll文件复制到 C:\Keil\C51\BIN文件夹下。(目录名都是默认的,你可以根据你实际安装的目录进行复制。)
第三步,用记事本(其它的编辑软件也可以,如Ultra ......
【018】流水灯花样变换 [51](2006-08-27 22:27:00)
摘要:实验参考: 笨笨工作室-实验九、流水灯花样变换(中断)。(查看)
实验板: FB51A。(查看)
实验目的: 掌握在中断程序中处理多个按键动作的响应方法。
实验现象: 进入程序后,程序作双向流水灯;按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键两个亮点从两边向中间移动; 按下k3键两个亮点从中间向两边移动。
在上个实验(016中断的应用中对断点的保护)中,只用了一个按键触发中断, 而本次实验中断程序要对多个按键动作进行响应, 灯光变换的花样有4种,用4个按键k1,k2,k3,k4切换。
显示部分电路:
键盘部分电路(图中K0对应程序中K1……K3对应K4):
思路:主程序中执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是k1,就执行左跑马灯;如果是k2,就执行右跑马灯;如果是k3,就执行亮点向中间移动;如果是k4,就执行亮点向两边移动。
值得注意的是: 在中断服务程序中,应该尽量的使得任务简化,不要让中断服务程序作过多复杂的任务,而要尽量把这些复杂的任务放到主程序中间去完成。
本着这一原则, 可以采用置标志位的方法。即在主程序中设定一个标志位,不断的对这个标志进行查询:如果是标志为状态1,就执行双向跑马灯;如果是状态2,就执行左向跑马灯;如果是状态3,就执行右向跑马灯,依次类推。而在中断服务程序中,只需要进行如下工作:去抖动,键识别,改变标志位。
这里我们用寄存器r0的内容作为标志,当它里面的内容是0ffh时,执行左右跑马灯程序;为01h时,执行左跑马灯;02h时执行右跑马灯;03h时执行两个亮点向中间移动;04h时执行两个亮点象两边移动。
下面是主程序和中断程序的流程图
程序如下:
org 0000h
......
【017】典型的中断服务程序 [51](2006-08-26 23:40:00)
摘要:出自《单片机原理及应用》(张毅刚)
INT: clr ea ; CPU关中断
push psw ; 现场保护
push acc
setb ea ; CPU开中断
中断处理程序段
clr ea ; CPU关中断
pop acc ; 现场恢复
pop psw
setb ea ; CPU开中断
reti ; 中断返回,恢复断点
<1> 本例现场保护假设仅仅涉及到PSW和A的内容,如果还有其他的需要保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。注意,对堆栈的操作是先进后出,次序不可颠倒。
<2> 中断服务程序中的"中断处理"程序段,应用设计者应根据中断任务的具体要求,来编写这部分中断处理程序。
<3> 如果本中断服务程......