历史上的今天
返回首页

历史上的今天

今天是:2025年03月07日(星期五)

正在发生

2018年03月07日 | 时钟,秒表,流水灯的单片机汇编程序

2018-03-07 来源:eefocus

 //HJSMSY-V1.0单片机开发板测试程序
//---------------------------------------------
//          <<电脑钟>>
//---------------------------------------------


    //=======主函数==================================
ORG  0000H
    LJMP  MAIN
    ORG    000BH
    LJMP  T00
//    ORG    001BH
//    LJMP  T11
    ORG  0030H
//=======程序初始化=============================
MAIN:
    MOV  TMOD,#11H
    MOV  TH0,#3CH
 MOV  TL0,#0B0H
 MOV  TH1,#0F0H
 MOV  TL1,#0B0H
 SETB  EA
 SETB  ET0
// SETB  ET1
 SETB  TR0
// SETB  TR1
    CLR P3.4  
 MOV R7,#00H  ;秒值
 MOV 30H,#00H  ;秒个位值
 MOV 31H,#00H  ;秒十位值
 MOV 32H,#00H  ;分个位
 MOV 33H,#00H           ;分十位
 MOV 34H,#00H  ;时个位
 MOV 35H,#00H  ;时十位
 MOV 44H,#00H  ;秒表毫秒十位
 MOV 45H,#00H  ;秒表秒毫秒百位
 MOV 46H,#00H  ;秒表秒个位
 MOV 47H,#00H  ;秒表秒十位
 MOV 48H,#00H  ;秒表分个位
 MOV 49H,#00H  ;秒表分十位
 MOV P2,#0F0H  ;P2口按键初始化
 MOV 40H,#01H  ;数码管休眠值 /流水灯/秒表开关数
 MOV 41H,#08H  ;流水灯循环值
 MOV 42H,#00H        ;秒表暂停
//  ACALL T11

    //----------------------------------------------- 
MAIN1:  
    MOV P0,#0FFH
 MOV P1,#0FFH
 MOV R0,40H
 CJNE R0,#01H,ACL1
 ACALL MAIN2        ;时钟显示
ACL1:CJNE R0,#02H,ACL2
    ACALL MAIN3    ;秒表
ACL2:CJNE R0,#03H,ACL3
    ACALL LED    ;流水灯
ACL3:ACALL KEY        ;按键扫描
// ACALL BAO        ;定时报警
    LJMP MAIN1

    
//=======报警子程序============================
BAO:MOV R4,33H      
 CJNE R4,#03H,YY1
 CLR P3.2
 ACALL KEY
 LJMP YY2
YY1:CJNE R4,#05H,YY2
    SETB P3.2  
 ACALL KEY
YY2:RET

    
//======时钟扫描子程序=======================
MAIN2:
    MOV  A,30H      
 MOV  DPTR,#TAB
 MOVC  A,@A+DPTR
 MOV P0,A
    CLR P1.0
 ACALL DELAY
 MOV  A,31H
 MOV  DPTR,#TAB
 MOVC  A,@A+ DPTR
 MOV  P0,A
    CLR P1.1
 SETB P1.0
    ACALL DELAY
    MOV A,32H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.2
 SETB P1.1
 ACALL DELAY
 MOV A,33H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.3
 SETB P1.2
 ACALL DELAY
 MOV A,34H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.4
 SETB P1.3
 ACALL DELAY
 MOV A,35H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.5
 SETB P1.4
 ACALL DELAY 
   MOV P0,#7FH 
 MOV P1,#0EBH
 ACALL DELAY
    MOV P1,#0FFH
 RET

    //========秒表扫描子程序=========================
MAIN3:
    MOV  A,44H      
 MOV  DPTR,#TAB
 MOVC  A,@A+DPTR
 MOV P0,A
    CLR P1.0
 ACALL DELAY
 MOV  A,45H
 MOV  DPTR,#TAB
 MOVC  A,@A+ DPTR
 MOV  P0,A
    CLR P1.1
 SETB P1.0
    ACALL DELAY
    MOV A,46H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.2
 SETB P1.1
 ACALL DELAY
 MOV A,47H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.3
 SETB P1.2
 ACALL DELAY
 MOV A,48H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.4
 SETB P1.3
 ACALL DELAY
 MOV A,49H
 MOV DPTR,#TAB
 MOVC A,@A+DPTR
 MOV P0,A
 CLR P1.5
 SETB P1.4
 ACALL DELAY 
   MOV P0,#7FH 
 MOV P1,#0EBH
 ACALL DELAY
    MOV P1,#0FFH
 RET

    //=======定时器T0中断服务========================
