网站公告列表     本站全新改版正在建设中!  [admin  2007年10月22日]        
加入收藏
设为首页
联系站长
您现在的位置: 东方电子科技有限公司 >> 技术文章 >> HT单片机更多 >> 文章正文
  [图文]HT48 & HT46 MCU I / O 口的应用-流水灯           ★★★ 【字体:
HT48 & HT46 MCU I / O 口的应用-流水灯
HT48 & HT46 MCU I / O 口的应用-流水灯
作者:佚名    文章来源:本站原创    点击数:    更新时间:2007-10-16    

HT48 & HT46 MCU I / O 口的应用-流水灯

介绍:

本例以HT48R30A-1 为例,模拟流水灯的功能,用LED 显示输出。PA 口每一位输出

接一个LED,串联一个240Ω电阻到电源,即可完成初步电路。通过这个例子,用户可以

了解到HT48XX 单片机输入输出口的基本用法。

电路设计:

PA0~PA7 用作输出,每一位连接一个电阻来控制一个LED。通过左移(RLC)、右移(RRC)

指令来控制点亮的LED 左右移动。电路图如下:

_ _ _ _ _ _ _ _     

_ _ _

_ _ _ _

_ _ _ _

_        _

_ _ _

 _ _

 _ _

 _ _

 _

 _ _

 _ _

 _ _

 _ _

_ _ _

_ _ _ _ _

_ _ _ _

_ _ _ _

_ _ _

_ _ _ _

_ _ _ _

_ _ _ _

_ _ _ _

_ _ _ _

_ _ _ _

_ _ _ _

_ _ _ _

程序:

#include ht48R30A-1.inc

;-------------------------------------------------

data .section ‘data’ ;定义数据寄存器

count1 db ? ;延时计数器0

count2 db ? ;延时计数器1

lamp db ? ;亮灯状态记录器

;--------------------------------------------------------------

code .section at 0 ‘code’;程序段

org 00h

jmp start ;主程序开始

start:

mov a,0 ;1

mov pac,a ;PA口设为输出

cpl acc ;ACC取反(为0FFH

mov pa,a ;设定PA 口初始状态

mov a,1 ;2

HT48 & HT46 MCU I / O 口的应用-流水灯

mov lamp,a ;亮灯状态初值送到亮灯状态记录器

llamp: ;亮灯左移的循环

mov a,lamp ;累加器的值送到亮灯状态记录器

cpl acc ;累加器值取反

mov pa,a ;点亮与亮灯状态记录器相对应的灯

call delay ;3;调用延时子程序

clr c ;清除进位标志

rlc lamp ;4;亮灯状态记录器值左移一位

sz lamp ;亮灯状态记录器是否为0

jmp llamp ;5;如果不是则继续循环

rrc lamp ;6;如果是,亮灯状态记录器右移一位

rlamp: ;亮灯右移的循环

mov a,lamp ;将亮灯状态记录器值送到累加器

cpl acc ;累加器取反

mov pa,a ;点亮与亮灯状态记录器对应的灯

call delay ;调用延时子程序

clr c ;清除进位标志

rrc lamp ;7;亮灯状态记录器值右移一位

sz lamp ;判断亮灯状态记录器的值是否为0

jmp rlamp ;如果不是则继续循环

rlc lamp ;将亮灯状态记录器的值右移

jmp llamp ;8;跳到左移循环

delay proc ;延时子程序

mov a,2fh

mov count1,a ;定义延时计数器1 的初值

mov count2,a ;定义延时计数器2 的初值

d1:

sdz count2 ;延时计数器2 递减,判断是否为0

jmp d1 ;如果不是,跳到D1 循环

sdz count1 ;延时计数器1 递减,判断是否为0

jmp d1 ;如果不是,跳到D1 循环

ret ;子程序返回

delay endp ;延时子程序结束

end ;主程序结束

程序说明:

这段小程序能够使八个LED 依次点亮,先从左向右,然后从右向左。程序开始时先设

定输入输出口的状态(1),在这里设定所有的口为输出,将PA 口的控制寄存器PAC 设为0

然后设定输出的初始状态,PA 口的第一位设为0,点亮第一个LED2)。为了能观察到LED

的闪亮,(3)设定了延时子程序。通过亮灯状态记录器和累加器,点亮的LED 由左移指令

控制左移(4)。为了判断左移时所有的LED 是否都依次点亮过,可以测试亮灯状态记录器

是否为05),如果是则恢复亮灯状态记录器左移时的终值(6),程序向下执行,控制LED

右移。这次用右移指令RRC 来控制(7),重复类似的过程。最后同样判断亮灯状态记录器

是否为0,如果是,则表明右移时所有的LED 都已经点亮过,程序跳到开始处,重新开始

循环(8)。

__

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    HT48 & HT46 交通信号灯的实
    HT MCU查表指令的使用
    HT48 & HT46 MCU 用软件执行
    HT48 & HT46 MCU 与HT93LC46
    HT MCU 软件堆栈的应用
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    Copyright © 2005-2008 东方电子科技. All Rights Reserved. 本网站由东方电子科技制作与维护 地址:东莞市塘厦镇林村环村路190号二三楼整层(林村小学对面) 电话:076987282024 手机:13712641904 Email: sanplug@126.com 粤ICP备06051393号 站长:admin