久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3159|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

急求,基于此匯編語言繪制proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:259731 發(fā)表于 2017-12-10 14:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
50黑幣
        CONFIG12 EQU 7FH
TEMPH EQU 21H
TEMPL EQU 20H
REG2 EQU 22H
REG3 EQU 23H
REG4 EQU 24H
DAT  EQU P0.7
SCLK EQU P3.4
IO   EQU P3.3
RST  EQU P3.2
year DATA 66H
month DATA 65H
week DATA 64H
day  DATA 63H
hour DATA 62H
minute DATA 61H
second DATA 60H
DS1302_ADDR DATA 32H
DS1302_DATA DATA 31H                                   
  bbbit p3.7
XSOUT BIT P3.6
  ORG0000H
LJMP  START
  ORG001BH
LJMP INTT1
START:             ;初值
LCALL ZJ
SETB EA
  MOVTMOD,#10H    ;計(jì)數(shù)器1,方式1
  MOVTL1,#00H
  MOVTH1,#00H
  MOV32H,#8EH
  MOV31H,#00H     ;允許寫1302
LCALL WRITE
  MOV32H,#90H
  MOV31H,#0A6H   ;1302充電,充電電流1.1MA
LCALL WRITE
  ;主程序~~~~~~~~~~~~~~~~~~~~~
MAIN1:
  MOV32H,#8DH    ;讀出年
LCALL  READ
  MOVyear,31H
  MOV32H,#8BH   ;讀出星期
LCALL READ
  MOVA,31H
  DECA
  MOVweek,A
  MOV32H,#89H   ;讀出月
LCALL READ
  MOVmonth,31H
  MOV32H,#87H  ;讀出日
LCALL READ
  MOVday,31H
  MOV32H,#85H  ;讀出小時
LCALL READ
  MOVhour,31H
  MOV32H,#83H  ;讀出分鐘
LCALL READ
  MOVminute,31H
  MOV32H,#81H  ;讀出秒
LCALL READ
  MOVsecond,31H
;~~~~~~~~~~~~分離緩存~~~~~~~~
MOV R0,year    ;年分離,送顯示緩存
LCALL DIVIDE
  MOV7BH,R1
  MOV4BH,R1
  MOV7CH,R2
  MOV4CH,R2
  MOV78H,week
  MOV48H,week
  MOVR0,month  ;月分離,送顯示緩存
LCALL DIVIDE
  MOV79H,R1
  MOV49H,R1
  MOV7AH,R2
  MOV4AH,R2
  MOVR0,day   ;日分離,送顯示緩存
LCALL DIVIDE
  MOV76H,R1
  MOV46H,R1
  MOV77H,R2
  MOV47H,R2
  MOVR0,hour  ;小時分離,送顯示緩存
LCALL DIVIDE
  MOV74H,R1
  MOV44H,R1
  MOV75H,R2
  MOV45H,R2
  MOVR0,minute ;分鐘分離,送顯示緩存
LCALL DIVIDE
  MOV72H,R1
  MOV42H,R1
  MOV73H,R2
  MOV43H,R2
  MOVR0,second  ;秒分離,送顯示緩存
LCALL  DIVIDE
  MOV70H,R1
  MOV40H,R1
  MOV71H,R2
  MOV41H,R2
  CLREA
LCALL TOUTOU
SETB EA
LCALL DISPLAY
LCALL GENGXIAN    ;更新農(nóng)歷程序
  JNBP0.1,SETG111
  JNBF0,SSS
  CLRP0.4           ;非閏月,則p0.4清零,指示燈亮
LJMP MAIN1
SETG111:
LJMP SETG
SSS:
SETB P0.4          ;閏月,則p0.4置位,指示燈不亮
LJMP MAIN1
;~~~~~~~~~~~~~~~~~~~~~~~~~  溫度
TOUTOU:
LCALL CHUSHI
LCALL RDTEMP
  MOVA,TEMPL
  ANLA,#11110000B
  MOVTEMPL,A
  MOVA,TEMPH
  ANLA,#00000111B
  ORLA,TEMPL
SWAP A
  MOV25H,A
  MOVA,25H
  MOVB,#64H
  DIVAB
  MOVA,B
  MOVB,#0AH
  DIVAB
SWAP A
  ORLA,B
  MOV10H,A
  RET
CHUSHI:
LCALL RESET
  MOVA,#0CCH
LCALL WRITE111
  MOVA,#4EH
LCALL WRITE111
  MOVA,#CONFIG12
LCALL WRITE111
  RET
RDTEMP:
LCALL RESET
  MOVA,#0CCH
LCALL WRITE111
  MOVA,#44H
LCALL WRITE111
LCALL DL1MS
LCALL RESET
  MOVA,#0CCH
LCALL WRITE111
  MOVA,#0BEH
LCALL WRITE111
LCALL ERAD111
  MOVTEMPL,A
LCALL ERAD111
  MOVTEMPH,A
  RET
RESET:
LA:
SETB DAT
  MOV52H,#200
LB:
  CLRDAT
DJNZ 52H,LB
SETB DAT
  MOV52H,#30
LC:
DJNZ 52H,LC
  CLRC
  ORLC,DAT
  JCLB
  MOV58H,#80
LD:
  ORLC,DAT
  JCLP
DJNZ 58H,LD
SJMP LA
LP:
  MOV52H,#250
LF:
DJNZ 52H,LF
  RET
WRITE111:
  MOV53H,#8
W51HA:
SETB DAT
  MOV54H,#8
  RRCA
  CLRDAT
W52HA:
DJNZ 54H,W52HA
  MOVDAT,C
  MOV54H,#30
W53HA:
DJNZ 54H,W53HA
DJNZ 53H,W51HA
SETB DAT
  RET
ERAD111:
  CLREA
  MOV58H,#8
RD1A:
  CLRDAT
  MOV54H,#6
  NOP
SETB DAT
RD2A:
DJNZ 54H,RD2A
  MOVC,DAT
  RRCA
  MOV55H,#30
RD3A:
DJNZ 55H,RD3A
DJNZ 58H,RD1A
SETB DAT
  RET
;公歷設(shè)置程序~~~~~~
SETG :
SETB TR1
SETB ET1
  MOV32H,#8EH
  MOV31H,#00H      ;允許寫1302
LCALL WRITE
  MOV32H,#80H
  MOV31H,#80H      ;1302停止振蕩
LCALL WRITE
GWAIT:           ;~
LCALL DISPLAY
  JNBP0.1,GWAIT
SETG1:
LCALL DISPLAY
  JNBP0.1,SETG2
  JNBP0.2,GADDYEAR
  JNBP0.3,JIANYEAR
AJMP SETG1
GADDYEAR:
  MOVR7,66H      ;年加一
LCALL ADD1
  MOV66H,A
CJNE A,#51H,GADDYEAR1
  MOV66H,#00H
AJMP GADDYEAR1
JIANYEAR:
  MOVR7,66H      ;年減一
LCALL JIAN1
  MOV66H,A
CJNE A,#00H,GADDYEAR1
  MOV66H,#51H
GADDYEAR1:
  MOV32H,#8CH    ;年值送人1302
  MOV31H,66H
