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

📄 ds1302-dsy.lst

📁 数字电压表 AD芯片: 采用8位串行A/D转换器ADC0832。 ● 8位分辨率
💻 LST
📖 第 1 页 / 共 5 页
字号:
0208                 224     READ_01:
0208 13              225               RRC  A
0209 00              226               NOP               ;先传输地址到DS1302
020A 9291            227               MOV  IO_DATA,C
020C 00              228               NOP
020D 00              229               NOP
020E D290            230               SETB  SCLK
0210 00              231               NOP
0211 00              232               NOP
0212 C290            233               CLR  SCLK
0214 00              234               NOP
0215 00              235               NOP
0216 DAF0            236               DJNZ  R2,READ_01
0218 00              237               NOP
0219 00              238               NOP
021A D291            239               SETB  IO_DATA
021C E4              240               CLR  A
021D C3              241               CLR  C
021E 7A08            242               MOV  R2,#08H
0220                 243     READ_02:
0220 C290            244               CLR  SCLK
0222 00              245               NOP
0223 00              246               NOP         
0224 A291            247               MOV  C,IO_DATA
0226 00              248               NOP
0227 00              249               NOP         
0228 13              250               RRC  A                ;再从DS1302接收数据
0229 00              251               NOP
022A 00              252               NOP          
022B D290            253               SETB  SCLK
022D 00              254               NOP
022E 00              255               NOP          
022F DAEF            256               DJNZ  R2,READ_02
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     5

0231 F8              257               MOV  R0,A
0232 C292            258               CLR  RST
0234 22              259               RET
                     260     ;==============================================
                     261     ;实时时间、日期数据处理子程序
                     262     ;==============================================
0235                 263      CHULI:
0235 E540            264               MOV A,40H               ;处理秒数据
0237 540F            265               ANL A,#0FH
0239 F550            266               MOV 50H,A
023B F570            267               MOV 70H,A
023D E540            268               MOV A,40H
023F 54F0            269               ANL A,#11110000B
0241 C4              270               SWAP A
0242 F551            271               MOV 51H,A
0244 F571            272               MOV 71H,A
                     273     ;---------------------------------------------
0246 E541            274               MOV A,41H               ;处理分数据
0248 540F            275               ANL A,#0FH
024A F552            276               MOV 52H,A
024C F572            277               MOV 72H,A
024E E541            278               MOV A,41H
0250 54F0            279               ANL A,#11110000B
0252 C4              280               SWAP A
0253 F553            281               MOV 53H,A
0255 F573            282               MOV 73H,A
                     283     ;---------------------------------------------
0257 E542            284               MOV A,42H               ;处理时数据
0259 540F            285               ANL A,#0FH
025B F554            286               MOV 54H,A
025D F574            287               MOV 74H,A
025F E542            288               MOV A,42H
0261 54F0            289               ANL A,#11110000B
0263 C4              290               SWAP A
0264 F555            291               MOV 55H,A
0266 F575            292               MOV 75H,A
                     293     ;----------------------------------------------
0268 E543            294               MOV A,43H               ;处理日数据
026A 540F            295               ANL A,#0FH
026C F560            296               MOV 60H,A
026E F576            297               MOV 76H,A
0270 E543            298               MOV A,43H
0272 54F0            299               ANL A,#11110000B
0274 C4              300               SWAP A
0275 F561            301               MOV 61H,A
0277 F577            302               MOV 77H,A
                     303     ;---------------------------------------------
0279 E544            304               MOV A,44H               ;处理月数据
027B 540F            305               ANL A,#0FH
027D F562            306               MOV 62H,A
027F F578            307               MOV 78H,A
0281 E544            308               MOV A,44H
0283 54F0            309               ANL A,#11110000B
0285 C4              310               SWAP A
0286 F563            311               MOV 63H,A
0288 F579            312               MOV 79H,A
                     313     ;---------------------------------------------
028A E545            314               MOV A,45H               ;处理年数据
028C 540F            315               ANL A,#0FH
028E F564            316               MOV 64H,A
0290 F57A            317               MOV  7AH,A
0292 E545            318               MOV A,45H
0294 54F0            319               ANL A,#11110000B
0296 C4              320               SWAP A
0297 F565            321               MOV 65H,A
0299 F57B            322               MOV 7BH,A
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     6

                     323     ;----------------------------------------------
029B E546            324               MOV A,46H               ;处理周数据
029D F566            325               MOV 66H,A
029F F57C            326               MOV 7CH,A
02A1 22              327               RET
                     328     ;=============================================
                     329     ;实时时间、日期查表取数子程序
                     330     ;=============================================
02A2                 331     DISP:     ;MOV  R0,#TIME_DATA
02A2 7B06            332               MOV R3,#06H
02A4 E6              333     DISP1:    MOV A,@R0
02A5 9006FA          334               MOV DPTR,#TAB_NU
02A8 93              335               MOVC A,@A+DPTR
02A9 F6              336               MOV @R0,A
02AA 08              337               INC R0
02AB DBF7            338               DJNZ R3,DISP1
02AD 22              339               RET
                     340     ;====================================================
                     341     ;时间、日期显示子程序
                     342     ;====================================================
02AE                 343     TIME_DISPLAY:
                     344               ;MOV  R0,#TIME_DATA      ;取得显示单元首地址
02AE 797F            345               MOV  R1,#07FH          ;从第一个数码管开始
02B0 7A08            346               MOV  R2,#08H           ;共8个数码管
                     347     
