⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7segmentledclockinasm.txt

📁 毕业设计的时候用吧
💻 TXT
📖 第 1 页 / 共 2 页
字号:
留你做毕业设计的时候用吧,是电子钟
                        ;8位数码管显示
                        ;P0 为段码口、P2 为位码口
                        ;晶振 11.0592M
                        ;时钟芯片:DS1302
                        ;************** DS1302 端口位定义 **************
                                  IO_DATA  BIT  P1.1     ; 数据传送总线
                                  SCLK     BIT  P1.0     ; 时钟控制总线
                                  RST      BIT  P1.2     ; 复位总线
                                  K1     EQU  P1.4       ;独立键
                                  K2     EQU  P1.5
                                  K3     EQU  P1.6
                                  K4     EQU  P1.7
                                  BEEP   EQU  P3.7       ;蜂鸣器
                                  RELAY  EQU  P1.3       ;继电器
                                  T_CONU  EQU  22H       ;中断计数
                                  TIME_L  EQU  23H       ;定时初值
                                  TIME_H  EQU  24H
                                  TIME_DATA   EQU  50H   ;显示时间单元首地址
                                  DATE_DATA   EQU  60H   ;显示日期单元首地址
                                  DS_DATA     EQU  58H   ;显示定时时间单元首地址
                        ;------------------------------------------------
                                  ORG 0000H
                                  AJMP MAIN
                                  ORG  000BH
                                  AJMP  INT_T0
                                  ORG  0100H
                        ;------------------------------------------------
                        MAIN:
                                  MOV  TMOD,#01H        ;T0,方式1
                                  MOV  TIME_L,#00H      ;50MS定时值
                                  MOV  TIME_H,#4CH
                                  MOV  T_CONU,#00H      ;中断次数
                                  MOV  IE,#82H          ;EA=1,ET0=1
                                  MOV  A,#00H
                                  MOV  R0,#40H          ;从40H单元开始
                                  MOV  R1,#40H          ;清64个单元
                        M_CLEAR:  MOV  @R0,A
                                  INC  R0
                                  DJNZ  R1,M_CLEAR
                                  MOV  7FH,#0AH         ;送熄灭符
                                  SETB   BEEP
                                  LCALL  TIME_DELAY     ;调显示延时
                                  LCALL  PROSET         ;DS1302初始化
                        MAIN1:
                                  LCALL  GET_TIME       ;从DS1302读数据程序
                                  LCALL  CHULI          ;实时时间数据处理
                                  MOV  R0,#TIME_DATA    ;显示时、分、秒
                                  LCALL  DISP
                                  MOV  R0,#TIME_DATA
                                  LCALL  TIME_DISPLAY
                                  LCALL  SET_KEY        ;键功能程序
                                  LCALL  COMP           ;实时时间与定时时间比较
                                  JB  K1,MAIN1
                                  CALL  BEEP_BL
                        MAIN2:
                                  LCALL  CHULI          ;日期数据处理
                                  MOV  R0,#DATE_DATA
                                  LCALL  DISP           ;显示年、月、日
                                  MOV  R0,#DATE_DATA
                                  LCALL  TIME_DISPLAY
                                  JB  K1,MAIN2
                                  CALL  BEEP_BL
                        MAIN3:
                                  LCALL  DS_CHULI        ;定时时间数据处理
                                  MOV  R0,#DS_DATA
                                  LCALL  DS_SP           ;显示定时时间
                                  MOV  R0,#DS_DATA
                                  LCALL  DS_DISPLAY
                                  JB  K1,MAIN3
                                  CALL  BEEP_BL
                                  AJMP  MAIN1
                        ;--------------------------------------------
                        ;中断服务子程序
                        ;300MS对闪动标记取反一次
                        ;--------------------------------------------
                        INT_T0:
                                  PUSH  ACC
                                  PUSH  PSW
                                  MOV  TL0,TIME_L
                                  MOV  TH0,TIME_H
                                  INC  T_CONU
                                  MOV  A,T_CONU
                                  CJNE  A,#06H,INT_END
                                  MOV  T_CONU,#00H
                                  CPL  0AH
                        INT_END:
                                  POP  PSW
                                  POP  ACC
                                  RETI
                        ;--------------------------------------------
                        ;DS1302 初始化子程序
                        ; (R0)=数据  (R1)=地址
                        ;--------------------------------------------
                        PROSET:
                                   CLR   RST            ;DS1302复位
                                   CLR   SCLK
                                   NOP
                                   NOP
                                   SETB  RST
                                  ;MOV  R1,#80H          ;写秒寄存器
                                  ;MOV  R0,#00H          ;启动振荡器
                                  ;LCALL WRITE
                                  ;MOV  R1,#82H          ;写分寄存器
                                  ;MOV  R0,#58H
                                  ;LCALL WRITE
                                  ;MOV  R1,#84H          ;写时寄存器
                                  ;MOV  R0,#80H
                                  ;LCALL WRITE
                                  MOV  R1,#90H          ;写充电寄存器
                                  MOV  R0,#0ABH
                                  LCALL WRITE
                                  RET
                        ;===============================================
                        ;读时间、日期数据子程序
                        ;存放单元 40H - 46H
                        ;===============================================
                        GET_TIME:
                                  MOV  R1,#81H          ;读秒
                                  LCALL  READ
                                  MOV 40H,R0
                                  MOV  R1,#83H          ;读分
                                  LCALL  READ
                                  MOV 41H,R0
                                  MOV  R1,#85H          ;读时
                                  LCALL  READ
                                  MOV 42H,R0
                                  MOV  R1,#87H          ;读出日期
                                  LCALL  READ
                                  MOV 43H,R0
                                  MOV  R1,#89H          ;读出月份
                                  LCALL  READ
                                  MOV 44H,R0
                                  MOV  R1,#8BH          ;读出星期
                                  LCALL  READ
                                  MOV 46H,R0
                                  MOV  R1,#8DH          ;读出年
                                  LCALL  READ
                                  MOV 45H,R0
                                  RET
                        ;================================================
                        ;写 DS1302 子程序
                        ;================================================
                        WRITE:
                                  CLR  SCLK
                                  NOP
                                  NOP
                                  SETB  RST
                                  NOP
                                  MOV  A,R1
                                  MOV  R2,#08H
                        WRI_01:
                                  RRC  A                ;传输地址到DS1302
                                  NOP
                                  NOP
                                  CLR  SCLK
                                  NOP
                                  NOP          
                                  MOV  IO_DATA,C
                                  NOP
                                  NOP         
                                  SETB  SCLK
                                  NOP
                                  NOP
                                  DJNZ  R2,WRI_01
                                  CLR  SCLK
                                  NOP
                                  NOP
                                  MOV  A,R0
                                  MOV  R2,#08H
                        WRI_02:
                                  RRC  A           ;传输数据到DS1302
                                  NOP
                                  CLR  SCLK
                                  NOP
                                  NOP
                                  MOV  IO_DATA,C
                                  NOP
                                  NOP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -