我以前做的一个6位数码管的时钟程序,你可以看看,其实6位足够了。

KEYVALEQU 30H

KEYTMEQU 31H

KEYSCANEQU 32H

DATEQU 33H

SCANLEDEQU 39H

CLKEQU 77H

SECEQU 78H

MINEQU 79H

HOUREQU 7AH

PAUSEBIT 00H

DOTBIT 01H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR;50ms定时

ORG 001BH

LJMP T1ISR;扫描显示

ORG 0030H

MAIN:

MOV SP,#5FH

MOV TMOD,#11H

MOV TH0,#03CH

MOV TL0,#0B0H

MOV TH1,#0ECH

MOV TL1,#078H

MOV KEYVAL,#0

MOV SCANLED,#0

MOV 33H,#10H

MOV 34H,#10H

MOV 35H,#10H

MOV 36H,#10H

MOV 37H,#10H

MOV 38H,#10H

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

MOV CLK,#0

CLR PAUSE

SETB EA

SETB ET1

SETB TR1

LOOP:

LCALL KEYSEL

MOV A,KEYVAL

CJNE A,#0FFH,LOOP1

SJMP LOOP

LOOP1:

CJNE A,#10,LOOP2;“ON”启动

SETB TR0

SETB ET0

SETB PAUSE

SJMP LOOP

LOOP2:

CJNE A,#11,LOOP3;“=”清零

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

LCALL DISCHG

SJMP LOOP

LOOP3:

CJNE A,#15,LOOP4;“+”暂停

CLR TR0

CLR ET0

CLR PAUSE

SJMP LOOP

LOOP4:

CJNE A,#14,LOOP5;“-”清显示暂停

MOV 33H,#10H

MOV 34H,#10H

MOV 35H,#10H

MOV 36H,#10H

MOV 37H,#10H

MOV 38H,#10H

CLR TR0

CLR ET0

CLR PAUSE

SJMP LOOP

LOOP5:

CJNE A,#10,LOOP6;数字键

LOOP6:

JC LOOP7

LJMP LOOP

LOOP7:

JNB PAUSE,LOOP8;暂停状态可以输入数字键

LJMP LOOP

LOOP8:

MOV 33H,34H

MOV 34H,35H

MOV 35H,36H

MOV 36H,37H

MOV 37H,38H

MOV 38H,KEYVAL

MOV A,33H

SWAP A

ORL A,34H

LCALL BCDH

MOV HOUR,A

MOV A,35H

SWAP A

ORL A,36H

LCALL BCDH

MOV MIN,A

MOV A,37H

SWAP A

ORL A,38H

LCALL BCDH

MOV SEC,A

LJMP LOOP

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

;BCD转换为十六进制

BCDH:

MOV B,#10H

DIV AB

MOV R7,B

MOV B,#10

MUL AB

ADD A,R7

RET

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

;十六进制转换为BCD

HBCD:

MOV B,#10

DIV AB

SWAP A

ORL A,B

RET

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

KEYSEL:

MOVKEYVAL,#0

MOVKEYSCAN,#0EFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS1

MOVKEYVAL,A

SJMPKEYRTN

KEYS1:

MOVKEYSCAN,#0DFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS2

CLRC

ADDA,#4

MOVKEYVAL,A

SJMPKEYRTN

KEYS2:

MOVKEYSCAN,#0BFH

LCALLGETKEY

MOVA,KEYTM

JZKEYS3

CLRC

ADDA,#8

MOVKEYVAL,A

SJMPKEYRTN

KEYS3:

MOVKEYSCAN,#7FH

LCALLGETKEY

MOVA,KEYTM

JZKEYRTN

CLRC

ADDA,#12

MOVKEYVAL,A

KEYRTN:

LCALL CHGKEY

RET

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

GETKEY:

MOV KEYTM,#0

MOVA,KEYSCAN

MOVP3,A

NOP

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY

MOV R2,#10

LCALL DELAY

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JZNOKEY

MOVA,P3

ANLA,#0FH

MOVR7,A

SF:

MOVA,P3

ANLA,#0FH

XRLA,#0FH

JNZSF

MOVA,R7

CJNEA,#0EH,NK1

MOVKEYTM,#1

SJMPNOKEY

NK1:

CJNEA,#0DH,NK2

MOVKEYTM,#2

SJMPNOKEY

NK2:

CJNEA,#0BH,NK3

MOVKEYTM,#3

SJMPNOKEY

NK3:

CJNEA,#07H,NOKEY

MOVKEYTM,#4