T00:MOV  TH0,#0D8H
    MOV  TL0,#0F0H
 INC  R7
 CJNE  R7,#64H,AA
 MOV  R7,#00H
//-------时钟跑值--------------------------------
 TK1:INC  30H   ;每秒钟秒个位增一
  MOV R6,30H
 CJNE  R6,#0AH,AA
 MOV  30H,#00H
TK2:INC  31H
 MOV  R6,31H
  CJNE  R6,#06H,AA
 MOV  31H,#00H  
TK3:INC  32H 
 MOV    R6,32H
 CJNE  R6,#0AH,AA
 MOV    32H,#00H
TK4:INC    33H
 MOV    R6,33H
 CJNE  R6,#06H,AA
 MOV    33H,#00H
TK5:INC    34H
 MOV    R5,34H
 MOV    R6,35H
 CJNE  R5,#04H,TK6
 CJNE  R6,#02H,TK6
 MOV    34H,#00H
 MOV    35H,#00H
TK6:CJNE  R5,#0AH,AA
 MOV    34H,#00H
    INC    35H
//-------秒表跑值----------------------
 AA:
    MOV R5,42H
    CJNE R5,#01H,TK7
    INC 44H
TK7:MOV R5,44H
 CJNE R5,#0AH,AA1
 MOV 44H,#00H
 INC 45H
    MOV R5,45H
    CJNE R5,#0AH,AA1
 MOV 45H,#00H
 INC 46H
    MOV R5,46H
    CJNE R5,#0AH,AA1
    MOV 46H,#00H
 INC 47H
    MOV R5,47H
    CJNE R5,#06H,AA1
 MOV 47H,#00H
 INC 48H
    MOV R5,48H
    CJNE R5,#0AH,AA1
  MOV 48H,#00H
  INC 49H
    MOV R5,49H
    CJNE R5,#06H,AA1
  MOV 49H,#00H
 
AA1:RETI

    //====定时器T1中断服务子程序====================
//T11:MOV  TH1,#0F0H
 //  MOV  TL1,#0B0H

    // RETI

    //******定时时间调整子程序*************************//
TBAO:
    MOV 50H,#00H
    MOV 51H,#00H
  MOV 52H,#00H
  MOV 53H,#00H
  MOV 54H,#00H
  MOV 55H,#00H

      MOV R3,50H

      DJNZ 30H,RET1

    RET1: RET

    //======键盘扫描子程序==========================  
KEY:MOV P2,#0F0H
    MOV R3,P2
 CJNE R3,#0F0H,KE0
 LJMP KK13
KE0:CJNE R3,#0E0H,KE1        ;P2.4行
 MOV P2,#0EFH
 JB P2.3,KK1      //用作调定时时间    ;K13 秒个位增一
 ACALL DELAY1
 ACALL TK1
KK1:JB P2.2,KK2   ;K14  秒十增一
    ACALL DELAY1
 ACALL TK2
KK2:JB P2.1,KK3   ;K15 分个位增一
    ACALL DELAY1
 ACALL TK3
KK3:JB P2.0,KE1   ;K16 分十位增一
    ACALL DELAY1
 ACALL TK4
KE1:MOV P2,#0DFH        ;P2.5行
 JB P2.3,KK4  ;K9  时个位增一
 ACALL DELAY1
 ACALL TK5
KK4:JB P2.2,KK5   ;K10  时十位增一
    ACALL DELAY1
 INC 35H 
 MOV R3,35H
 CJNE R3,#03H,HH0
 MOV 35H,#00H
 LJMP KK5
HH0:CJNE R3,#02H,HH1
    LJMP  KK5
HH1:CJNE R3,#01H,HH2
    LJMP  KK5
HH2:MOV 35H,#00H
KK5:JB P2.1,KK6 
    ACALL DELAY1   ;K11    开/关蜂鸣器
 CPL P3.2
KK6:JB P2.0,KE2     ;K12  秒表暂停
    MOV 42H,#00H  
     
