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

📄 万年历.asm

📁 proteus仿真实例大全
💻 ASM
📖 第 1 页 / 共 2 页
字号:
LCALL A7
MOV 71H,#186
LCALL A8
MOV 92H,#8
LCALL A40
MOV 91H,#210
LCALL A41
LJMP QQQ
SS8:LCALL HAHA
LJMP QQQ
YOU9:LJMP SS9
ZZ9:CJNE A,#12H,YOU9
MOV A,48H
CJNE A,#25H,VV65
MOV 70H,#45
LCALL A7
MOV 71H,#46
LCALL A8
MOV 92H,#210
LCALL A40
MOV 91H,#210
LCALL A41
LJMP QQQ
VV65:CJNE A,#01H,VV66
MOV 70H,#191
LCALL A7
MOV 71H,#192
LCALL A8
MOV 92H,#86
LCALL A40
MOV 91H,#210
LCALL A41
LJMP QQQ
VV66:CJNE A,#03H,VV67
MOV 70H,#122
LCALL A7
MOV 71H,#193
LCALL A8
MOV 92H,#23
LCALL A40
MOV 91H,#210
LCALL A41
LJMP QQQ
VV67:CJNE A,#08H,VV68
MOV 70H,#131
LCALL A7
MOV 71H,#132
LCALL A8
MOV 92H,#194
LCALL A40
MOV 91H,#157
LCALL A41
LJMP QQQ
VV68:CJNE A,#09H,VV69
MOV 70H,#53
LCALL A7
MOV 71H,#54
LCALL A8
MOV 92H,#196
LCALL A40
MOV 91H,#91
LCALL A41
LJMP QQQ
VV69:CJNE A,#10H,VV70
MOV 70H,#53
LCALL A7
MOV 71H,#54
LCALL A8
MOV 92H,#23
LCALL A40
MOV 91H,#197
LCALL A41
LJMP QQQ
VV70:CJNE A,#12H,VV71
MOV 70H,#198
LCALL A7
MOV 71H,#87
LCALL A8
MOV 92H,#205
LCALL A40
MOV 91H,#199
LCALL A41
LJMP QQQ
VV71:CJNE A,#13H,VV72
MOV 70H,#200
LCALL A7
MOV 71H,#201
LCALL A8
MOV 92H,#202
LCALL A40
MOV 91H,#203
LCALL A41
LJMP QQQ
VV72:CJNE A,#20H,VV73
MOV 70H,#104
LCALL A7
MOV 71H,#105
LCALL A8
MOV 92H,#106
LCALL A40
MOV 91H,#107
LCALL A41
LJMP QQQ
VV73:CJNE A,#21H,VV74
MOV 70H,#41
LCALL A7
MOV 71H,#57
LCALL A8
MOV 92H,#108
LCALL A40
MOV 91H,#91
LCALL A41
LJMP QQQ
VV74:CJNE A,#24H,ss9
MOV 70H,#151
LCALL A7
MOV 71H,#87
LCALL A8
MOV 92H,#152
LCALL A40
MOV 91H,#210
LCALL A41
LJMP QQQ
ri1:ljmp lp1
ss9:LCALL HAHA
;******************************************节日设置结束
QQQ:    DJNZ R3,SS100                   ;未到1 S继续循环
        LCALL GET_TEMPER              ;每过1s从DS18B20读取一次温度
        mov     R3,#4
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;整点闹铃1分钟同时在最左上角显示铃铛符号,合上闹铃开关可以提前关掉闹铃
        MOV A,46H
        CJNE A,#0,SS100
        LCALL NAO
        LCALL NAO
        LCALL NAO
        LCALL NAO
        LCALL NAO
        mov column3,#0
        mov pagef3,#0
        mov codes,#206          ;开闹铃符号
        lcall writeleft2
        SS100:MOV A,45H
        CJNE A,#59H,RI1
        mov column3,#0
        mov pagef3,#0
        mov codes,#210          ;关闹铃符号
        lcall writeleft2
        LJMP lp1