NOKEY:RET

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

DELAY:

MOV R3,#50

DELAY1:

MOV R4,#100

DJNZ R4,$

DJNZ R3,DELAY1

DJNZ R2,DELAY

RET

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

T0ISR:

PUSH ACC

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H

SETB TR0

INC CLK

MOV A,CLK

CJNE A,#20,T0ISRE

MOV CLK,#0

INC SEC

MOV A,SEC

CJNE A,#60,T0ISRE

MOV SEC,#0

INC MIN

MOV A,MIN

CJNE A,#60,T0ISRE

MOV MIN,#0

INC HOUR

MOV A,HOUR

CJNE A,#24,T0ISRE

MOV SEC,#0

MOV MIN,#0

MOV HOUR,#0

T0ISRE:

LCALL DISCHG

POP ACC

RETI

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

DISCHG:

MOV A,HOUR

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 34H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 33H,A

MOV A,MIN

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 36H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 35H,A

MOV A,SEC

LCALL HBCD

PUSH ACC

ANL A,#0FH

MOV 38H,A

POP ACC

ANL A,#0F0H

SWAP A

MOV 37H,A

RET

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

T1ISR:

PUSH ACC

CLR TR1

MOV TH1,#0ECH

MOV TL1,#78H

SETB TR1

MOV DPTR,#LEDTAB

T100:

MOV R0,#DAT

MOV A,SCANLED

ADD A,R0

MOV R0,A

MOV A,SCANLED

JNZ T101

MOV P2,#01H

CLR DOT

SJMP T1DIS

T101:

DEC A

JNZ T102

MOV P2,#02H

SETB DOT

SJMP T1DIS

T102:

DEC A

JNZ T103

MOV P2,#04H

CLR DOT

SJMP T1DIS

T103:

DEC A

JNZ T104

MOV P2,#08H

SETB DOT

SJMP T1DIS

T104:

DEC A

JNZ T105

MOV P2,#10H

CLR DOT

SJMP T1DIS

T105:

MOV P2,#20H

CLR DOT

T1DIS:

MOV A,@R0

MOVC A,@A+DPTR

JNB DOT,T1DIS1

ORL A,#01H

T1DIS1:

CPL A

MOV P0,A

INC SCANLED

MOV A,SCANLED

CJNE A,#6,T1END

MOV SCANLED,#0

T1END:

POP ACC

RETI

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

CHGKEY:

MOV A,KEYVAL

JZ KV16

DEC A

JNZ KV01

MOV KEYVAL,#7

RET

KV01:

DEC A

JNZ KV02

MOV KEYVAL,#4

RET

KV02:

DEC A

JNZ KV03

MOV KEYVAL,#1

RET

KV03:

DEC A

JNZ KV04

MOV KEYVAL,#10

RET

KV04:

DEC A

JNZ KV05

MOV KEYVAL,#8

RET

KV05:

DEC A

JNZ KV06

MOV KEYVAL,#5

RET

KV06:

DEC A

JNZ KV07

MOV KEYVAL,#2

RET

KV07:

DEC A

JNZ KV08

MOV KEYVAL,#0

RET

KV08:

DEC A

JNZ KV09

MOV KEYVAL,#9

RET

KV09:

DEC A

JNZ KV10

MOV KEYVAL,#6

RET

KV10:

DEC A

JNZ KV11

MOV KEYVAL,#3

RET

KV11:

DEC A

JNZ KV12

MOV KEYVAL,#11

RET

KV12:

DEC A

JNZ KV13

MOV KEYVAL,#12

RET

KV13:

DEC A

JNZ KV14

MOV KEYVAL,#13

RET

KV14:

DEC A

JNZ KV15

MOV KEYVAL,#14

RET

KV15:

DEC A

JNZ KV16

MOV KEYVAL,#15

RET

KV16:

MOV KEYVAL,#0FFH

RET

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

LEDTAB:DB 0FCH;"0"00H

DB 60H;"1"01H

DB 0DAH;"2"02H

DB 0F2H;"3"03H

DB 66H;"4"04H

DB 0B6H;"5"05H

DB 0BEH;"6"06H

DB 0E0H;"7"07H

DB 0FEH;"8"08H

DB 0F6H;"9"09H

DB 0EEH;"A"0AH

DB 3EH;"B"0BH

DB 9CH;"C"0CH

DB 7AH;"D"0DH

DB 9EH;"E"0EH

DB 8EH;"F"0FH

DB 00H;" "10H

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

END