KE2:MOV P2,#0BFH   ;P.6行
    JB P2.3,KK7    ;K5 时钟暂停/取消暂停
 ACALL DELAY1
 CPL ET0 
KK7:JB P2.2,KK8    ;K6  显示/休眠/流水灯
    ACALL DELAY2
    INC 40H
 MOV R3,40H
 CJNE R3,#04H,KK8
 MOV 40H,#01H
KK8:JB P2.1,KK9 
  // ACALL DELAY3   ;K7 秒表清0    
    MOV 44H,#00H
 MOV 45H,#00H
 MOV 46H,#00H
 MOV 47H,#00H
 MOV 48H,#00H
 MOV 49H,#00H
KK9:JB P2.0,KE3      ;K8 秒表开始跑
    MOV 42H,#01H      
  
KE3:MOV P2,#7FH    ;P2.7行
    JB P2.3,KK10    ;K1    秒十位减一
 ACALL DELAY1
 MOV R3,31H
 CJNE R3,#00H,JA1
 LJMP  KK10
JA1:DEC 31H
KK10:JB P2.2,KK11    ;K2    分个位减一
    ACALL DELAY1
  MOV R3,32H
  CJNE R3,#00H,JA2
  LJMP KK11
JA2: DEC 32H
KK11:JB P2.1,KK12   ;K3 分十位减一
    ACALL DELAY1
  MOV R3,33H
  CJNE R3,#00H,JA3
  LJMP KK12
JA3:DEC 33H
KK12:JB P2.0,KK13    ;K4  时个位减一
    ACALL DELAY1
  MOV R3,34H
  CJNE R3,#00H,JA4
  LJMP KK13
JA4:DEC 34H

    KK13:RET

    //=====流水灯子程序===========================
LED: MOV A,#0feH
  MOV 41H,#08H
  MOV P0,#0FFH 
LED1: 
 MOV P1,A
 MOV R3,#100
D0: ACALL DELAY
    DJNZ R3,D0
    MOV R3,41H
 DJNZ R3,AAA
    LJMP BB
AAA:RL A
   MOV 41H,R3 
 ACALL KEY
    LJMP LED1
BB: 
    MOV 41H,#07H
CC: MOV P1,A
    MOV R3,#30
D1: ACALL DELAY
    DJNZ R3,D1
 MOV R3,41H
 DJNZ R3,DD
 LJMP LED0
DD:RR A
    MOV 41H,R3
 ACALL KEY
 LJMP CC

    LED0:RET   

    //=====延时子程序============================== 
DELAY:MOV R1,#250
DEL1:NOP 
    NOP
  NOP
  NOP 
    DJNZ R1,DEL1
  RET
//====调用时钟显示作延时========================
DELAY1:MOV R2,#20  
DELA3: ACALL MAIN2
      DJNZ R2,DELA3  
  RET
//====调用秒表显示作延时========================
DELAY3:MOV R2,#20
DELA5:ACALL MAIN3
      DJNZ R2,DELA5
  RET
//====调用延时子程序作延时======================
DELAY2:MOV R2,#100 
DELA4:ACALL DELAY
      DJNZ R2,DELA4
  RET
 //======共阳数码管段码表================================= 
 TAB:DB  0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,87H
 END    


推荐阅读

史海拾趣

Heatron LED Integration公司的发展小趣事

Heatron LED Integration深知品质对于产品的重要性,因此从原材料采购到生产制造,每一环节都严格把关。公司建立了完善的质量管理体系,确保每一款LED产品都能达到国际最高标准。同时,公司还注重产品的性能优化,通过不断的研发和技术升级,提升产品的发光效率和使用寿命。这种对品质和性能的双重追求,使得Heatron LED Integration的产品在市场上享有极高的声誉。

Brilliance公司的发展小趣事

在快速发展的同时,Brilliance公司始终关注社会责任和可持续发展。公司积极参与公益事业,为社会做出贡献。同时,公司还注重环保和节能减排,努力降低生产过程中的环境影响。这种积极履行社会责任的态度也赢得了社会各界的广泛认可。

通过以上五个故事,我们可以看到Brilliance公司在电子行业发展中的艰辛与辉煌。凭借技术创新、市场拓展、产业链整合以及社会责任等方面的努力,Brilliance成功地在电子行业中树立了自己的品牌形象,并为未来的发展奠定了坚实的基础。

Avery Dennison公司的发展小趣事