;************************主程序结束,子程序开始
HAHA:MOV 70H,#151
LCALL A7
MOV 71H,#52
LCALL A8
MOV 92H,#210
LCALL A40
MOV 91H,#210
LCALL A41
RET
NIU:
MOV A,51H
SWAP A
ADD A,50H
MOV 45H,A
mov a,53h
swap a
add a,52h
mov 46h,a
mov a,55h
swap a
add a,54h
mov 47h,a
mov a,57h
swap a
add a,56h
mov 48h,a
mov a,59h
swap a
add a,58h
mov 49h,a
mov a,5dh
swap a
add a,5ch
mov 4bh,a
mov 4ah,5ah
RET
;********************************************中断0开始
xx0:PUSH ACC
clr tr0
MOV A,93H
CJNE A,#0,ZD0000  ;秒低位
inc 50h
LCALL A13
mov A,50H
CJNE A,#10,KK0
MOV 50H,#0
kk0:POP ACC
RETI
ZD0000:CJNE A,#1,ZD001   ;秒高位
inc 51h
lcall a14
MOV A,51H
CJNE A,#10,KK1
MOV 51H,#0
kk1:POP ACC
RETI
ZD001:CJNE A,#2,ZD002      ;分低位
INC 52H
lcall a15
MOV A,52H
CJNE A,#10,KK3
MOV 52H,#0
kk3:POP ACC
RETI
ZD002:CJNE A,#3,ZD003         ;分高位
INC 53H
lcall a16
MOV A,53H
CJNE A,#10,KK4
MOV 53H,#0
inc 52h
kk4:POP ACC
RETI
zd003:CJNE A,#4,ZD004      ;时低位
INC 54H
lcall a17
MOV A,54H
CJNE A,#10,KK5
MOV 54H,#0
kk5:POP ACC
RETI
ZD004:CJNE A,#5,ZD005     ;时高位
INC 55H
lcall a18
MOV A,55H
CJNE A,#9,KK6
MOV 55H,#0
kk6:POP ACC
RETI
ZD005:CJNE A,#6,ZD006       ;星期
INC 5aH
lcall a19
MOV A,5aH
CJNE A,#7,KK7
MOV 5aH,#0
kk7:POP ACC
RETI
ZD006:CJNE A,#7,ZD007      ;日低位
INC 56H
lcall a20
MOV A,56H
CJNE A,#10,KK8
MOV 56H,#0
kk8:POP ACC
RETI
ZD007:CJNE A,#8,ZD008       ;日高位
INC 57H
lcall a21
MOV A,57H
CJNE A,#10,KK9
MOV 57H,#0
kk9:POP ACC
RETI
ZD008:CJNE A,#9,ZD009    ;月低位
INC 58H
lcall a22
MOV A,58H
CJNE A,#10,KK10
MOV 58H,#0
kk10:POP ACC
RETI
ZD009:CJNE A,#10,ZD0010   ;月高位
INC 59H
lcall a23
MOV A,59H
CJNE A,#10,KK11
MOV 59H,#0
kk11:POP ACC
RETI
ZD0010:CJNE A,#11,ZD0011  ;年低位
INC 5cH
lcall a24
MOV A,5cH
CJNE A,#10,KK12
MOV 5cH,#0
kk12:POP ACC
RETI
ZD0011:INC 5dH
lcall a25     ;年高位
MOV A,5dH
CJNE A,#10,KK13
MOV 5dH,#0
kk13:POP ACC
RETI
;******************************************************中断1开始
XX1:PUSH ACC
INC 93H
MOV A,02H
CJNE A,#13,ZD10
MOV 93H,#0
ZD10:pop acc
reti
;温度显示子程序-------------------------------------------------------------------------------
INIT_1820: SETB P3.7
CLR P3.7
MOV R1,#3
TSR1: MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB P3.7
MOV R0,#25H
TSR2: JNB P3.7,TSR3
DJNZ R0,TSR2
LJMP TSR4
TSR3: SETB FLAG1
LJMP TSR5
TSR4: CLR FLAG1
LJMP TSR7
TSR5: MOV R0,#117
TSR6: DJNZ R0,TSR6
TSR7: SETB P3.7
RET
GET_TEMPER: SETB P3.7
LCALL INIT_1820
JB FLAG1,TSS2
RET
TSS2: MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
LCALL DISPLAY1
LCALL INIT_1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_18200
RET
WRITE_1820: MOV R2,#8
CLR C
WR1: CLR P3.7
MOV R3,#6
DJNZ R3,$
RRC A
MOV P3.7,C
MOV R3,#23
DJNZ R3,$
SETB P3.7
NOP
DJNZ R2,WR1
SETB P3.7
RET
READ_18200: MOV R5,#2
MOV R1,#41h
RE00: MOV R2,#8
RE01: CLR C
SETB P3.7
CLR P3.7
SETB P3.7
MOV R3,#7
RE10: DJNZ R3,RE10
MOV C,P3.7
MOV R3,#23
RE20: DJNZ R3,RE20
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R5,RE00
RET
DISPLAY1:MOV A,40H
JB ACC.7,ZF1
mov column4,#16
mov pagef4,#4
mov codes,#250
lcall writeright2
ljmp zhijie
ZF1:mov column4,#16
mov pagef4,#4
mov codes,#16       ;;;;;;;;-
lcall writeright2
mov a,40h
cpl a
mov dph,a
mov a,41h
cpl a
mov dpl,a
inc dptr
mov 40h,dph
mov 41h,dpl
zhijie:MOV A,40H
SWAP A
ANL A,#0F0H
MOV 40H,A
MOV A,41H
SWAP A
ANL A,#0FH
ADD A,40H
MOV 41H,A
MOV B,#10
DIV AB
MOV b_bit,A
MOV a_bit,B
mov column2,#32
mov pagef2,#4
mov codes,b_bit      ;;;;;;;;;十位
lcall writeright
mov column2,#40
mov pagef2,#4
mov codes,a_bit       ;;;;;;;个位
lcall writeright
RET
;---------------------------------------------------------------------------------------------------
;数码显示子程序
DISPLAY:
;*******************************************
;显示秒
        MOV     A,SECOND
        ANL     A,#0FH
        MOV 50H,A
        LCALL A13
        MOV     A,SECOND
        SWAP    A
        ANL     A,#07H
        MOV 51H,A
        LCALL A14