89c51,8255,6个led数码管显示时钟的汇编语言程序,汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能...相关推荐

  1. 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。

    编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上. package p1;import java.io ...

  2. 编写一个布雷程序,在一个10*10的范围内随机布5-10颗雷,显示结果

    //编写一个布雷程序,在一个10*10的范围内随机布5-10颗雷,显示结果 //假设有雷为9,无雷为0,附近有雷则显示有雷的数量 #include"stdio.h" #includ ...

  3. java结果分行显示_编写一个java程序。分行显示自己的姓名,地址,电话!用Test.java命名。_学小易找答案...

    [单选题]16.骨骼肌进行完全强直收缩时,相邻两次刺激的时间间隔应 [填空题]实习岗位名称 [单选题]神经调节的基本方式是: [单选题]Thank you for your nice gifts. - ...

  4. 编写一个JSP程序Jiecheng.jsp,计算整数的阶乘,并显示出结果。

    编写一个JSP程序Jiecheng.jsp,计算整数的阶乘,并显示出结果. 要求先声明计算阶乘的方法,再调用该方法,最后在页面上输出结果. 通过表单提交一个正整数,然后计算它的阶乘. 参考代码: ...

  5. 四位共阳极数码管显示函数_【项目8-任务10-小组13】利用四位数码管实现动态扫描显示...

    学习任务 1.四位数码管的电路结构与显示原理 (什么是位选.什么是段选.共阴与共阳的区别.显示4位数字,需要多少条口线?显示n位数字呢?) 2.Arduino直接连接四位数码管实现四位阿拉伯数字显示 ...

  6. c语言六个数码管显示123456,用51单片机C语言编写程序实现6位共阴极数码管循环显示0123456789ABCDEF,六个数码管是连续不同的六个数?...

    # include # define uint unsigned int # define uchar unsigned char code uchar shu[] = {0x3f,0x06,0x5b ...

  7. stm32数码管显示数字 流程图_怎样用keil编写4位数码管显示1234的程序

    显示1234程序 #include"reg52.h" #define uint unsigned int #define uchar unsigned char uint i,j; ...

  8. c语言实现数码管显示qq号,各位大神,如何用C语言实现在数码管上实现1234同时亮...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /*将移位寄存器内的数据锁存到输出寄存器并显示                                              */ /*    ...

  9. 用java编写日历添加窗口一角_Java 实训4 编写一个窗体程序显示日历

    实训要求: 1.使用BorderLayout 进行总体布局 2.在North 位置放置包含两个按钮( 上月和下月)的Panel 3.在South 位置放置一个Label 用于显示当前年份和月份 4.在 ...

最新文章

  1. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python文件)
  2. asp.net下用js实现弹出子窗口选定值并返回
  3. tesseract 提升 速度_2020斗式提升机料斗呼伦贝尔厂家定制哪家好
  4. 关于数据库的水平切分和垂直切分的一些概念(转)
  5. STC学习:导航按键
  6. android 前后台,Android App前后台监控
  7. R语言使用RStudio将可视化结果保存为pdf文件(export--Save as PDF)
  8. springboot+vue开发小说网站及作品写作发布
  9. 《墨菲定律》读书笔记之第一章——成功学的秘密
  10. 在VR里弹空气吉他?开发者:手势优化有技巧
  11. Linux设备驱动之IIO子系统——IIO框架及IIO数据结构
  12. IE 零日漏洞风险评估
  13. 『与善仁』Appium基础 — 3、移动端测试环境搭建(三)之AVD模拟器安装
  14. Hibernate简单配置
  15. 在Windows7和Ubuntu上编译安装MICO
  16. msbuild 语法_MSBuild 编译asp.net 命令写法
  17. 陪驾注意事项 这23点要注意!
  18. 智能工厂数字孪生的运用
  19. js通过正则表达式获取链接上的指定参数值
  20. 程序猿的意义--纪念那些曾经辉煌过和即将辉煌的程序猿

热门文章

  1. FD.io VPP基本介绍:理解向量包处理(VPP)
  2. linux驱动头文件说明
  3. python网页前端和react有什么区别_Vue 和 React 的优点分别是什么?
  4. scp 覆盖_SCP-002 - “生活”室
  5. MAX_VALUE的最大值和最小值是多少
  6. highstack的一个bug
  7. RecycleView添加适配器的监听事件
  8. 外部导入方式添加背景图_web前端基础:CSS的三种导入方式说明
  9. mysql meb安装_用meb搭建MySQL Master/Slave
  10. html图标反色,Html5 反色 及其 透明 效果