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

📄 程序2.txt

📁 教学打铃系统 变量定义 scl bit p3.3 sda bit p3.2 time0 equ 30H 秒Y time1 equ 31H 时Y time2 equ 32H 分Y tim
💻 TXT
📖 第 1 页 / 共 2 页
字号:
        jmp  nk3_2
nk3_4:  cjne r1,#t_03,nk3_5        ;增加修改打铃点时间移位
        mov  r1,#t_02
        jmp  nk3_2
nk3_5:  mov  r1,#t_03
nk3_2:  ret
;***********************子程序结束*****************************
;----------------------key_4按下(子程序八)-------------------
key_4:  jb   b.6,nk4_1             ;向上/修改打铃点
        mov  t_01,#00H             ;时间修改,增加修改上增
        mov  t_02,#01H
        mov  t_03,#0aH
        setb b.3
        jmp  nk4_2
nk4_1:  jb   b.4,nk4_5             ;删除打铃点
        jnb  b.3,nk4_8            ;修改打铃点
        cjne r1,#t_01,nk4_8
        jmp  nk4_5
nk4_8:  cjne r1,#t_03,nk4_3
        cjne @r1,#23,nk4_4
        mov  @r1,#00
        jmp  nk4_2
nk4_3:  cjne @r1,#59,nk4_4
        mov  @r1,#00H
nk4_4:  jc   nk4_7
        mov  @R1,#00H
        jmp  nk4_2
nk4_7:  inc  @r1
        jmp  nk4_2
nk4_5:  mov r1,#t_01
        mov a,@r1
        jz  nk4_2
        cjne a,rall,nk4_6
        mov @r1,#01
        mov a,@R1
        dec a
        rl  a
        add a,#80H
        mov r0,a
        mov t_03,@r0
        inc r0
        mov t_02,@r0
        mov t_01,@r1
        jmp nk4_2
nk4_6:  inc @r1
        rl a
        add a,#80H
        mov r0,a
        mov t_03,@r0
        inc r0
        mov t_02,@r0
        mov t_01,@r1
nk4_2:  ret
;***********************子程序结束*****************************
;----------------------key_5按下(子程序九)-------------------
key_5:                            ;向下/删除打铃点
        jb   b.6,nk5_1
        mov  t_03,#0aH
        mov  t_02,#00H
        mov  t_01,#0aH
        setb b.4
        jmp  nk5_4
nk5_1:  jb   b.4,nk5_5             ;删除打铃点
        jnb   b.3,nk5_7
        cjne r1,#t_01,nk5_7
        jmp  nk5_5
nk5_7:  cjne r1,#t_03,nk5_2
        cjne @r1,#00,nk5_3
        mov  @r1,#24
        jmp  nk5_3
nk5_2:  cjne @r1,#00,nk5_3
        mov  @r1,#60
nk5_3:  dec  @r1
        jmp  nk5_4
nk5_5:  mov a,rall
        jz  nk5_4
        mov r1,#t_01
        mov a,@r1
        cjne a,#1,nk5_6
        mov @r1,rall
        mov a,@R1
        dec a
        rl  a
        add a,#80H
        mov r0,a
        mov t_03,@r0
        inc r0
        mov t_02,@r0
        mov t_01,@r1
        jmp nk5_4
nk5_6:  dec @r1
        dec a
        dec a
        rl  a
        add a,#80H
        mov r0,a
        mov t_03,@r0
        inc r0
        mov t_02,@r0
        mov t_01,@r1
nk5_4:  ret
;***********************子程序结束*****************************
;----------------------key_6按下(子程序十)-------------------
key_6:  jb   b.6,nk6_1             ;向右
        jmp  nk6_3
nk6_1:  jb   b.4,nk6_3
        jb   b.2,nk6_4
        ;jb   b.3,nk6_4
        cjne r1,#t_01,nk6_2
        mov  r1,#t_03
        jmp  nk6_3
nk6_2:  dec  r1
        jmp  nk6_3
nk6_4:  cjne r1,#t_03,nk6_5
        mov  r1,#t_02
        jmp  nk6_3
nk6_5:  mov  r1,#t_03
nk6_3:  ret
;***********************子程序结束*****************************
;---------------------key_7按下(子程序十一)------------------
key_7: jb   b.6,nk7_3              ;确定
       cjne r4,#1H,nk7_1
       jmp  nk7_9
nk7_1: setb b.6
       jnb  b.1,nk7_2
       mov  t_01,time0
       mov  t_02,time1
       mov  t_03,time2
       mov  r1,#t_01                ;nishi内容
       jmp  nk7_9
nk7_2: mov  t_01,next_01            ;序号
       mov  t_02,next_02            ;分
       mov  t_03,next_03            ;时
       jnb  b.4,nk7_10
       mov  r1,#t_01
       jmp  nk7_11
nk7_10:mov  r1,#t_02
nk7_11:jmp  nk7_9
nk7_3: jb   b.1,nk7_4               ;修改时间确定
       jb   b.2,nk7_5               ;增加一个打铃点
       jb   b.4,nk7_6               ;删除当前打铃点
       jb   b.3,nk7_7               ;修改当前打铃点
       jmp  nk7_9
nk7_4: mov  time0,t_01
       mov  time1,t_02
       mov  time2,t_03
       jmp  nk7_8
nk7_5: mov  r1,rall
       cjne r1,#40,nk7_12
       jmp  nk7_8
nk7_12:inc rall                        ;增加一个打铃点
       mov a,rall
       dec a
       rl  a
       add a,#80H
       mov r0,a
       mov @r0,t_03
       inc r0
       mov @r0,t_02
       mov r2,rall
       mov r0,#80H
       acall up_list
       mov writ,#0ffh
       jmp nk7_8