LCALL WRITE
  MOVR0,66H
LCALL DIVIDE    ;年分離送顯示緩存
  MOV4BH,R1
  MOV7BH,R1
  MOV4CH,R2
  MOV7CH,R2
WAITT1:          ;~~~~~~~
LCALL DISPLAY
  JNBP0.2,WAITT1
  JNBP0.3,WAITT1
AJMP SETG1
SETG2:
SETB 0AH         ;調(diào)月時閃標(biāo)志
GWAIT2:
LCALL DISPLAY
  JNBP0.1,GWAIT2
SETG3:
LCALL DISPLAY
  JNBP0.1,SETG4
  JNBP0.2,GADDMONTH
  JNBP0.3,JIANMONTH
AJMP SETG3
GADDMONTH:
  MOVR7,65H     ;月加一
LCALL ADD1
  MOV65H,A
CJNE A,#13H,GADDMONTH1
  MOV65H,#01H
AJMP GADDMONTH1
JIANMONTH:
  MOVR7,65H     ;月減一
LCALL JIAN1
  MOV65H,A
CJNE A,#00H,GADDMONTH1
  MOV65H,#12H
GADDMONTH1:
  MOV32H,#88H  ;月值送人1302
  MOV31H,65H
LCALL WRITE
  MOVR0,65H
LCALL DIVIDE  ;月分離,送顯示緩存
  MOV79H,R1
  MOV49H,R1
  MOV7AH,R2
  MOV4AH,R2
WAITT2:         
LCALL DISPLAY
  JNBP0.2,WAITT2
  JNBP0.3,WAITT2
AJMP SETG3
SETG4:
SETB 0BH    ;調(diào)日時閃標(biāo)志
GWAIT4:
LCALL DISPLAY
  JNBP0.1,GWAIT4
SETG5:
LCALL DISPLAY
  JNBP0.1,SETG6
  JNBP0.2,GADDDAY
  JNBP0.3,JIANDAY
AJMP SETG5
GADDDAY:
  MOVR7,63H     ;日加一
LCALL ADD1
  MOV63H,A
CJNE A,#32H,GADDDAY1
MOV  63H,#01H
JIANDAY:
  MOVR7,63H     ;日減一
LCALL JIAN1
  MOV63H,A
CJNE A,#00H,GADDDAY1
MOV  63H,#31H
GADDDAY1:
  MOV32H,#86H   ;日值送人1302
  MOV31H,63H
LCALL WRITE
  MOVR0,63H
LCALL DIVIDE   ;日分離,送顯示緩存
  MOV76H,R1
  MOV46H,R1
  MOV77H,R2
  MOV47H,R2
WAITT3:              ;~~~
LCALL DISPLAY
  JNBP0.2,WAITT3
  JNBP0.3,WAITT3
AJMP SETG5
SETG6:
SETB 0CH    ;調(diào)星期時閃標(biāo)志
GWAIT6:
LCALL DISPLAY
  JNBP0.1,GWAIT6
SETG7:
LCALL DISPLAY
  JNBP0.1,SETG8
  JNBP0.2,GADDWEEK
  JNBP0.3,JIANWEEK
AJMP SETG7
GADDWEEK:
  MOVR7,64H       ;星期加一
LCALL ADD1
  MOV64H,A
CJNE A,#07H,GADDWEEK1
MOV  64H,#00H
AJMP GADDWEEK1
JIANWEEK:
  MOVR7,64H       ;星期減一
LCALL JIAN1
  MOV64H,A
CJNE A,#00H,GADDWEEK1
MOV  64H,#06H
GADDWEEK1:
  MOV32H,#8AH
  MOV31H,64H     ;星期值送人1302
LCALL WRITE
  MOVR0,64H
LCALL DIVIDE     ;星期值分離送顯示緩存
  MOV48H,R1
  MOV78H,R1
WAITT4:            ;~~~~
LCALL DISPLAY
  JNBP0.2,WAITT4
  JNBP0.3,WAITT4
AJMP SETG7
SETG8:
SETB 0DH        ;調(diào)小時時閃標(biāo)志
GWAIT8:
LCALL DISPLAY
  JNBP0.1,GWAIT8
SETG9:
LCALL DISPLAY
  JNBP0.1,SETG10
  JNBP0.2,GADDHOUR
  JNBP0.3,JIANHOUR
AJMP SETG9
GADDHOUR:
  MOVR7,62H        ;小時加一
LCALL ADD1
  MOV62H,A
CJNE A,#24H,GADDHOUR1
  MOV62H,#00H
AJMP GADDHOUR1
JIANHOUR:
  MOVR7,62H        ;小時減一
LCALL JIAN1
  MOV62H,A
CJNE A,#00H,GADDHOUR1
  MOV62H,#23H
GADDHOUR1:
  MOV32H,#84H     ;小時值送人1302
  MOV31H,62H
LCALL WRITE
  MOVR0,62H
LCALL DIVIDE      ;小時值分離送顯示緩存
  MOV74H,R1
  MOV44H,R1
  MOV75H,R2
  MOV45H,R2
WAITT5:              ;~~~~~
LCALL DISPLAY
  JNBP0.2,WAITT5
  JNBP0.3,WAITT5
AJMP SETG9
SETG10:
SETB 0EH        ;調(diào)分時候閃標(biāo)志
GWAIT10:
LCALL DISPLAY
  JNBP0.1,GWAIT10
SETG11:
LCALL DISPLAY
  JNBP0.1,SETGOUT
  JNBP0.2,GADDminute
  JNBP0.3,JIANminute
AJMP SETG11
GADDminute:
  MOVR7,61H      ;分鐘加一
LCALL ADD1
  MOV61H,A
CJNE A,#60H,GADDminute1
  MOV61H,#00H
AJMP GADDminute1
JIANminute:
  MOVR7,61H      ;分鐘減一
LCALL JIAN1
  MOV61H,A
CJNE A,#00H,GADDminute1
  MOV61H,#59H
GADDminute1:
  MOV32H,#82H    ;分鐘值送人1302
  MOV31H,61H
LCALL WRITE
  MOVR0,61H
LCALL DIVIDE    ;分鐘值分離送顯示緩存
  MOV72H,R1
  MOV42H,R1
  MOV73H,R2
  MOV43H,R2
WAITT6:
LCALL DISPLAY
  JNBP0.2,WAITT6
  JNBP0.3,WAITT6
AJMP SETG11
SETGOUT:
LCALL DISPLAY
  JNBP0.1,SETGOUT
LCALL GENGXIAN
  MOV32H,#80H
  MOV31H,#00H     ;1302晶振開始振蕩
LCALL  WRITE
  MOV32H,#8EH
  MOV31H,#80H     ;禁止寫入1302
LCALL  WRITE
  CLR08H
  CLR09H
  CLR0AH
  CLR0BH
  CLR0CH
  CLR0DH
  CLR0EH
  CLR0FH
  CLRET1                 ;關(guān)閃中斷
  CLRTR1