1935年,Stan Avery在洛杉矶市中心创立了Avery Adhesives,以发明的不干胶模切贴标机为起点,开启了不干胶标签产业的先河。这一创新不仅改变了标签行业的面貌,也为Avery Adhesives日后的成功奠定了坚实的基础。随着公司业务的拓展,Avery在1948年在加利福尼亚州蒙罗维亚建立了第一家自有工厂,标志着公司规模的不断扩大和生产能力的提升。

飞翼科技(FEIYI)公司的发展小趣事

Avery Dennison与众多知名企业建立了紧密的合作关系,共同推动行业发展。例如,公司与利郎服饰的合作就是一个典型的例子。通过提供Embelex™系列装饰标、厂内打印解决方案、RFID解决方案以及3D标签打样数字化解决方案等,Avery Dennison助力利郎实现了数字化转型和业务扩张。这种合作模式不仅提升了双方的市场地位,也为整个服装行业带来了创新动力。

American Power Devices Inc公司的发展小趣事

在激烈的市场竞争中,APD公司始终坚持品质至上的原则。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都严格把关。凭借卓越的产品品质和良好的售后服务,APD赢得了众多客户的信赖和支持。

DAYA公司的发展小趣事

随着全球化趋势的加速,大雅智能积极实施国际化战略,拓展海外市场。通过与国外知名企业的合作与交流,大雅智能引进先进技术和管理经验,不断提升自身的核心竞争力。同时,大雅智能还积极参加国际展览和论坛活动,展示其创新成果和产品实力。这些努力让大雅智能在国际舞台上崭露头角,为全球消费者提供更多优质的电子产品。

问答坊 | AI 解惑

学习单片机

想请问一下单片机高手们,你们刚开始用了多少时间才入门的? 我是一个新手,学了不到两个月,心里有点急,因为我感觉自己还没有入门,或者不能仿真一些简单的例子。…

查看全部问答>

为什么没有看到清华北大参加全国大学生电子设计大赛?

本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 新手,问题多了些,请帮忙,嘿嘿 [ 本帖最后由 雪人001 于 2010-2-28 02:39 编辑 ]  …

查看全部问答>

急!单片机RS232收不到数据!!

我用PIC18F248做CPU想与PC机实现RS232通讯,现在PIC18F248发出去的数据是对的, 但是收不到PC机发过来的数据! 我用了MAX232A做PC机与PIC18F248的接口,现在MAX232A不管是否接收PC机RS232的数据 都只发给PIC18F248一个连续的5V电平,我也用示波器看了 ...…

查看全部问答>

关于DGTS-800这款CDMA模块的应用

请问用过这个模块的大侠们,该模块资料上说有GPSone功能是什么意思?我查了下说是有GPS定位功能,但我不知道如何使用,芯片资料上也没给典型的应用电路。请大侠指点下,能给个典型的应用电路是最好了,谢谢!…

查看全部问答>

WinCE内核定制的选项问题

   我的课题是做一个CD机,数字的,开发板是EP9315的内核,硬件有串口、USB口、触摸屏、DVD光驱、红外口、硬盘、液晶屏,数字音频信号需要在ARM或DSP中进行处理。硬件在定制内核时,不知该选择哪些选项。 1 在选择OS设计模板时,是选择D ...…

查看全部问答>

大功率LED芯片技术:一颗“福芯” 谋20亿产值

              福地电子准备大规模量产大功率led芯片  东莞LED灯具生产企业云集,但绝大部分都在做封装和配套生产,处于产业链中下游。尤其是大功率的LED芯片,能够真正掌握le ...…

查看全部问答>

大家有报名参加xilinx12.3号北京研讨会的吗?

大家有报名参加xilinx12.3号北京研讨会的吗?   方便的话可以在这儿留下联系方式啊,到时 可以一起聚聚呢:)…

查看全部问答>

如何获取单片机仿真软件安装的钥匙

如何获取单片机仿真软件安装的钥匙…

查看全部问答>

ucos J-link调试

有两个问题:1、要进行J-link调试,是不是要耗费大量的额外空间2、为什么我的断点无法设置进入中断服务程序?…

查看全部问答>

PIC24FJ64GA002 AD不产生中断 帮帮忙吧 大侠们

#include \"p24fxxxx.h\" void init(void) {         //         //                //         CLKDIV = 0x3000;     & ...…

查看全部问答>