nk7_6: mov a,t_01                      ;删除一个打铃点
       cjne a,#0,nk7_13
       jmp nK7_8
nk7_13:dec a
       rl  a
       add a,#80H
       mov r0,a
       mov @R0,#0ffH
       inc r0
       mov @r0,#0ffh
       mov r2,rall
       mov r0,#80H
       acall up_list
       mov writ,#0ffh
       dec rall
       jmp nk7_8
nk7_7: mov a,t_01                       ;修改当前打铃点
       dec a
       rl  a
       add a,#80H
       mov r0,a
       mov @R0,t_03
       inc r0
       mov @r0,t_02
       mov r2,rall
       mov r0,#80H
       acall up_list
       mov writ,#0ffh
nk7_8: acall key_8
       mov nion,#0ffH        ;查找与当前时间点最近的打铃时间点
nk7_9: ret
;***********************子程序结束*****************************
;---------------------key_8按下(子程序十二)------------------
key_8:                             ;取消键
       mov key_ok,#00H
       mov b,#00H
       ret
;***********************子程序结束*****************************
;***********************子程序结束*****************************
;-----------------双字节数据排序子程序(X9)---------------------
;功能:将打铃时间表按升序排列
;入口参数:R0:数据块首地址,R2:打铃时间点数(字数)
;影响:A,B,PSW,R0,R2,R3,R4
;==============================================================
UP_LIST: PUSH    ACC
         PUSH    PSW
         PUSH    B
         MOV     A,R0
         MOV     R4,A
         DEC     R2
         MOV     A,R2
         JZ      X9_EXIT_LIST
         MOV     R3,A
         CLR     F0
X9_LOOP:    MOV     A,R4
         MOV     R0,A
         MOV     A,R3
         MOV     R2,A
         CLR     F0
X9_LOOP1:   ACALL   MIN_MAX
         DJNZ    R2,X9_LOOP1
         JNB     F0,X9_EXIT_LIST
         DJNZ    R3,X9_LOOP
X9_EXIT_LIST:
         POP     B
         POP     PSW
         POP     ACC
         RET
;++++++++++++++++++++++++++++++++++++++++++++++
MIN_MAX: MOV     B,R0
         INC     R0
         MOV     A,@R0
         INC     R0
         INC     R0
         CLR     C
         SUBB    A,@R0
         MOV     R0,B
         MOV     A,@R0
         INC     R0
         INC     R0
         SUBB    A,@R0
         JC      EXIT_MM
         SETB    F0
         MOV     A,@R0
         MOV     R0,B
         XCH     A,@R0
         INC     R0
         INC     R0
         MOV     @R0,A
         DEC     R0
         MOV     A,@R0
         INC     R0
         INC     R0
         XCH     A,@R0
         DEC     R0
         DEC     R0
         MOV     @R0,A
EXIT_MM: MOV     R0,B
         INC     R0
         INC     R0
         RET
;======================================================================
;读24C02 EEPROM数据子程序
;R0:RAM地址指针,R2:8位移位计数器
;R3:数据字节计数器
;R4:24C02 存储地址
;----------------------------------------
RD_EEROM: NOP
R_LOOP1:  ACALL   START24
          MOV     A,#0A0H
          ACALL   WBYTE
          MOV     A,R4
          ACALL   WBYTE
          ACALL   START24
          MOV     A,#0A1H
          ACALL   WBYTE
          ACALL   RBYTE
          MOV     @R0,A
          INC     R0
          INC     R4
          DJNZ    R3,R_LOOP1
          ACALL   STOP24
          RET
 ;-----------------------------------
RBYTE:    NOP
          CLR     SCL
          MOV     R2,#08H
          SETB    SDA
RBY0:     CLR     SCL
          NOP
          SETB    SCL
          NOP
          MOV     C,SDA
          RLC     A
          DJNZ    R2,RBY0
          CLR     SCL
          NOP
          CLR     SCL
          SETB    SDA
          NOP
          SETB    SCL
          RET
;-------------------------------------
WBYTE:   NOP
         MOV      R2,#08H
WBY0:    CLR      SCL
         RLC      A
         MOV      SDA,C
         NOP
         SETB     SCL
         DJNZ     R2,WBY0
         CLR      SCL
         NOP
         SETB     SCL
         NOP
          JB       SDA,$
         CLR      SCL
         NOP
         RET
;---------------------------------
START24: CLR      SCL
         NOP
         SETB     SDA
         NOP
         SETB     SCL
         NOP
         CLR      SDA
         NOP
         CLR      SCL
         RET
;---------------------------------
STOP24:  CLR     SCL
         NOP
         CLR     SDA
         NOP
         SETB    SCL
         NOP
         SETB    SDA
         NOP
         CLR     SCL
         RET
;=================================
;写24c02EEPROM数据子程序
;r0:rom地址指针,r2:8位位移动计数器
;r3:数据字节计数器,r4:24c02存储地址
wr_eeprom: nop
w_loop:    acall  start24
           mov    a,#0a0H
           acall  wbyte
           mov a,r4
           acall  wbyte
           mov a,@r0
           acall wbyte
           acall stop24
           acall next2    ;调用显做为延时
           mov   r7,#0efH
           djnz  r7,$
           inc r0
           inc r4
           djnz r3,w_loop
           ret
;---------------------------查表数据---------------------------
leds:   DB     3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'
        DB     7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'
        END

⌨️ 快捷键说明

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