LJMP MAIN1
;;閃動調(diào)時程序~~~~~~~~~~~~~~~~~~~~~~~~~~~
INTT1:
PUSH ACC
PUSH PSW
GFLASH:
  CPL0FH
  JB0FH,GFLASH1
  MOV7CH,4CH  ;全部顯示
  MOV7BH,4BH
  MOV7AH,4AH
  MOV79H,49H
  MOV78H,48H
  MOV77H,47H
  MOV76H,46H
  MOV75H,45H
  MOV74H,44H
  MOV73H,43H
  MOV72H,42H
  MOV71H,41H
  MOV70H,40H
GFLASHOUT:
  POPPSW
  POPACC
RETI
GFLASH1:
  JB0AH,GFLASH2 ;調(diào)年閃
  MOV7CH,#0FH
  MOV7BH,#0FH
AJMP GFLASHOUT
GFLASH2:
  JB0BH,GFLASH3 ;調(diào)月閃
  MOV7AH,#0FH
  MOV79H,#0FH
AJMP GFLASHOUT
GFLASH3:
  JB0CH,GFLASH4 ;調(diào)日閃
  MOV77H,#0FH
  MOV76H,#0FH
AJMP GFLASHOUT
GFLASH4:
  JB0DH,GFLASH5 ;調(diào)星期閃
  MOV78H,#0FH
AJMP GFLASHOUT
GFLASH5:
  JB0EH,GFLASH6 ;調(diào)小時閃
  MOV75H,#0FH
  MOV74H,#0FH
AJMP GFLASHOUT
GFLASH6:
  MOV73H,#0FH  ;調(diào)分鐘閃
  MOV72H,#0FH
AJMP GFLASHOUT
;加一程序~~~~~~~~~~~~~~~~~~~~~~~~~
ADD1:
  MOVA,R7
  ADDA,#1
  DAA
  RET
;減一程序~~~~~~~~~~~~~~~~~~~~~~~~~
JIAN1:
  MOVA,R7
  DECA
CJNE A,#4FH,KK1
  MOVA,#49H
KK1:
CJNE A,#3FH,KK2
  MOVA,#39H
KK2:
CJNE A,#2FH,KK3
  MOVA,#29H
KK3:
CJNE A,#1FH,KK4
  MOVA,#19H
KK4:
CJNE A,#0FH,KK5
  MOVA,#09H
KK5:
  RET
;分離程序~~~~~~~~~~~~~~~~~~~~~~~~~
DIVIDE:
  MOVA,R0
  ANLA,#0FH
  MOVR1,A
  MOVA,R0
SWAP A
  ANLA,#0FH
  MOVR2,A
  RET
;寫1302程序~~~~~~~
WRITE:
  CLRSCLK
  NOP
SETB RST
  NOP
  MOVA,32H
  MOVR4,#8
WRITE1:
  RRCA     ;送地址給1302
  NOP
  NOP
  CLRSCLK
  NOP
  NOP
  NOP
  MOVIO,C
  NOP
  NOP
  NOP
SETB SCLK
  NOP
  NOP
DJNZ R4,WRITE1
  CLRSCLK
  NOP
  MOVA,31H
  MOVR4,#8
WRITE2:
  RRCA
NOP     ;送數(shù)據(jù)給1302
  CLRSCLK
  NOP
  NOP
  MOVIO,C
  NOP
  NOP
  NOP
SETB SCLK
  NOP
  NOP
DJNZ R4,WRITE2
  CLRRST
  RET
;讀1302程序~~~~~~~~~~~~~~~~~~~~~~~~~
READ:
  CLRSCLK
  NOP
  NOP
SETB RST
  NOP
  MOVA,32H
  MOVR4,#8
READ1:
  RRCA    ;送地址給1302
  NOP
  MOVIO,C
  NOP
  NOP
  NOP
SETB SCLK
  NOP
  NOP
  NOP
  CLRSCLK
  NOP
  NOP
DJNZ R4,READ1
  MOVR4,#8
READ2:
  CLRSCLK
NOP      ;從1302中讀出數(shù)據(jù)
  NOP
  NOP
  MOVC,IO
  NOP
  NOP
  NOP
  NOP
  NOP
  RRCA
  NOP
  NOP
  NOP
  NOP
SETB SCLK
  NOP
DJNZ R4,READ2
  MOV31H,A
  CLRRST
  RET
;BCD碼轉(zhuǎn)換為10進(jìn)制程序~~~~~
BCD_10:
  MOVA,R0
  ANLA,#0FH
  MOVR1,A  ;高位×10,加低位
  MOVA,R0
SWAP A
  ANLA,#0FH
  MOVB,#10
  MULAB
  ADDA,R1
  MOVR0,A
  RET
;查一年數(shù)據(jù)程序~~~~~~~~~~~~~~~~
CHECKMONTH:
LCALL BCD_10
  MOVA,R0
  MOVB,#04
  MULAB
  MOVR1,A
  MOVDPTR,#TAB
MOVC A,@A+DPTR
  MOVR7,A   ;第一字節(jié)送R7
  INCR1
  MOVA,R1
MOVC A,@A+DPTR
  MOVR6,A  ;第二字節(jié)送R6
  INCR1
  MOVA,R1
MOVC A,@A+DPTR
  MOVR5,A   ;第三字節(jié)送R6
  INCR1
  MOVA,R1
MOVC A,@A+DPTR
  MOVR4,A  ;第四字節(jié)送R4
  RET
;;;;;自動更新農(nóng)歷;;;
GENGXIAN:MOV R2,#00H
         MOV R3,#00H
         MOV A,month
         CJNE A,#01H,GM2
         MOV R0,day   ;當(dāng)前月為一月
         LCALL BCD_10 ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,送R2
         MOV A,R0
         MOV R2,A
         AJMP TIAOZHENG1
  GM2:CJNE A,#02H,GM3
      MOV R0,day    ;當(dāng)前月為二月
      LCALL BCD_10 ;;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0      ;再加31,送R2
      ADD A,#31
      MOV R2,A
      AJMP TIAOZHENG1
GM3: CJNE A,#03H,GM4
      MOV R0,day    ;當(dāng)前月為三月
      LCALL BCD_10  ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0      ;再加59,送R2
      ADD A,#59
      MOV R2,A
      AJMP TIAOZHENG1
GM4: CJNE A,#04H,GM5
      MOV R0,day     ;當(dāng)前月為四月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加90,送R2
      ADD A,#90
      MOV R2,A
      AJMP TIAOZHENG1
GM5: CJNE A,#05H,GM6
      MOV R0,day     ;當(dāng)前月為五月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加120,送R2
      ADD A,#120
      MOV R2,A
      AJMP TIAOZHENG1
GM6: CJNE A,#06H,GM7
      MOV R0,day     ;當(dāng)前月為六月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加151,送R2
      ADD A,#151
      MOV R2,A
      AJMP TIAOZHENG1
GM7: CJNE A,#07H,GM8
      MOV R0,day     ;當(dāng)前月位七月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加181,送R2
      ADD A,#181
      MOV R2,A
      AJMP TIAOZHENG1
  GM8: CJNE A,#08H,GM9
      MOV R0,day     ;當(dāng)前月為八月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加212,送R2
      ADD A,#212
      MOV R2,A
      AJMP TIAOZHENG1