;*******************************************
;显示分
        MOV     A,MINUTE
        ANL     A,#0FH
        MOV 52H,A
        LCALL A15
        MOV     A,MINUTE
        SWAP    A
        ANL     A,#07H
        MOV 53H,A
        LCALL A16
;*******************************************
;显示小时
        MOV     A,HOUR
        ANL     A,#0FH
        MOV 54H,A
        LCALL A17
        MOV     A,HOUR
        SWAP    A
        ANL     A,#03H
        MOV 55H,A
        LCALL A18
 ;显示星期
        MOV     A,WEEK
        MOV 5AH,A
        LCALL A19
 ;显示日
        MOV     A,DAY
        ANL     A,#0FH
        MOV 56H,A
        LCALL A20
        MOV     A,DAY
        SWAP    A
        ANL     A,#03H
        MOV 57H,A
        LCALL A21
 ;显示月
        MOV     A,MONTH
        ANL     A,#0FH
        MOV 58H,A
        LCALL A22
        MOV     A,MONTH
        SWAP    A
        ANL     A,#03H
        MOV 59H,A
        LCALL A23
 ;显示年
        MOV     A,YEARL
        ANL     A,#0FH
         MOV 5CH,A
        LCALL A24
        MOV     A,YEARL
        SWAP    A
        ANL     A,#0FH
         MOV 5DH,A
        LCALL A25
        RET
;---------------------------------------------------------------------------------------------------
;设置DS1302初始时间,并启动计时
SETDS1302:
        CLR     T_RST
        nop
        CLR     T_CLK
        nop
        SETB    T_RST
        nop
        MOV     B,#8EH          ;写控制命令字
        LCALL   INPUTBYTE
        MOV     B,#00H          ;写保护关闭
        LCALL   INPUTBYTE
        SETB    T_CLK
        nop
        CLR     T_RST
        MOV     R0,#SECOND      ;内存中的时间首地址
        MOV     R1,#80H         ;DS1302中的时间首地址
        MOV     R7,#7           ;字节数
