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

📄 sz03.lst

📁 51单片机开发入门与典型实例
💻 LST
📖 第 1 页 / 共 3 页
字号:
A51 MACRO ASSEMBLER  SZ03                                                                 01/04/2007 21:53:58 PAGE     4

00DF 85E0A0          191         MOV  P2, ACC     ;由P2送出扫描输出信号  
00E2 7D02            192         MOV  R5, #2      ;延迟一会儿
00E4 3150            193         ACALL  DELAY
                     194      ;改变扫描码 EX:XXXX1011 
00E6 03              195         RR   A           ;累加器向右移动一位
00E7 08              196         INC  R0          ;显示器显示缓冲区地址加1
00E8 DAEE            197         DJNZ R2, S1      ;循环判断是否继续执行
00EA 22              198         RET
                     199      
                     200      ;---―― 实现调整时间子程序 ――――――
                     201     
                     202      ;设置目前时间
00EB                 203      SET_TIME:
00EB C28C            204         CLR   TR0          ;定时器动作暂停
00ED 753600          205         MOV   SEC, #0      ;秒钟变量清除为0
00F0                 206       L0:
00F0 11D1            207         ACALL  DISP        ;扫描显示
                     208      
00F2 20A513          209         JB   K2,  L1       ;未按下K2键则继续扫描
00F5 30A5FD          210         JNB  K2,  $        ;有按下则等待放开来
                     211        ;K2小时调整   
00F8 0534            212         INC  HOUR          ;小时计数加1
00FA E534            213         MOV  A, HOUR
00FC B41803          214         CJNE  A,#24, L11   ;是否24H到了
00FF 753400          215         MOV  HOUR, #0      ;小时变量清除为0
0102                 216       L11:
0102 119E            217         ACALL  CONV        ;转换显示数据
0104 11D1            218         ACALL  DISP        ;扫描显示
0106 80E8            219         JMP    L0          ;继续程序执行
                     220      
0108 20A613          221       L1:JB  K3, L2        ;未按下K3键则继续扫描
010B 30A6FD          222          JNB  K3,$      ;有按下则等待放开来
                     223        ;K3分钟调整.
010E 0535            224         INC  MIN           ;分钟计数加1
0110 E535            225         MOV  A,  MIN
0112 B43C03          226         CJNE  A,#60, L21   ;是否60 min到了
0115 753500          227         MOV  MIN, #0       ;分钟变量清除为0
0118                 228       L21:
0118 119E            229         ACALL  CONV        ;转换显示数据
011A 11D1            230         ACALL  DISP        ;扫描显示
011C 80D2            231         JMP    L0          ;继续程序执行
                     232      
011E 20A7CF          233       L2: JB   K4,L0       ;未按下K4键则继续扫描
0121 30A7FD          234         JNB    K4, $       ;有按下则等待放开来
0124 3138            235         ACALL  BZ          ;压电喇叭鸣响一声
                     236        ;K4设置完成
0126 3145            237         ACALL  LED_BL      ;LED闪动
0128 D28C            238         SETB   TR0         ;启动定时器
012A 22              239         RET 
                     240     
                     241      ;----―喇叭和指示灯等其它子程序 ----――
                     242     
                     243      ;计时单元清零
012B                 244      INIT:              
012B 753700          245         MOV  DEDA,   #0   ;5ms计数值清除为0
012E 753600          246         MOV  SEC,    #0   ;秒钟变量清除为0
0131 753500          247         MOV  MIN,    #0   ;分钟变量清除为0
0134 753400          248         MOV  HOUR,   #0   ;小时变量清除为0
0137 22              249         RET
                     250      ;―――――――――――――
                     251      ;压电喇叭
0138                 252       BZ:                  ;压电喇叭鸣响一声
0138 7EFA            253           MOV   R6, #250
013A 315B            254       B1: ACALL DEX
013C B2B4            255           CPL   SPK
013E DEFA            256           DJNZ  R6,B1
A51 MACRO ASSEMBLER  SZ03                                                                 01/04/2007 21:53:58 PAGE     5

0140 7D32            257           MOV   R5, #50 ;#10
0142 3150            258           ACALL  DELAY
0144 22              259           RET
                     260      
                     261      ;----------―――
                     262      ;工作指示
0145                 263       LED_BL:             ;工作指示灯闪烁
0145 7C06            264           MOV   R4,#6
0147 B290            265       LE1:CPL   WLED      ;位反向
0149 7D19            266           MOV   R5,#25 ;#5
014B 3150            267           ACALL  DELAY
014D DCF8            268           DJNZ  R4, LE1   ;延迟50ms
014F 22              269           RET
                     270      ;----------―――
                     271      ;延时子程序
0150                 272       DELAY:               ;;总延迟时间 R5* 2ms
0150 7E0A            273          MOV   R6,#10 ;#50
0152 7F64            274       D1:MOV   R7,#100
0154 DFFE            275          DJNZ  R7,$
0156 DEFA            276          DJNZ  R6,D1
0158 DDF6            277          DJNZ  R5,DELAY
015A 22              278          RET 
                     279      ;----------―――
                     280      ; 压电喇叭短暂延时子程序
015B 7FB4            281      DEX:  MOV   R7,#180   ;短暂延时
015D 00              282       DE1: NOP
015E DFFD            283            DJNZ  R7, DE1
0160 22              284            RET
                     285     
                     286     ;-------―― 增加定时闹铃程序部分 -------――
                     287      ;―――――――― 设置闹铃时间 ―――――――――
                     288      ;设置闹铃时间
