当前位置:首页 > 单片机 > 单片机
[导读]//HJSMSY-V1.0单片机开发板测试程序 //--------------------------------------------- // <<电脑钟>> //---------------------------------------------//=======主函数==============================

//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   
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

香港2022年7月7日 /美通社/ -- 寿康集团有限公司(“寿康集团”或“本公司”及其附属公司,统称“本集团”;股份代号:0575.HK)旗下全资附属公司、并以香港为基地的人工智能创新公司及衰老与长寿深层生物...

关键字: 时钟 VI GE EV

文章转自知乎[MIPI自学笔记],作者IEEE1364https://zhuanlan.zhihu.com/p/926820471 MIPI概述MIPI是MobileIndustryProcessorInterface的...

关键字: MIPI LAN 数据流 时钟

1、为设计执行综合时使用的各种设计约束是什么?1.1、创建时钟(频率、占空比)。1.2、定义输入端口的transition-time要求1.3、指定输出端口的负载值1.4、对于输入和输出,指定延迟值(输入延迟和输出延迟)...

关键字: 数字芯片 时钟 WIRE CK

如今,SoCs正变得越来越复杂,数据经常从一个时钟域传输到另一个时钟域。上图信号A由C1时钟域触发,被C2时钟域采样。根据这两个时钟之间的关系,在将数据从源时钟传输到目标时钟时,可能会出现不同类型的问题,并且这些问题的解...

关键字: 时钟 触发器 同步器 SETUP

本文主要介绍各种类型的跨时钟域问题。同步时钟是指具有已知相位和频率关系的时钟。这些时钟本质上是来自同一时钟源。根据相位和频率关系,可分为以下几类:具有相同频率和零相位差的时钟具有相同频率和固定相位差的时钟具有不同频率和可...

关键字: 异步 时钟 相位差 SETUP

跨时钟域验证可分为结构验证和功能验证两类。结构验证确保在需要的地方添加了适当的同步逻辑。功能验证确保已添加的逻辑实现了预期的功能。仅通过执行结构验证,就可以检测到许多CDC问题。这些检查比功能验证更简单、更快。因此,验证...

关键字: 时钟 数据传输 信号 TE

来源:射频百花谭规范很重要工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的。逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看自己写的...

关键字: VERILOG 时钟 计数器 仿真验证

中断服务程序

关键字: 时钟 中断程序

首先通过按“校时、校分、校星期”等按键,校对好时间。 先检查时钟显示是否当前时间一致,如需重新校准,在按住“时钟”键的同时,分别按住“校星期”、“校时”、“校分”键,将时钟调到当前准确时间。

关键字: 自动开关定时器 时钟

出品21ic论坛qbwww网站:bbs.21ic.com做一个桌面时钟大家好,我是qbwww,今天我们来做一个桌面时钟。淘宝买的套件。首先呢,我们先看一下原理图,简单的了解一下连线方式。简单的了解了一下连线的方式呢,我们...

关键字: 时钟
关闭
关闭