GM9: CJNE A,#09H,GM10
      MOV R0,day    ;當(dāng)前月為九月
      LCALL BCD_10  ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0      ;再加243
      CLR C
      ADD A,#243
      JC GGG
      MOV R2,A       ;A沒有溢出,送R2
      AJMP TIAOZHENG1
GGG: MOV R3,#0FFH   ;A溢出,A加一送R2
      INC A          ;R3中送#0ffh
      MOV R2,A
      AJMP TIAOZHENG1
GM10: CJNE A,#10H,GM11
      MOV R0,day    ;當(dāng)前月為10月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加18,送R2
      ADD A,#18      ;R3中送#0FFH
      MOV R2,A
      MOV R3,#0FFH
      AJMP TIAOZHENG1
GM11: CJNE A,#11H,GM12
      MOV R0,day    ;當(dāng)前月為11月
      LCALL BCD_10  ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0      ;再加49,送R2
      ADD A,#49     ;R3中送#0FFH
      MOV R2,A
      MOV R3,#0FFH
      AJMP TIAOZHENG1
GM12: MOV R0,day     ;當(dāng)前月為12月
      LCALL BCD_10   ;當(dāng)前日轉(zhuǎn)換為10進(jìn)制,
      MOV A,R0       ;再加79,送R2
      ADD A,#79      ;R3中送#0FFH
      MOV R2,A
      MOV R3,#0FFH
      AJMP TIAOZHENG1
TIAOZHENG1: MOV A,year
      MOV B,#04
      DIV AB
      MOV A,B
      JNZ GGG1
      MOV A,65H   ;當(dāng)前年為閏年
      CJNE A,#01H,AAAA
      AJMP GGG1        ;當(dāng)前月是1
AAAA: CJNE A,#02H,BBBB
      AJMP GGG1       ;當(dāng)前月是2
BBBB: CJNE R2,#0FFH,GGG2
      MOV R3,#0FFH   ;當(dāng)前月不是1和2,
      MOV R2,#01H    ;R1和R2總和加一
      AJMP GGG1
GGG2: INC R2
GGG1: MOV R0,year    ;查一年數(shù)據(jù)
      LCALL CHECKMONTH
      MOV A,R2
      CLR C
      SUBB A,R7
      MOV P2.7,C
      CJNE A,#01H,GGG3
      MOV R2,#01H
      MOV A,R3
      CJNE A,#00H,NEW1
      MOV  57H,#01H   ;R2和R3總和減R7
      MOV  56H,#01H   ;為0,則為春節(jié)
      LJMP S_PLAY
GGG3: CJNE A,#00H,GGG6
      MOV R2,A
      AJMP OLD
GGG6: JNB P2.7,NEW2
      MOV A,R7
      CLR C
      SUBB A,R2
      MOV R7,A
      CJNE R3,#0FFH,GGG5
      MOV A,R3
      CLR C
      SUBB A,R7
      MOV R2,A
      MOV R3,#00H
      AJMP NEW
GGG5: MOV A,R7
      MOV R2,A
      AJMP OLD
NEW1: MOV R2,#0FFH
      MOV R3,#01H
      AJMP NEW
NEW2: MOV R2,A
      MOV A,R3
      CJNE A,#0FFH,GGG4
      MOV A,R2
      MOV R3,A
      MOV R2,#0FFH
GGG4: AJMP NEW
;OLD 農(nóng)歷為公歷的前一年
OLD: MOV A,year
      DEC A
      MOV R0,A
      LCALL CHECKMONTH
      MOV A,R2
      CLR C
      SUBB A,#29
      MOV P2.7,C
      MOV R6,A
      MOV A,R5
      JB ACC.0,AAA ;12月為小月,轉(zhuǎn)到AAA
      MOV A,R2
      CLR C
      SUBB A,#30
      MOV P2.7,C
      MOV R6,A
AAA: MOV A,R6
      CJNE A,#00H,BBB
      MOV 56H,#29H ;為0,則為11月最后一天
      MOV A,R5    ;小月為11月29
      JB ACC.1,CCC
      MOV 56H,#30H  ;大月為11月30
CCC: MOV 57H,#11H
      LJMP S_PLAY
BBB: JNB P2.7, DDD
      MOV A,#29  ; CY位置位,位12月
      CLR C
      SUBB A,R2
      MOV R4,A
      MOV A,R5
      JB ACC.0,EEE
      MOV A,#30
      CLR C
      SUBB A,R2
      MOV R4,A
EEE: MOV A,R4
      MOV R0,A
      LCALL D_BCD
      MOV 56H,A
      MOV 57H,#12H
      LJMP S_PLAY
DDD: MOV A,#29 ;CY為0,為11月
      CLR C
      SUBB A,R4
      MOV R1,A
      MOV A,R5
      JB ACC.1, FFF
      MOV A,#30
      CLR C
      SUBB A,R4
      MOV R1,A
FFF: MOV A,R1
      MOV R0,A
      LCALL D_BCD
      MOV 56H,A
      MOV 57H,#11H
      LJMP S_PLAY
;NEW此時R2中的值為FFH時
; R3有值,否則為0
NEW:
  NOP
M1:
  MOVA,R2   ;R2減一月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.6,SM11
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
SM11:
  JCSM12
  MOVA,R1  ;R2減1月天數(shù),夠減
  MOVR2,A  ;轉(zhuǎn)二月
AJMP M2
SM12:
CJNE R3,#00H,M13 ;R2減1月天數(shù)
LJMP Y1           ;不夠減,判R3為0否
M13:
  MOVA,R2          ;不為0,R3加到R2中
  ADDA,R3          ;再讓一月減
  MOVR2,A          ;還不夠,則轉(zhuǎn)Y1
  MOVR3,#00H
AJMP M1
M2:
  CLRC    ;R2減一月天數(shù),夠減
  MOVA,R2 ;轉(zhuǎn)三月
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.5,M21
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M21:
  JCM22
  MOVA,R1  ;R2減2月天數(shù),夠減
  MOVR2,A
AJMP MM2
M22:
CJNE R3,#00H,M23  ;R2減2月天數(shù)
LJMP Y2         ;不夠減,判,R3為0否
M23:
  MOVA,R2        ;不為0,R3加到R2中
  ADDA,R3        ;再讓二月減
  MOVR2,A        ;還不夠,則轉(zhuǎn)Y2
  MOVR3,#00H
AJMP M2
MM2:
LCALL CHECKRE   ;查2月,如果不為閏月
CJNE A,#02H,M3  ;轉(zhuǎn)3月
RM2:
  MOVA,R4
  ANLA,#0FH
  JNZRM21
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
AJMP RM22
RM21:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM22:
  JCRM23
  MOVA,R1  ;R2減閏2月天數(shù),夠減
  MOVR2,A   ;轉(zhuǎn)3月
AJMP M3
RM23:
CJNE R3,#00H,RM24 ;R2減閏2月天數(shù)
LJMP RY2          ;不夠減,判,R3為0否
RM24:
  MOVA,R2          ;不為0,R3加到R2中
  ADDA,R3          ;再讓閏2月減
  MOVR3,#00H       ;還不夠,則轉(zhuǎn)RY2
AJMP RM2
M3:
  MOVA,R2       ;R2減3月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.4,M31
  CLRC
  MOVA,R2