SETLOOP:
        CLR     T_RST
        nop
        CLR     T_CLK
        nop
        SETB    T_RST
        nop
        MOV     B,R1            ;写命令字
        LCALL   INPUTBYTE
        MOV     A,@R0           ;设置时间
        MOV     B,A
        LCALL   INPUTBYTE
        INC     R0
        INC     R1
        INC     R1
        SETB    T_CLK
        nop
        CLR     T_RST
        nop
        DJNZ    R7,SETLOOP
        CLR     T_RST
        nop
        CLR     T_CLK
        nop
        SETB    T_RST
        nop
        MOV     B,#8EH
        LCALL   INPUTBYTE
        MOV     B,#80H          ;开写保护
        LCALL   INPUTBYTE
        SETB    T_CLK
        nop
        CLR     T_RST
        nop
        RET
;---------------------------------------------------------------------------------------------------
;从DS1302读取时间
GET1302:
        MOV     R0,#SECOND
        MOV     R1,#81H        ;DS1302中读时间的首地址
        MOV     R7,#7
GETLOOP:
        CLR     T_RST
        nop
        CLR     T_CLK
        nop
        SETB    T_RST
        nop
        MOV     B,R1
        LCALL   INPUTBYTE       ;写命令字
        LCALL   OUTPUTBYTE      ;读时间
        MOV     @R0,A           ;将从DS1302中读取的时间从内存中保存
        INC     R0              ;修改地址指针
        INC     R1
        INC     R1
        SETB    T_CLK
        nop
        CLR     T_RST
        nop
        DJNZ    R7,GETLOOP
        RET
;---------------------------------------------------------------------------------------------------
;向DS1302写一个字节
INPUTBYTE:
        MOV     R4,#8
INPUTLOOP:
        MOV     A,B
        RRC     A
        MOV     B,A
        MOV     T_IO,C
        SETB    T_CLK
        NOP
        ;NOP
        ;NOP
        CLR     T_CLK
        DJNZ    R4,INPUTLOOP
        RET
;---------------------------------------------------------------------------------------------------
;从DS1302读一个字节
OUTPUTBYTE:
        clr     a
        clr     c
        MOV     R4,#8
OUTPUTLOOP:
        NOP
        MOV     C,T_IO
        RRC     A
        SETB    T_CLK
        NOP
        CLR     T_CLK
        DJNZ    R4,OUTPUTLOOP
        RET