0161                 289      SET_ATIME:
0161 319C            290          ACALL  CONVA      ;加载闹铃时间数据
0163                 291       N0:
0163 11D1            292          ACALL  DISP
                     293        ;-----------
0165 20A513          294          JB   K2, N1       ;未按下K2键则继续扫描
0168 30A5FD          295          JNB  K2, $        ;有按下则等待放开来
                     296      ;K2调整小时
016B 0538            297          INC  HH           ;小时数加1
016D E538            298          MOV  A, HH
016F B41803          299          CJNE A, #24,N11   ;是否24h到了
0172 753800          300          MOV  HH,#0        ;小时请为0
0175                 301        N11:
0175 319C            302          ACALL  CONVA      ;加载闹铃时间数据
0177 11D1            303          ACALL  DISP       ;扫描显示
0179 80E8            304          JMP    N0         ;继续按键扫描
                     305       ;------------
017B 20A613          306       N1: JB K3, N2        ;未按下K3键则继续扫描
017E 30A6FD          307          JNB K3, $         ;有按下则等待放开来
                     308     ;K3调整分钟
0181 0539            309         INC  MM            ;调整分钟数
0183 E539            310         MOV  A,MM          ;分钟数加1
0185 B43C03          311         CJNE A, #60,N21    ;是否60min到了
0188 753900          312         MOV  MM, #0        ;分钟数请为0
018B                 313       N21:
018B 319C            314         ACALL  CONVA       ;加载闹铃时间数据
018D 11D1            315         ACALL  DISP        ;扫描显示
018F 80D2            316         JMP    N0          ;继续按键扫描
                     317       ;------------
0191 20A7CF          318       N2: JB   K4, N0      ;未按下K4键则继续扫描
0194 30A7FD          319         JNB    K4, $       ;等K4键放开
                     320       ;K4设置完成......
0197 3145            321         ACALL  LED_BL      ;LED闪动
0199 119E            322         ACALL  CONV        ;加载现在时间数据
A51 MACRO ASSEMBLER  SZ03                                                                 01/04/2007 21:53:58 PAGE     6

019B 22              323         RET
                     324     
                     325     ;―――――――― 加载闹铃时间数据 ―――――――
                     326     
                     327     ;转换 时时:分分 数据
019C                 328     CONVA:
                     329       ;转换小时数据
019C E538            330          MOV  A,  HH
019E 75F00A          331          MOV  B,  #10
01A1 84              332          DIV  AB
                     333       ;-----------
01A2 9000C1          334          MOV  DPTR,#TABLE ;查表转换
01A5 93              335          MOVC  A,  @A+DPTR
01A6 F530            336          MOV  BUF,  A
                     337       ;-----------
01A8 E5F0            338          MOV  A, B
01AA 93              339          MOVC  A,  @A+DPTR
01AB F531            340          MOV  BUF+1,  A
                     341       ;转换分钟数据
01AD E539            342          MOV  A,  MM
01AF 75F00A          343          MOV  B,  #10
01B2 84              344          DIV  AB
                     345       ;-----------
01B3 9000C1          346          MOV  DPTR,#TABLE ;查表转换
01B6 93              347          MOVC  A,  @A+DPTR
01B7 F532            348          MOV  BUF+2,  A
                     349       ;-----------
01B9 E5F0            350          MOV  A, B
01BB 93              351          MOVC  A,  @A+DPTR
01BC F533            352          MOV  BUF+3,  A
01BE 22              353          RET
                     354      
                     355      ;―――――――― 检查闹铃时间处理 ――――――――
                     356     
                     357     ;检查是否启动闹铃
01BF                 358      TIME_PRO: 
01BF 200001          359          JB  ALB, TI3
01C2 22              360          RET
                     361     ;――――――――――――――
                     362     
                     363     ;检查闹铃时间是否到了
01C3                 364      TI3:
01C3 E534            365          MOV  A, HOUR
01C5 8538F0          366          MOV  B,HH
01C8 B5F00A          367          CJNE A, B, BK      ;检查闹铃小时时间
                     368         ;-----------
01CB E535            369          MOV  A, MIN
01CD 8539F0          370          MOV  B,MM
01D0 B5F002          371          CJNE  A, B, BK     ;检查闹铃分钟时间
                     372         ;-----------
01D3 31D6            373          ACALL  TIME_OUT    ;执行检查闹铃时间到了处理
01D5                 374       BK:
01D5 22              375          RET
                     376     
                     377      ;-------- 执行闹铃时间处理 ――――――――
                     378     
01D6                 379      TIME_OUT:              ;所设置的闹铃数据到了
01D6 3145            380        X1: ACALL LED_BL     ;LED闪动
01D8 3138            381          ACALL  BZ          ;压电喇叭发出哗的一声
                     382         ;按下K4键停止闹铃 
01DA 20A7F9          383          JB    K4, X1       ;等待是否按下K4键
01DD 30A7FD          384          JNB   K4,$         ;若有按下键则等待按键放开来
01E0 3145            385          ACALL  LED_BL      ;LED闪动
01E2 C200            386          CLR   ALB          ;清除闹铃位
01E4 22              387          RET

⌨️ 快捷键说明

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