SUBB A,#30
  MOVR1,A
M31:
  JCM32
  MOVA,R1          ;R2減3月天數(shù),夠減
  MOVR2,A
AJMP MM3
M32:
CJNE R3,#00H,M33  ;R2減3月天數(shù)
LJMP Y3           ;不夠減,判,R3為0否
M33:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓3月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)Y3
  MOVR3,#00H
AJMP M3
MM3:
LCALL CHECKRE    ;查3月,如果不為閏月
CJNE A,#03H,M4   ;轉(zhuǎn)4月
RM3:
  MOVA,R4
  ANLA,#0FH     ;R2減閏3月天數(shù)
  JNZRM31
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
AJMP RM32
RM31:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM32:
  JCRM33
  MOVA,R1  ;R2減閏3月天數(shù),夠減
  MOVR2,A  ;轉(zhuǎn)4月
AJMP M4
RM33:
CJNE R3,#00H,RM34 ;R2減閏3月天數(shù)
LJMP RY3          ;不夠減,判,R3為0否
RM34:
  MOVA,R2          ;不為0,R3加到R2中
  ADDA,R3          ;再讓閏3月減
  MOVR2,A          ;還不夠,則轉(zhuǎn)RY3
  MOVR3,#00H
AJMP RM3
M4:
  MOVA,R2
  CLRC           ;R2減4月天數(shù)
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.2,M41
  CLRC
  MOVA,R2
SUBB A,#30
  MOVR1,A
M41:
  JCM42
  MOVA,R1       ;R2減4月天數(shù),夠減
  MOVR2,A
AJMP MM4
M42:
CJNE R3,#00H,M43  ;R2減4月天數(shù)
LJMP Y4           ;不夠減,判,R3為0否
M43:
  MOVA,R2          ;不為0,R3加到R2中
  ADDA,R3          ;再讓4月減
  MOVR2,A          ;還不夠,則轉(zhuǎn)Y4
  MOVR3,#00H
AJMP M4
MM4:
LCALL CHECKRE  ;查4月,如果不為閏月
CJNE A,#04H,M5 ;轉(zhuǎn)5月
RM4:
  MOVA,R4
  ANLA,#0FH    ;R2減閏4月天數(shù)
  JNZRM41
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
AJMP RM42
RM41:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM42:
  JCRM43
  MOVA,R1   ;R2減閏4月天數(shù),夠減
  MOVR2,A   ;轉(zhuǎn)5月
AJMP M5
RM43:
CJNE R3,#00H,RM44  ;R2減閏4月天數(shù)
LJMP RY4           ;不夠減,判,R3為0否
RM44:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓閏4月減
  MOVR2,A
  MOVR3,#00H        ;還不夠,則轉(zhuǎn)Y4
AJMP RM4
M5:
  MOVA,R2            ;R2減5月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.1,M51
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M51:
  JCM52
  MOVA,R1    ;R2減5月天數(shù),夠減
  MOVR2,A
AJMP MM5
M52:
CJNE R3,#00H,M53  ;R2減5月天數(shù)
LJMP Y5           ;不夠減,判,R3為0否
M53:
  MOVA,R2          ;不為0,R3加到R2中
  ADDA,R3          ;再讓5月減
  MOVR2,A          ;還不夠,則轉(zhuǎn)Y5
  MOVR3,#00H
LJMP M5
MM5:
LCALL CHECKRE   ;查5月,如果不為閏月
CJNE A,#05H,M6  ;轉(zhuǎn)6月
RM5:
  MOVA,R4        ;R2減閏5月天數(shù)
  ANLA,#0FH
  JNZRM51
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
LJMP RM52
RM51:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM52:
  JCRM53
  MOVA,R1   ;R2減閏5月天數(shù),夠減
  MOVR2,A   ;轉(zhuǎn)6月
LJMP M6
RM53:
CJNE R3,#00H,RM54   ;R2減閏5月天數(shù)
LJMP RY5            ;不夠減,判,R3為0否
RM54:
  MOVA,R2            ;不為0,R3加到R2中
  ADDA,R3            ;再讓5月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)RY5
  MOVR3,#00H
LJMP RM5
M6:
  MOVA,R2        ;R2減6月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R6
  JBACC.0,M61
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M61:
  JCM62
  MOVA,R1       ;R2減6月天數(shù),夠減
  MOVR2,A
LJMP MM6
M62:
CJNE R3,#00H,M63   ;R2減6月天數(shù)
LJMP Y6            ;不夠減,判,R3為0否
M63:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓6月減
  MOVR2,A           ;還不夠,則轉(zhuǎn)Y6
  MOVR3,#00H
LJMP M6
MM6:
LCALL CHECKRE   ;查6月,如果不為閏月
CJNE A,#06H,M7  ;轉(zhuǎn)7月
RM6:
  MOVA,R4
  ANLA,#0FH       ;R2減閏6月天數(shù)
  JNZRM61
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
LJMP RM62
RM61:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM62:
  JCRM63
  MOVA,R1    ;R2減閏6月天數(shù),夠減
  MOVR2,A    ;轉(zhuǎn)7月
LJMP M7
RM63:
CJNE R3,#00H,RM64   ;R2減閏6月天數(shù)
LJMP RY6            ;不夠減,判,R3為0否
RM64:
  MOVA,R2            ;不為0,R3加到R2中
  ADDA,R3            ;再讓閏6月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)RY6
  MOVR3,#00H
LJMP RM6
M7:
  MOVA,R2      ;R2減7月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.6,M71
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M71:
  JCM72
  MOVA,R1     ;R2減7月天數(shù),夠減
  MOVR2,A
LJMP MM7
M72:
CJNE R3,#00H,M73   ;R2減7月天數(shù)
LJMP Y7            ;不夠減,判,R3為0否
M73:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓6月減
  MOVR2,A           ;還不夠,則轉(zhuǎn)Y7
  MOVR3,#00H
LJMP M7
MM7:
LCALL CHECKRE   ;查7月,如果不為閏月
CJNE A,#07H,M8  ;轉(zhuǎn)8月
RM7:
  MOVA,R4
  ANLA,#0FH      ;R2減閏7月天數(shù)
  JNZRM71
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
LJMP RM72
RM71:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM72:
  JCRM73
  MOVA,R1 ;R2減閏7月天數(shù),夠減
  MOVR2,A ;轉(zhuǎn)8月
LJMP M8
RM73:
CJNE R3,#00H,RM74  ;R2減閏7月天數(shù)
LJMP RY7           ;不夠減,判,R3為0否
RM74:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓閏7月減
  MOVR2,A           ;還不夠,則轉(zhuǎn)RY7
  MOVR3,#00H
LJMP RM7
M8:
  MOVA,R2           ;R2減8月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.5,M81
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M81:
  JCM82
  MOVA,R1   ;R2減8月天數(shù),夠減
  MOVR2,A   ;轉(zhuǎn)9月
LJMP M9
M82:
CJNE R3,#00H,M83   ;R2減8月天數(shù)
LJMP Y8            ;不夠減,判,R3為0否
M83:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3            ;再讓8月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)Y8
  MOVR3,#00H
  LJMPM8
