单片机霹雳灯双灯c语言,HOLTEK单片机-8LED霹雳灯

功能说明:

HT48F49E控制8个LED构成的霹雳灯本文引用地址:http://www.eepw.com.cn/article/201611/323312.htm

介绍:

本例以 HT48F49E 为例,模拟流水灯的功能,用 LED 显示输出。PA 口每一位输出接一个 LED,串联一个470Ω电阻到地,即可完成初步电路。

通过这个例子,用户可以了解到 HT48XX 单片机输入输出口的基本用法。

电路设计:

PA0-PA7 用作输出,每一位连接一个电阻来控制一个 LED。通过左移(RLC)、右移(RRC)指令来控制点亮的 LED 左右移动。电路图如下:

5d0cc3e1748a27e686cda7d543382ac2.png

完整版本的源程序下载地址:http://www.51hei.com/f/htpld.rar程序:#include HT48F49E.inc;-------------------------------data .section data ;定义数据寄存器count1 db ? ;延时计数器0count2 db ? ;延迟计数器1lamp db ? ;亮灯状态记录器;-------------------------------code .section at 0 code ;程序段org 00hjmp start ;主程序开始start:mov a,0;(1)mov pac,a ;PA口设为输出cpl acc ;ACC取反(为0FFH)mov pa,a ;设定PA口初始状态mov a,1;(2)mov lamp,a ;亮灯状态值送到亮灯状态记录器llamp: ;亮灯左移循环mov a,lamp ;累加器的值送到亮灯状态记录器cpl acc ;累加器值取反mov pa,a ;点亮与亮灯状态记录器相对应的灯call delay;(3) ;调用延时子程序clr c ;清除进位标志rlc lamp;(4) ;亮灯状态记录器值左移一位sz lamp ;判断亮灯状态记录器是否为0jmp llamp;(5) ;如果不是就继续循环rrc lamp;(6) ;如果是,亮灯状态记录器值右移一位rlamp: ;亮灯右移循环mov a,lamp ;将亮灯状态记录器值送到累加器cpl acc ;累加器值取反mov pa,a ;点亮与亮灯状态记录器相对应的灯call delay ;调用延时子程序clr c ;清除进位标志rrc lamp;(7) ;亮灯状态记录器值右移一位sz lamp ;判断亮灯状态记录器是否为0jmp rlamp ;如果不是就继续循环rlc lamp ;如果是,亮灯状态记录器值左移一位jmp llamp;(8) ;跳到左移循环delay procmov a,0ffhmov count1,a ;定义延时计数器1的初值mov count2,a ;定义延时计数器2的初值d1:sdz count2 ;延时计数器2递减,判断是否为0jmp d1 ;如果不是,跳到d1循环sdz count1 ;延时计数器1递减,判断是否为0jmp d1 ;如果不是,跳到d1循环ret ;程序返回delay endp ;延时子程序结束end ;主程序结束

程序说明:

这段小程序能够使八个 LED 依次点亮,先从左向右,然后从右向左。程序开始时先设定输入输出口的状态(1),在这里设定所有的口为输出,将 PA 口的控制寄存器 PAC 设为 0。然后设定输出的初始状态,PA 口的第一位设为 0,点亮第一个 LED(2)。为了能观察到 LED的闪亮,(3)设定了延时子程序。通过亮灯状态记录器和累加器,点亮的 LED 由左移指令控制左移(4)。为了判断左移时所有的 LED 是否都依次点亮过,可以测试亮灯状态记录器是否为 0(5),如果是则恢复亮灯状态记录器左移时的终值(6),程序向下执行,控制 LED右移。这次用右移指令 RRC 来控制(7),重复类似的过程。最后同样判断亮灯状态记录器是否为 0,如果是,则表明右移时所有的 LED 都已经点亮过,程序跳到开始处,重新开始循环(8)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值