writeleft2:  ; 左半屏写入16*16汉字子程序
mov dptr,#table2
push column3
mov cpage3,#2
mov ccolumn3,#0
mov a,pagef3
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
mov a,column3
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov a,codes
mov b,#32
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp3:mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn3
mov a,ccolumn3
inc dptr
cjne a,#16,lp3
dec cpage3
inc pagef3
mov a,cpage3
jz over3
mov a,pagef3
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column3
mov a,column3
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn3,#0
ljmp lp3
over3:ret
writeright2:  ; 右半屏写入16*16汉字子程序
mov dptr,#table2
push column4
mov cpage4,#2
mov ccolumn4,#0
mov a,pagef4
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
mov a,column4
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov a,codes
mov b,#32
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lp4:mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prr1
inc ccolumn4
mov a,ccolumn4
inc dptr
cjne a,#16,lp4
dec cpage4
inc pagef4
mov a,cpage4
jz over4
mov a,pagef4
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
pop column4
mov a,column4
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov ccolumn4,#0
ljmp lp4
over4:ret
writeleft:  ; 左半屏写入8*16数字子程序
mov dptr,#table1
push column
mov cpage,#2
mov ccolumn,#0
mov a,pagef
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
mov a,column
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov a,codes
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lOOp1:mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prm1
inc ccolumn
mov a,ccolumn
inc dptr
cjne a,#8,lOOp1
dec cpage
inc pagef
mov a,cpage
jz over1
mov a,pagef
anl a,#07h
orl a,#0b8h
mov com,a
lcall prm0
pop column
mov a,column
anl a,#3fh
orl a,#40h
mov com,a
lcall prm0
mov ccolumn,#0
ljmp lOOp1
over1:
ret
writeright:  ; 右半屏写入8*16数字子程序
mov dptr,#table1
push column2
mov cpage2,#2
mov ccolumn2,#0
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov a,codes
mov b,#16
mul ab
add a,dpl
mov dpl,a
mov a,b
addc a,dph
mov dph,a
lOOp2:mov a,#00h
movc a,@a+dptr
mov dat,a
lcall prr1
inc ccolumn2
mov a,ccolumn2
inc dptr
cjne a,#8,lOOp2
dec cpage2
inc pagef2
mov a,cpage2
jz over2
mov a,pagef2
anl a,#07h
orl a,#0b8h
mov com,a
lcall prr0
pop column2
mov a,column2
anl a,#3fh
orl a,#40h
mov com,a
lcall prr0
mov ccolumn2,#0
ljmp lOOp2
over2:
ret
PRM0:CLR CSA  ;写指令代码子程序(左)
SETB CSB
CLR rs
SETB rw
PRM01:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB  ACC.7,PRM01
CLR rw
MOV P0,COM
SETB E
CLR E
RET
PRM1:CLR CSA ;写显示数据子程序(左)
SETB CSB
CLR rs
SETB rw
PRM11:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB  ACC.7,PRM11
SETB rs
CLR rw
MOV P0,DAT
SETB E
CLR E
RET
PRR0:CLR CSB ;写指令代码子程序(右)
SETB CSA
CLR rs
SETB rw
PRR01:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB  ACC.7,PRR01
CLR rw
MOV P0,COM
SETB E
CLR E
RET
PRR1:CLR CSB ;写显示数据子程序(右)
SETB CSA
CLR rs
SETB rw
PRR11:MOV P0,#0FFH
SETB E
MOV A,P0
CLR E
JB  ACC.7,PRR11
SETB rs
CLR rw
MOV P0,DAT
SETB E
CLR E
RET
INT:MOV COM,#0C0H ;初始化子程序,设置显示起始行为第一行
LCALL PRM0
LCALL PRR0
MOV COM,#3FH  ;开显示设置
LCALL PRM0
LCALL PRR0
RET
CLEAR:MOV R4,#00H ;清屏子程序
CLEAR1:MOV A,R4
ORL A,#0B8H
MOV COM,A
LCALL PRM0
LCALL PRR0
MOV COM,#40H
LCALL PRM0
LCALL PRR0
MOV R3,#40H
CLEAR2:MOV DAT,#00H
LCALL PRM1
LCALL PRR1
DJNZ R3,CLEAR2
INC R4
CJNE R4,#08H,CLEAR1
RET
;***********************************************节日子程序
A7:mov column3,#0
mov pagef3,#4
mov codes,70H
lcall writeleft2
RET
A8:mov column3,#16
mov pagef3,#4
mov codes,71H
lcall writeleft2
RET
A40:mov column3,#32
mov pagef3,#4
mov codes,92H
lcall writeleft2
RET
A41:mov column3,#48
mov pagef3,#4
mov codes,91H
lcall writeleft2
RET
A42:mov column,#0
mov pagef,#4
mov codes,#9           ;;;;;;;9
lcall writeleft
RET
A43:mov column3,#8
mov pagef3,#4
mov codes,#207        ;;;;;.
lcall writeleft2
RET
A44:mov column,#16
mov pagef,#4
mov codes,#1           ;;;;;;;1
lcall writeleft
RET
A45:mov column,#24
mov pagef,#4
mov codes,#8        ;;;;;8
lcall writeleft
RET
 ;**********************************************************
A13:mov column2,#56
mov pagef2,#2
MOV CODES,50H    ;秒低位
lcall writeright
RET
A14:mov column2,#48
mov pagef2,#2
MOV CODES,51H    ;秒高位
lcall writeright
RET
A15:mov column2,#24
mov pagef2,#2
MOV CODES,52H      ;分低位
lcall writeright
RET
A16:mov column2,#16
mov pagef2,#2
MOV CODES,53H      ;分高位
lcall writeright
RET
A17:mov column,#56
mov pagef,#2
MOV CODES,54H     ;时低位
lcall writeleft
RET
A18:mov column,#48
mov pagef,#2
MOV CODES,55H     ;时高位
lcall writeleft
RET
A19:mov column3,#32
mov pagef3,#2        ;星期
mov codes,5AH
lcall writeleft2
RET
A20:mov column2,#40
mov pagef2,#0       ;日低位
mov codes,56H
lcall writeright
RET
A21:mov column2,#32
mov pagef2,#0
mov codes,57H       ;日高位       

⌨️ 快捷键说明

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