M9:
  MOVA,R2      ;R2減9月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.4,M91
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M91:
  JCM92
  MOVA,R1   ;R2減9月天數(shù),夠減
  MOVR2,A
LJMP MM9
M92:
CJNE R3,#00H,M93   ;R2減9月天數(shù)
LJMP Y9            ;不夠減,判,R3為0否
M93:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓9月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)Y9
  MOVR3,#00H
LJMP M9
MM9:
LCALL CHECKRE    ;查9月,如果不為閏月
CJNE A,#09H,M10  ;轉(zhuǎn)10月
RM9:
  MOVA,R4         ;R2減閏9月天數(shù)
  ANLA,#0FH
  JNZRM91
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
LJMP RM92
RM91:
  MOVA,R2
  CLRC
SUBB A,#29
  MOVR1,A
RM92:
  JCRM93
  MOVA,R1  ;R2減閏9月天數(shù),夠減
  MOVR2,A  ;轉(zhuǎn)10月
LJMP M10
RM93:
CJNE R3,#00H,RM94  ;R2減閏9月天數(shù)
LJMP RY9           ;不夠減,判,R3為0否
RM94:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓閏9月減
  MOVR2,A           ;還不夠,則轉(zhuǎn)RY9
  MOVR3,#00H
LJMP RM9
M10:
  MOVA,R2       ;R2減10月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.2,M101
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M101:
  JCM102
  MOVA,R1  ;R2減10月天數(shù),夠減
  MOVR2,A  ;轉(zhuǎn)11月
LJMP M11
M102:
CJNE R3,#00H,M103     ;R2減10月天數(shù)
LJMP Y10              ;不夠減,判,R3為0否
M103:
  MOVA,R2              ;不為0,R3加到R2中
  ADDA,R3              ;再讓10月減
  MOVR2,A              ;還不夠,則轉(zhuǎn)Y10
  MOVR3,#00H
LJMP M10
M11:
  MOVA,R2          ;R2減11月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.1,M111
  MOVA,R2
  CLRC
SUBB A,#30
  MOVR1,A
M111:
  JCM112
  MOVA,R1  ;R2減11月天數(shù),夠減
  MOVR2,A  ;轉(zhuǎn)12月
LJMP M12
M112:
CJNE R3,#00H,M113   ;R2減11月天數(shù)
LJMP Y11            ;不夠減,判,R3為0否
M113:
  MOVA,R2            ;不為0,R3加到R2中
  ADDA,R3            ;再讓11月減
  MOVR2,A            ;還不夠,則轉(zhuǎn)Y11
  MOVR3,#00H
LJMP M11
M12:
  MOVA,R2      ;R2減12月天數(shù)
  CLRC
SUBB A,#29
  MOVR1,A
  MOVA,R5
  JBACC.0,M121
  CLRC
  MOVA,R2
SUBB A,#30
  MOVR1,A
M121:
CJNE R3,#00H,M122  ;R2減12月天數(shù)
LJMP Y12           ;不夠減,判,R3為0否
M122:
  MOVA,R2           ;不為0,R3加到R2中
  ADDA,R3           ;再讓12月減
  MOVR2,A           ;還不夠,則轉(zhuǎn)Y12
  MOVR3,#00H
LJMP M12
Y1:
  MOVA,R2
  MOVR0,A       ;R2中為日的值
LCALL D_BCD
  MOV56H,A
  MOV57H,#01H
  CLRF0    ;非閏月
LJMP S_PLAY
Y2:
CJNE R2,#00H,Y21
  MOVA,R6      ;R2中為0,則為前一個月
  MOV56H,#29H  ;的的最后一天
  JBACC.6,Y22
  MOV56H,#30H
Y22:
  MOV57H,#01H
  CLRF0
LJMP S_PLAY
Y21:
  MOVA,R2
  MOVR0,A     ;R2中為日的值
LCALL D_BCD
  MOV56H,A
  MOV57H,#02H
  CLRF0
LJMP S_PLAY
RY2:
CJNE R2,#00H,RY21
  MOV56H,#29H  ;R2中為0,則為前一個月
  MOVA,R6      ;的的最后一天
  JBACC.5,RY22
  MOV56H,#30H
RY22:
  MOV57H,#02H
  CLRF0
LJMP S_PLAY
RY21:
  MOVA,R2     ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#02H
SETB F0      ;閏月
LJMP S_PLAY
Y3:
CJNE R2,#00H,Y31
LCALL CHECKRE     ;查前一個月是否為閏月
CJNE A,#02H,Y32
  MOV56H,#29H      ;前一個月是閏月
  MOVA,R4
  ANLA,#0FH         ;R2中為0,則為前一個月
  JNZY33            ;的的最后一天
  MOV56H,#30H
  MOV57H,#02H
SETB F0
LJMP S_PLAY
Y33:
  MOV57H,#02H
SETB F0
LJMP S_PLAY
Y32:
  MOV56H,#29H  ;前一個月不是閏月
  MOVA,R6
  JBACC.5,Y34
  MOV56H,#30H
Y34:
  MOV57H,#02H
  CLRF0
LJMP S_PLAY
Y31:
  MOVA,R2
  MOVR0,A      ;R2中為日的值
LCALL D_BCD
  MOV56H,A
  MOV57H,#03H
  CLRF0
LJMP S_PLAY
RY3:
CJNE R2,#00H,RY31
  MOV56H,#29H
  MOVA,R6
  JBACC.4,RY32   ;R2中為0,則為前一個月
  MOV56H,#30H    ;的的最后一天
RY32:
  MOV57H,#03H
  CLRF0
LJMP S_PLAY
RY31:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#03H
SETB F0
LJMP S_PLAY
Y4:
CJNE R2,#00H,Y41
LCALL CHECKRE    ;查前一個月是否為閏月
CJNE A,#03H,Y42
  MOV56H,#29H     ;前一個月是閏月
  MOVA,R4         ;R2中為0,則為前一個月
  ANLA,#0FH       ;的最后一天
  JNZY43
  MOV56H,#30H
  MOV57H,#03H
SETB F0
LJMP S_PLAY
Y43:
  MOV57H,#03H
SETB F0
LJMP S_PLAY
Y42:
  MOV56H,#29H  ;前一個月不是閏月
  MOVA,R6
  JBACC.4,Y44
  MOV56H,#30H
Y44:
  MOV57H,#03H
  CLRF0
LJMP S_PLAY
Y41:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#04H
  CLRF0
LJMP S_PLAY
RY4:
CJNE R2,#00H,RY41
  MOV56H,#29H    ;R2中為0,則為前一個月
  MOVA,R6        ;的的最后一天
  JBACC.2,RY42
  MOV 56H,#30H
RY42:
  MOV57H,#04H
  CLRF0
LJMP S_PLAY
RY41:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#04H
SETB F0
LJMP S_PLAY
Y5:
CJNE R2,#00H,Y51
LCALL CHECKRE      ;查前一個月是否為閏月
CJNE A,#04H,Y52
  MOV56H,#29H       ;前一個月是閏月
  MOVA,R4           ;R2中為0,則為前一個月
  ANLA,#0FH         ;的最后一天
  JNZY53
  MOV56H,#30H
  MOV57H,#04H
