找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7201|回复: 0
收起左侧

单片机3位数码管123闪烁 汇编程序+电路图

[复制链接]
ID:85192 发表于 2015-7-14 16:51 | 显示全部楼层 |阅读模式

3 位数码管,1秒内亮灭各一次。这个例子可以作为时钟设定,调整位闪烁用。


;11.03.28  12M晶振,共阴数数码管。P0段选,P2.0~P2.2位选
;按开始键,共阴数码管显示 123 ,1S内亮、灭一次.按停止键,数码管灭。再按开始键,又开始123秒闪。周而复始。
;E:\DPJ\123交替1S \123.ASM

STRT BIT P2.6
STP   BIT P2.7
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT
ORG 30H

MAIN:
MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#3CH ;50MS定时器T0中断一次
MOV TL0,#0B0H
SETB EA
SETB ET0
MOV R0,#10  ;10次为0.5S
MOV R1,#2

MAIN1:
ACALL KEY
AJMP MAIN1

DISP:
JNB F0,DISP01
MOV P0,#06H  ;"1"的段码
AJMP DISP02
DISP01:
MOV P0,#00H
DISP02:
CLR P2.0
ACALL D1MS
SETB P2.0
JNB F0,DISP11
MOV P0,#5BH
AJMP DISP12
DISP11:
MOV P0,#00H
DISP12:
CLR P2.1
ACALL D1MS
SETB P2.1
JNB F0,DISP21
MOV P0,#4FH
AJMP DISP22
DISP21:
MOV P0,#00H
DISP22:
CLR P2.2
ACALL D1MS
SETB P2.2
DJNZ R2,DISP
MOV R2,#2  ;显示2次,加长DISP时间 ,用来防抖
RET

KEY:
ACALL DISP
JB STRT,KT
ACALL DISP
JNB STRT,$-2
AJMP  START
KT:
ACALL  DISP
JB STP,KEY
ACALL DISP
JNB STP,$-2
AJMP STOP

START:
SETB TR0
SETB F0
RET

STOP:
MOV R0,#10   ;如果这里R0不重新送#10,因为按停按钮时,R0为当时值(可能小于10),这就可能造成重新按开始键 时,
                       ;R0很快就减到0 ,而使数码管亮j的时间小于0.5S再灭 。
CLR TR0
CLR F0
RET

D1MS:
MOV R7,#50
MOV R6,#10
DJNZ R6,$
DJNZ R7,$-4
RET

T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,RTI
MOV R0,#10  
CPL F0  ;F0作0.5S的标志,每0.5秒求反一次, 数码管"123"秒闪。
DJNZ R0,RTI  ;1S
MOV R0,#10

RTI:
RETI

END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表