02B2 8680            348     DISLP:    MOV  P0,@R0            ;获得当前单元数据
02B4 E9              349               MOV  A,R1
02B5 F5A0            350               MOV  P2,A             ;数码显示
02B7 20E505          351               JB  ACC.5,DISLP1      ;第三位数码管显示 -
02BA 7580BF          352               MOV  P0,#0BFH
02BD 8009            353               JMP  DISLP3
02BF 20E205          354     DISLP1:   JB  ACC.2,DISLP2      ;第六位数码管显示 -
02C2 7580BF          355               MOV  P0,#0BFH
02C5 8001            356               JMP  DISLP3
02C7 08              357     DISLP2:   INC  R0
02C8 E9              358     DISLP3:   MOV  A,R1              ;为下一个数准备
02C9 03              359               RR  A                  ;下一个单元
02CA F9              360               MOV  R1,A              ;保存
02CB 1202D1          361               LCALL  DELAY           ;为了保证数码管亮度,延时
02CE DAE2            362               DJNZ  R2,DISLP        ;重复显示,直到全部数据刷新过
02D0 22              363               RET                   ;返回
                     364     
02D1                 365     DELAY:
02D1 7C0A            366               MOV  R4,#0AH
02D3 7D64            367       L15:    MOV  R5,#64H
02D5 DDFE            368       L16:    DJNZ  R5,L16
02D7 DCFA            369               DJNZ  R4,L15
02D9 22              370               RET
                     371     ;******************************************************
02DA                 372     SET_KEY:
02DA D294            373              SETB  K1             ;增加键
02DC D295            374              SETB  K2             ;减少键
02DE D296            375              SETB  K3             ;选择键
02E0 D297            376              SETB  K4             ;定时设定功能键
02E2 00              377              NOP
02E3 209705          378              JB  K4,KEY01
02E6 1206DC          379              LCALL  BEEP_BL
02E9 8011            380              JMP  DS_KEY          ;进入定时值设定子程序
02EB 209505          381     KEY01:   JB  K2,KEY02
02EE 1206DC          382              LCALL  BEEP_BL
02F1 8014            383              JMP  SET_TIME        ;进入时间设定子程序
02F3 209605          384     KEY02:   JB  K3,KEY03
02F6 1206DC          385              LCALL  BEEP_BL
02F9 B200            386              CPL  20H.0          ;止闹标记取反
02FB 22              387     KEY03:   RET
                     388     
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     7

                     389     ;-----------------------------------------------------
02FC                 390     DS_KEY:
02FC D1A8            391              CALL  DS_DELAY
02FE 3097FD          392              JNB  K4,$          
0301 120534          393              LCALL  DSSET
0304 D1A8            394              CALL  DS_DELAY
0306 22              395              RET
                     396     ;==============================================
                     397     ;实时时间设定子程序
                     398     ;K1为加键、K2为减键、K3为选择键
                     399     ;==============================================
0307                 400     SET_TIME:
0307 798E            401              MOV  R1,#8EH          ;写保护寄存器
0309 7800            402              MOV  R0,#00H          ;允许写入
030B 1201C2          403              LCALL WRITE
                     404     
030E 7980            405              MOV  R1,#80H          ;写秒寄存器
0310 7880            406              MOV  R0,#80H          ;停止振荡器工作
0312 1201C2          407              LCALL WRITE
                     408     
0315 D28C            409              SETB  TR0
                     410     
0317 D1BA            411     K001:    CALL TIME_DELAY       ;校时
0319 3096FB          412              JNB K3,K001           ;K3为位移键
031C                 413     K010:
031C 5135            414              CALL  CHULI
031E 300A08          415              JNB  0AH,KH01
0321 857F54          416              MOV  54H,7FH          ;送入熄灭符
0324 857F55          417              MOV  55H,7FH
0327 8006            418              JMP  KH02
0329 857454          419      KH01:   MOV  54H,74H          ;送实时值
032C 857555          420              MOV  55H,75H          ;送实时值
032F 7850            421      KH02:   MOV  R0,#TIME_DATA
0331 51A2            422              CALL  DISP
0333 7850            423              MOV  R0,#TIME_DATA
0335 51AE            424              CALL  TIME_DISPLAY
0337 309408          425              JNB  K1,K011A
033A 30951E          426              JNB  K2,K011B
033D 30963E          427              JNB  K3,K002
0340 80DA            428              JMP  K010
0342                 429     K011A:
0342 E542            430              MOV  A,42H
0344 2401            431              ADD A,#01H
0346 D4              432              DA A
0347 F542            433              MOV 42H,A
0349 6424            434              XRL  A,#24H
034B 7003            435              JNZ K012A
034D 754200          436              MOV  42H,#00H
0350 7984            437     K012A:   MOV  R1,#84H           ;写时寄存器
0352 A842            438              MOV  R0,42H
0354 1201C2          439              LCALL WRITE
0357 D1BA            440              CALL  TIME_DELAY
0359 80C1            441              JMP  K010
                     442     
035B                 443     K011B:
035B E542            444              MOV  A,42H
035D 6400            445              XRL  A,#00H
035F 600F            446              JZ  K012B
0361 D3              447              SETB  C              ;求补运算
0362 E4              448              CLR  A
0363 3499            449              ADDC  A,#99H         ;加99
0365 9401            450              SUBB  A,#01H         ;减去减数
0367 2542            451              ADD   A,42H          ;加被减数
0369 D4              452              DA A                 ;十进制调整
036A F542            453              MOV 42H,A            ;
036C 6400            454              XRL  A,#00H
A51 MACRO ASSEMBLER  DS1302_DSY                                                           07/21/2006 08:51:55 PAGE     8

⌨️ 快捷键说明

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