SETB F0
LJMP S_PLAY
Y53:
  MOV57H,#04H
SETB F0
LJMP S_PLAY
Y52:
  MOV56H,#29H   ;前一個月不是閏月
  MOVA,R6
  JBACC.2,Y54
  MOV56H,#30H
Y54:
  MOV57H,#04H
  CLRF0
LJMP S_PLAY
Y51:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#05H
  CLRF0
LJMP S_PLAY
RY5:
CJNE R2,#00H,RY51
  MOV56H,#29H    ;R2中為0,則為前一個月
  MOVA,R6        ;的最后一天
  JBACC.1,RY52
  MOV56H,#30H
RY52:
  MOV57H,#05H
  CLRF0
LJMP S_PLAY
RY51:
  MOVA,R2     ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#05H
SETB F0
LJMP S_PLAY
Y6:
CJNE R2,#00H,Y61
LCALL CHECKRE   ;查前一個月是否為閏月
CJNE A,#05H,Y62
  MOV56H,#29H    ;前一個月是閏月
  MOVA,R4        ;R2中為0,則為前一個月
  ANLA,#0FH      ;的最后一天
  JNZY63
  MOV56H,#30H
  MOV57H,#05H
SETB F0
LJMP S_PLAY
Y63:
  MOV57H,#05H
SETB F0
LJMP S_PLAY
Y62:
  MOV56H,#29H    ;前一個月不是閏月
  MOVA,R6
  JBACC.1,Y64
  MOV56H,#30H
Y64:
  MOV57H,#05H
  CLRF0
LJMP S_PLAY
Y61:
  MOVA,R2        ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#06H
  CLRF0
LJMP S_PLAY
RY6:
CJNE R2,#00H,RY61
  MOV56H,#29H    ;R2中為0,則為前一個月
  MOVA,R6        ;的最后一天
  JBACC.0,RY62
  MOV56H,#30H
RY62:
  MOV57H,#06H
  CLRF0
LJMP S_PLAY
RY61:
  MOVA,R2     ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#06H
SETB F0
LJMP S_PLAY
Y7:
CJNE R2,#00H,Y71
LCALL CHECKRE    ;查前一個月是否為閏月
CJNE A,#06H,Y72
  MOV56H,#29H     ;前一個月是閏月
  MOVA,R4         ;R2中為0,則為前一個月
  ANLA,#0FH       ;的最后一天
  JNZY73
  MOV56H,#30H
  MOV57H,#06H
SETB F0
LJMP S_pLAY
Y73:
  MOV57H,#06H
SETB F0
LJMP S_PLAY
Y72:
  MOV56H,#29H   ;前一個月不是閏月
  MOVA,R6
  JBACC.0,Y74
  MOV56H,#30H
Y74:
  MOV57H,#06H
  CLRF0
LJMP S_PLAY
Y71:
  MOVA,R2        ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#07H
  CLRF0
LJMP S_PLAY
RY7:
CJNE R2,#00H,RY71
  MOV56H,#29H    ;R2中為0,則為前一個月
  MOVA,R5        ;的最后一天
  JBACC.6,RY72
  MOV56H,#30H
RY72:
  MOV57H,#07H
  CLRF0
LJMP S_PLAY
RY71:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#07H
SETB F0
LJMP S_PLAY
Y8:
CJNE R2,#00H,Y81
LCALL CHECKRE    ;查前一個月是否為閏月
CJNE A,#07H,Y82
  MOV56H,#29H     ;前一個月是閏月
  MOVA,R4         ;R2中為0,則為前一個月
  ANLA,#0FH       ;的最后一天
  JNZY83
  MOV56H,#30H
  MOV57H,#07H
SETB F0
LJMP S_PLAY
Y83:
  MOV57H,#07H
SETB F0
LJMP S_PLAY
Y82:
  MOV56H,#29H  ;前一個月不是閏月
  MOVA,R5
  JBACC.6,Y84
  MOV56H,#30H
Y84:
  MOV57H,#07H
  CLRF0
LJMP S_PLAY
Y81:
  MOVA,R2     ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#08H
  CLRF0
LJMP S_PLAY
Y9:
CJNE R2,#00H,Y91
  MOV56H,#29H   ;R2中為0,則為前一個月
  MOVA,R5       ;的最后一天
  JBACC.5,Y92
  MOV56H,#30H
Y92:
  MOV57H,#08H
  CLRF0
LJMP S_PLAY
Y91:
  MOVA,R2     ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#09H
  CLRF0
LJMP S_PLAY
RY9:
CJNE R2,#00H,RY91
  MOV56H,#29H    ;R2中為0,則為前一個月
  MOVA,R5        ;的最后一天
  JBACC.4,RY92
  MOV56H,#30H
RY92:
  MOV57H,#09H
  CLRF0
LJMP S_PLAY
RY91:
  MOVA,R2      ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#09H
SETB F0
LJMP S_PLAY
Y10:
CJNE R2,#00H,Y101
LCALL CHECKRE    ;查前一個月是否為閏月
CJNE A,#09H,Y102
  MOV56H,#29H     ;前一個月是閏月
  MOVA,R4         ;R2中為0,則為前一個月
  ANLA,#0FH       ;的最后一天
  JNZY103
  MOV56H,#30H
  MOV57H,#09H
SETB F0
LJMP S_PLAY
Y103:
  MOV57H,#09H
SETB F0
LJMP S_PLAY
Y102:
  MOV56H,#29H    ;前一個月不是閏月
  MOVA,R5
  JBACC.4,Y104
  MOV56H,#30H
Y104:
  MOV57H,#09H
  CLRF0
LJMP S_PLAY
Y101:
  MOVA,R2       ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#10H
  CLRF0
LJMP S_PLAY
Y11:
CJNE R2,#00H,Y111
  MOV56H,#29H     ;R2中為0,則為前一個月
  MOVA,R5         ;的最后一天
  JBACC.2,Y112
  MOV56H,#30H
Y112:
  MOV57H,#10H
  CLRF0
LJMP S_PLAY
Y111:
  MOVA,R2    ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#11H
  CLRF0
LJMP S_PLAY
Y12:
CJNE R2,#00H,Y121
  MOV56H,#29H     ;R2中為0,則為前一個月
  MOVA,R5          ;的最后一天
  JBACC.1,Y122
  MOV56H,#30H
Y122:
  MOV57H,#11H
  CLRF0
LJMP S_PLAY
Y121:
  MOVA,R2    ;R2中為日的值
  MOVR0,A
LCALL D_BCD
  MOV56H,A
  MOV57H,#12H
  CLRF0
LJMP S_PLAY
S_PLAY:
  MOVR0,57H
LCALL DIVIDE  ;月分離送顯示緩存
  MOV52H,R1
  MOV53H,R2
  MOVR0,56H
LCALL DIVIDE  ;日分離送顯示緩存
  MOV50H,R1
  MOV51H,R2
  RET
;查是否閏月程序;;
CHECKRE:
  MOVA,R4
SWAP A
  ANLA,#0FH
  RET
;10進(jìn)制轉(zhuǎn)換為BCD碼程序;
D_BCD:
  MOVA,R0
  MOVB,#10
  DIVAB
SWAP A
  ORLA,B
  RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;顯示程序;;;
