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

HT48 & HT46 交通信号灯的实现

介绍

本应用范例用红、绿、黄三个发光二极管来模拟十字路口的交通信号灯。开始时,R1 G2

亮,延时一段时间,绿灯闪烁几下后变为黄灯,再经过一段时间,变为R2 G1 点亮。这种循环依

照这个规律一直进行下去,就好象十字路口的信号灯一样。其红绿灯点亮的时间可以根据不同的需

要来设置。

硬件电路图

此电路用PA 口的PA0-PA2 PA4-PA6 引脚分别连接一组红绿灯,作为十字路口的交通信号灯。

其功能将在下面的程序中详细说明。具体的电路图如下:

_ _ _ _ _ _ _ _     _

_ _ _

_ _ _ _

_ _ _ _

_        _

_ _ _

 _ _

 _ _

 _ _

 _

 _ _

 _ _

_ _ _

_ _ _ _ _

_ _ _ _

_ _ _ _

_ _ _

_  _ _

_  _ _

_  _ _

_  _ _

_  _ _

_  _ _

_ _

_ _

_ _

_ _

_ _

_ _

程序清单

include ht48r10a-1.inc

-------------------------------

data .section 'data' ;数据段

count1 db ? ;延时变量1

count2 db ? ;延时变量2

count3 db ? ;延时变量3

flash db ? LED闪烁控制寄存器

rglight db ? LED控制寄存器

-------------------------------

code .section at 0 'code' ;程序段

org 00h ;程序初始入口地址

jmp start

HT48 & HT46 交通信号灯的实现

start: ;程序开始

mov a0 (1)

mov paca ;设置PA口为输出口

mov paa ;清除PA

-------------------------------

loop: ;LED灯循环

mov a0

mov tblpa ;表格指针初始化

tabrdl rglight (2) ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight (3)

mov paa ;将LED寄存器的内容输出到PA

call delayl (4) ;调用延时子程序delayl

inc tblp (5) ;递增表格指针

mov a6

mov flasha ;设置LED闪烁控制寄存器的值为6

flashlamp: ;LED闪烁循环

tabrdl rglight ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight

mov paa ;将LED寄存器的内容输出到PA

call delays (6) ;调用延时子程序delays

inc tblp ;递增表格指针

sdz flash ;检查LED闪烁是否结束

jmp flashlamp ;闪烁没有结束,则跳至LED闪烁循环

tabrdl rglight ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight

mov paa ;将LED寄存器的内容输出到PA

call delaym (7) ;调用延时子程序delaym

inc tblp ;递增表格指针

-------------------------------

tabrdl rglight ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight

mov paa ;将LED寄存器的内容输出到PA

call delayl ;调用延时子程序delayl

inc tblp ;递增表格指针

mov a6 ;设置LED闪烁次数

mov flasha ;将闪烁次数存入LED闪烁控制寄存器

flash2: ;LED闪烁循环2

tabrdl rglight ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight

mov paa ;将LED寄存器的内容输出到PA

call delays ;调用延时子程序delays

inc tblp ;递增表格指针

sdz flash ;检查LED闪烁是否结束

HT48 & HT46 交通信号灯的实现

jmp flash2 ;闪烁没有结束,则跳至LED闪烁循环2

tabrdl rglight ;读取最后一页的表格内容,放入LED控制寄存器

mov arglight

mov paa ;将LED寄存器的内容输出到PA

call delaym ;调用延时子程序delaym

jmp loop

-------------------------------

delayl proc ;延时子程序delayl

mov a0fh

mov count1a

mov count2a

mov count3a

d1sdz count3

jmp d1

sdz count2

jmp d1

sdz count1

jmp d1

ret

delayl endp

-------------------------------

delaym proc ;延时子程序delaym

mov a07h

mov count1a

mov a0ffh

mov count2a

mov count3a

d2sdz count3

jmp d2

sdz count2

jmp d2

sdz count1

jmp d2

ret

delaym endp

-------------------------------

delays proc ;延时子程序delays

mov a0ffh

mov count1a

mov count2a

d3sdz count2

jmp d3

sdz count1

HT48 & HT46 交通信号灯的实现

jmp d3

ret

delays endp

-------------------------------

org 300h LED表格

dc 0ebh0fbh0ebh0fbh0ebh0fbh0ebh0dbh

dc 0beh0bfh0beh0bfh0beh0bfh0beh0bdh

end

程序说明

程序开始(1)先设置输入/输出控制寄存器,用来确定端口是作为输入还是作为输出使用。在

本范例中,设置PAC 0,即PA 口作为输出口使用。因为红绿灯的点亮条件是固定的,所以我们

可以利用查表的方法来确定PA 口的值,就象(2)所做的那样,而这个表格是由我们事先建立的。

TABRDL 指令用来读取最后一页表格内容,这里ROM 的最大地址是03FFH,因此最后一页是从

0300H 开始的。在(5)中,表格指针被递增。在(2)中,LED 显示寄存器从表格获得数据,并将

这个数据送至输出口进行LED 显示。由于不同的LED 点亮的时间有所不同,因此需要不同的延时,

程序中总共有三个不同的延时子程序,如程序中所示(4delayl(7) delaym(6 ) delays

 

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

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    HT48 & HT46 MCU I / O 口的
    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