DISPLAY:
  MOVA,10H
  ANLA,#00001111B
  MOV59H,A
  MOVA,76H               ;第八列LED
  ANLA,#00001111B
SWAP A
  ADDA,59H
  MOVP1,A
  MOVA,70H
  ANLA,#00001111B
  ADDA,#01110000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,10H
  ANLA,#11110000B
SWAP A
  MOV5AH,A
  MOVA,77H              ;第七列LED
  ANLA,#00001111B
SWAP A
  ADDA,5AH
  MOVP1,A
  MOVA,71H
  ANLA,#00001111B
  ADDA,#01100000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,56H             ;第六列LED
SWAP A
  ANLA,#11110000B
  ADDA,79H
SWAP A
  MOVP1,A
  MOVA,72H
  ANLA,#00001111B
  ADDA,#01010000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,56H            ;第五列LED
  ANLA,#11110000B
  ADDA,7AH
SWAP A
  MOVP1,A
  MOVA,73H
  ANLA,#00001111B
  ADDA,#01000000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,57H            ;第四列LED
SWAP A
  ANLA,#11110000B
  ADDA,7BH
SWAP A
  MOVP1,A
  MOVA,74H
  ANLA,#00001111B
  ADDA,#00110000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,57H            ;第三列LED
  ANLA,#11110000B
  ADDA,7CH
SWAP A
  MOVP1,A
  MOVA,75H
  ANLA,#00001111B
  ADDA,#00100000B
  MOVP2,A
LCALL DL1MS
  MOVP1,#0FFH
  MOVP1,#00001111B
  MOVP2,#00011111B    ;第二列LED
LCALL DL1MS
  MOVP1,#0FFH
  MOVA,78H            ;第一列LED
  ANLA,#00001111B
  ADDA,#00100000B
  MOVP1,A
  MOVP2,#00001111B
LCALL DL1MS
  MOVP1,#0FFH
  RET
ZJ:
  MOV01H,#150
ZZZ1:
  MOVP2,#00001000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#00011000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#00101000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#00111000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#01001000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#01011000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#01101000B
  MOVP1,#88H
LCALL DL1MS
  MOVP2,#01111000B
  MOVP1,#88H
LCALL DL1MS
DJNZ 01H,ZZZ1
  MOVP1,#0FFH
  RET
DL1MS:
  MOVR6,#14H
DL1:
  MOVR7,#19H
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
  RET
;數(shù)據(jù)表~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TAB:
  DB35,15H,51H,00H,23,11H,52H,41H,42,12H,65H,00H
  DB31,11H,32H,00H,21,42H,52H,21H,39,52H,25H,00H
  DB28,25H,05H,71H,48,66H,42H,00H,37,33H,22H,00H
  DB25,15H,24H,51H,44,05H,52H,00H,33,22H,65H,00H
  DB22,21H,25H,41H,40,24H,52H,00H,30,52H,42H,91H
  DB49,55H,05H,00H,38,26H,44H,00H,27,53H,50H,60H
  DB46,53H,24H,00H,35,25H,54H,00H,24,41H,52H,41H
  DB42,45H,25H,00H,31,24H,52H,00H,21,51H,12H,21H
  DB40,55H,11H,00H,28,26H,21H,61H,47,26H,61H,00H
  DB36,13H,31H,00H,25,05H,31H,51H,43,12H,54H,00H
  DB33,51H,25H,00H,22,42H,25H,31H,41,32H,22H,00H
  DB30,55H,02H,71H,49,55H,22H,00H,38,26H,62H,00H
  DB27,13H,64H,60H,45,13H,32H,00H,34,12H,55H,00H
  DB23,10H,53H,51H,42,22H,45H,00H,31,52H,22H,00H
  DB21,52H,44H,21H,40,55H,44H,00H,29,26H,50H,71H
  DB47,26H,64H,00H,36,25H,32H,00H,25,23H,32H,50H
  DB44,44H,55H,00H,32,24H,45H,00H,22,55H,11H,30H
  END

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2017-12-10 17:52 | 只看該作者
本帖最后由 zl2168 于 2017-12-10 20:34 編輯

電子鐘雙解c和匯編程序。《80C51單片機(jī)實(shí)用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9, 用于學(xué)習(xí)51單片機(jī)原理,程序(雙解c和匯編)語句條條有注解,便于閱讀理解,便于自學(xué),可從零基礎(chǔ)c語言開始學(xué)習(xí)。
模擬電子鐘(由80C51定時器產(chǎn)生秒時基)
實(shí)例94 模擬電子鐘(由80C51定時器產(chǎn)生秒時基).rar (43.05 KB, 下載次數(shù): 4)

開機(jī)顯示PC機(jī)時分秒的時鐘1302 實(shí)例92 開機(jī)顯示PC機(jī)時分秒的時鐘1302(6位LED數(shù)碼管顯示).rar (50.05 KB, 下載次數(shù): 3)
回復(fù)

使用道具 舉報(bào)

板凳
ID:111634 發(fā)表于 2017-12-10 21:45 | 只看該作者
你的匯編程序也太長了,顯然沒編好。
回復(fù)

使用道具 舉報(bào)

地板
ID:111634 發(fā)表于 2017-12-10 21:48 | 只看該作者
實(shí)例93  具有校正功能的時鐘1302(LED數(shù)碼管顯示)
Proteus仿真一下,確認(rèn)有效。
實(shí)例93 帶校正時分秒的時鐘1302(6位LED數(shù)碼管顯示).rar (732.75 KB, 下載次數(shù): 2)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,電路與程序真實(shí)可靠可信可行。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報(bào)

5#
ID:111634 發(fā)表于 2017-12-10 21:50 | 只看該作者
實(shí)例91  具有校正功能的時鐘1302(LCD1602顯示)
先Proteus仿真,確認(rèn)有效。
實(shí)例91 帶校正時鐘1302(LCD1602顯示).rar (52.68 KB, 下載次數(shù): 2)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1,書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費(fèi)下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色一情一乱一伦一区二区三区 | 精品国产一区二区三区性色av | 一级a爱片性色毛片免费 | 亚洲精品久久久久久一区二区 | 日韩色在线 | 欧美www在线 | 国产在线观看不卡一区二区三区 | 日韩视频一区二区三区 | av大片| 日韩高清三区 | 国产91网站在线观看 | 91在线观看 | 亚洲天堂久久 | 女生羞羞网站 | 国内自拍视频在线观看 | 很很干很很日 | 国产区视频在线观看 | 亚洲精品成人在线 | 国产精品久久久久久久久久久久久 | 韩日精品在线观看 | 国产精品大片在线观看 | 国产精品日日摸夜夜添夜夜av | 精品在线一区二区 | 青青草视频网站 | 久久久久成人精品 | 91视频精选 | 国产精品精品久久久 | av中文在线播放 | 日韩一 | 亚洲国产中文字幕 | 欧美久久久网站 | 国产欧美精品一区二区三区 | 久久精品免费 | 羞羞视频网站在线观看 | 国产a爽一区二区久久久 | 免费在线播放黄色 | 三级黄视频在线观看 | 综合久久99| 久久久网 | 日韩色图在线观看 | 国产色 |