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

📄 lcd2401.lst

📁 51单片机开发入门与典型实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
0142                 228       MEU:                   
0142 90014A          229         MOV  DPTR,#MENU0        ;存入工作菜单 
0145 7401            230         MOV  A,#1               ;第一行
0147 319F            231             CALL LCD_PRINT
0149 22              232         RET
                     233      ;――――――――――――――――
                     234      ; 工作菜单
014A 20534543        235        MENU0:   DB  " SECOND-CLOCK 0 ",0
014E 4F4E442D                
0152 434C4F43                
0156 4B203020                
015A 00                      
015B 20424547        236        MENU1:   DB  " BEGIN COUNT  1 ",0
015F 494E2043                
0163 4F554E54                
0167 20203120                
016B 00                      
016C 20504155        237        MENU2:   DB  " PAUST COUNT  2 ",0
0170 53542043                
0174 4F554E54                
0178 20203220                
017C 00                      
017D 20424547        238        MENU3:   DB  " BEGIN COUNT  3 ",0
0181 494E2043                
0185 4F554E54                
A51 MACRO ASSEMBLER  LCD2401                                                              01/05/2007 14:53:27 PAGE     5

0189 20203320                
018D 00                      
018E 20504155        239        MENU4:   DB  " PAUST COUNT  4 ",0             
0192 53542043                
0196 4F554E54                
019A 20203420                
019E 00                      
                     240      ;――――――――――――――――
                     241      ;―――――――――――――――――――――
                     242      ;菜单显示子程序
                     243      ;一行、二行显示字符
019F                 244       LCD_PRINT:  
019F B40108          245          CJNE  A,#1,LINE2       ;判断是否为第一行
01A2                 246       LINE1: 
01A2 3139            247          ACALL  CLR_LINE        ;清除该行字符数据
01A4 7480            248          MOV    A, #80H         ;设置 LCD 的第一行地址
01A6 311D            249          ACALL  WR_COMM         ;写入命令
01A8 8006            250          JMP    FILL
01AA                 251       LINE2: 
01AA 3139            252          ACALL  CLR_LINE        ;清除该行字符数据
01AC 74C0            253          MOV    A,#0C0H         ;设置 LCD 的第二行地址
01AE 311D            254          ACALL  WR_COMM
01B0 E4              255       FILL: CLR A               ;填入字符
01B1 93              256          MOVC   A,@A+DPTR       ;由消息区取出字符
01B2 B40001          257          CJNE   A,#0,LC1        ;判断是否为结束码
01B5 22              258          RET                                         
                     259      ;―――――――――――――― 
                     260       ;写入数据
01B6 312A            261       LC1: ACALL WR_DATA      
01B8 A3              262          INC   DPTR             ;指针加1
01B9 80F5            263          JMP   FILL             ;继续填入字符
01BB 22              264          RET                                     
                     265     
                     266      ;―――――――――――――――――――――
                     267      ;转换数据子程  
01BC                 268       CONV:        ;转换为 ASCII 码并显示
01BC E530            269          MOV  A,HOUR            ;加载小时数据
01BE 753605          270          MOV  X,#5              ;设置位置
01C1 31F1            271          ACALL  SKOW_LINE2      ;显示数据
01C3 0536            272          INC  X                 ;
01C5 743A            273          MOV  A,#':'            ;
01C7 8536F0          274          MOV  B,X               ;
01CA 510C            275          ACALL  LCDP2           ;
01CC E531            276          MOV  A,MIN             ;加载分钟数据
01CE 0536            277          INC  X                 ;设置位置
01D0 31F1            278          ACALL  SKOW_LINE2      ;显示数据
01D2 0536            279          INC  X                 ;
01D4 743A            280          MOV  A,#':'            ;
01D6 8536F0          281          MOV  B,X               ;
01D9 510C            282          ACALL  LCDP2           ;
01DB E532            283          MOV  A,SEC             ;加载秒数数据
01DD 0536            284          INC  X                 ;设置位置
01DF 31F1            285          ACALL  SKOW_LINE2      ;显示数据
01E1 0536            286          INC  X                 ;
01E3 743A            287          MOV  A,#':'            ;
01E5 8536F0          288          MOV  B,X               ;
01E8 510C            289          CALL  LCDP2            ;
01EA E533            290          MOV  A,DEDA            ;加载秒数数据
01EC 0536            291          INC  X                 ;设置位置
01EE 31F1            292          ACALL  SKOW_LINE2      ;显示数据
01F0 22              293          RET                   ;               
                     294     
                     295      ;――――――――――――――――――――― 
                     296      ;在 LCD 的第二行显示数字  
01F1                 297       SKOW_LINE2:     
01F1 75F00A          298           MOV  B,#10           ;设置被除数
A51 MACRO ASSEMBLER  LCD2401                                                              01/05/2007 14:53:27 PAGE     6

01F4 84              299           DIV  AB              ;结果A存商数,B存余数
01F5 2430            300           ADD  A,#30H          ;A为十位数,转换为字符
01F7 C0F0            301           PUSH B               ;B放入堆栈暂存
01F9 8536F0          302           MOV  B,X             ;设置 LCD 显示的位置
01FC 510C            303           ACALL LCDP2          ;由 LCD 显示出来
01FE D0F0            304           POP  B               ;出栈
0200 E5F0            305           MOV  A,B             ;B为个位数
0202 2430            306           ADD  A,#30H          ;转换为字符
0204 0536            307           INC  X               ;LCD 显示位置加1
0206 8536F0          308           MOV  B,X             ;设置 LCD 显示的位置
0209 510C            309           ACALL  LCDP2         ;由 LCD 显示出来     
020B 22              310           RET                                      
                     311      ;―――――――――――――――
                     312      ;在LCD的第二行显示字符
020C                 313       LCDP2:      
020C C0E0            314           PUSH ACC              ;
020E E5F0            315           MOV  A,B              ;设置显示地址
0210 24C0            316           ADD  A,#0C0H          ;设置LCD的第二行地址
0212 311D            317           CALL WR_COMM          ;写入命令
0214 D0E0            318           POP  ACC              ;由堆栈取出A
0216 312A            319           CALL WR_DATA          ;写入数据           
0218 22              320           RET                                     
                     321     
                     322      ;―――――――――――――――――――――
                     323      ;喇叭鸣响子程序 
0219                 324       SPK_BZ:
0219 7E64            325           MOV R6,#100
021B 5126            326        B1:ACALL DEX
021D B2A4            327           CPL  SPK
021F DEFA            328           DJNZ R6,B1
0221 7D0A            329           MOV  R5,#10
0223 512C            330           ACALL DELAY
0225 22              331           RET
0226 7FB4            332       DEX:MOV  R7,#180
0228 00              333       DE1:NOP
0229 DFFD            334           DJNZ R7,DE1
022B 22              335           RET 
                     336     
                     337      ;―――――――――――――――――――――
                     338      ;延时10MS
022C                 339             DELAY:                        
022C 7E32            340                MOV  R6,#50
022E 7F64            341          D1:MOV  R7,#100
0230 DFFE            342          DJNZ  R7,$
0232 DEFA            343          DJNZ  R6,D1
0234 DDF6            344          DJNZ  R5,DELAY
0236 22              345          RET                                   
                     346      ;―――――――――――――――
                     347      ;延时5MS子程序
0237                 348       DELAY1:               
0237 7E19            349          MOV  R6,#25
0239 7F64            350       DEY: MOV R7,#100
023B DFFE            351          DJNZ  R7,$
023D DEFA            352          DJNZ  R6,DEY
023F 22              353          RET                                      
                     354      ;―――――――――――――――  
                     355       ;延时500微秒
0240                 356       DE:                        
0240 DFFE            357         DJNZ  R7,$
0242 22              358         RET                                
                     359      ;――――――――――――――――――――
                     360         END                     ;程序结束
                             
                             
A51 MACRO ASSEMBLER  LCD2401                                                              01/05/2007 14:53:27 PAGE     7

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
B1 . . . . . . . .  C ADDR   021BH   A   
CL1. . . . . . . .  C ADDR   013BH   A   
CLR_LINE . . . . .  C ADDR   0139H   A   
CONV . . . . . . .  C ADDR   01BCH   A   
D1 . . . . . . . .  C ADDR   022EH   A   
DE . . . . . . . .  C ADDR   0240H   A   
DE1. . . . . . . .  C ADDR   0228H   A   
DEDA . . . . . . .  N NUMB   0033H   A   
DELAY. . . . . . .  C ADDR   022CH   A   
DELAY1 . . . . . .  C ADDR   0237H   A   
DEX. . . . . . . .  C ADDR   0226H   A   
DEY. . . . . . . .  C ADDR   0239H   A   
E. . . . . . . . .  B ADDR   00B0H.7 A   
FILL . . . . . . .  C ADDR   01B0H   A   
HOUR . . . . . . .  N NUMB   0030H   A   
IE . . . . . . . .  D ADDR   00A8H   A   
INIT . . . . . . .  C ADDR   002CH   A   
INIT_LCD . . . . .  C ADDR   010AH   A   
INIT_TIMER . . . .  C ADDR   003EH   A   
K1 . . . . . . . .  B ADDR   00B0H.3 A   
K1_C . . . . . . .  N NUMB   0037H   A   
K1_N . . . . . . .  N NUMB   0034H   A   
K1_P . . . . . . .  N NUMB   0035H   A   
K2 . . . . . . . .  B ADDR   00B0H.4 A   
KEY. . . . . . . .  C ADDR   008FH   A   
KEY0 . . . . . . .  C ADDR   009CH   A   
KEY1 . . . . . . .  C ADDR   00B2H   A   
KEY2 . . . . . . .  C ADDR   00C1H   A   
KEY3 . . . . . . .  C ADDR   00D0H   A   
KEY4 . . . . . . .  C ADDR   00DEH   A   
LC1. . . . . . . .  C ADDR   01B6H   A   
LCDP2. . . . . . .  C ADDR   020CH   A   
LCD_PRINT. . . . .  C ADDR   019FH   A   
LINE1. . . . . . .  C ADDR   01A2H   A   
LINE2. . . . . . .  C ADDR   01AAH   A   
LMESS1 . . . . . .  C ADDR   00F6H   A   
LMESS2 . . . . . .  C ADDR   0100H   A   
LOOP . . . . . . .  C ADDR   001DH   A   
LOOP1. . . . . . .  C ADDR   0087H   A   
LOOP2. . . . . . .  C ADDR   008EH   A   
MAIN . . . . . . .  C ADDR   000DH   A   
MENU0. . . . . . .  C ADDR   014AH   A   
MENU1. . . . . . .  C ADDR   015BH   A   
MENU2. . . . . . .  C ADDR   016CH   A   
MENU3. . . . . . .  C ADDR   017DH   A   
MENU4. . . . . . .  C ADDR   018EH   A   
MEU. . . . . . . .  C ADDR   0142H   A   
MIN. . . . . . . .  N NUMB   0031H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
RS . . . . . . . .  B ADDR   00B0H.5 A   
RW . . . . . . . .  B ADDR   00B0H.6 A   
SEC. . . . . . . .  N NUMB   0032H   A   
SET_LCD. . . . . .  C ADDR   00DFH   A   
SKOW_LINE2 . . . .  C ADDR   01F1H   A   
SP . . . . . . . .  D ADDR   0081H   A   
SPK. . . . . . . .  B ADDR   00A0H.4 A   
A51 MACRO ASSEMBLER  LCD2401                                                              01/05/2007 14:53:27 PAGE     8

SPK_BZ . . . . . .  C ADDR   0219H   A   
T0_INT . . . . . .  C ADDR   004BH   A   
TH0. . . . . . . .  D ADDR   008CH   A   
TL0. . . . . . . .  D ADDR   008AH   A   
TMOD . . . . . . .  D ADDR   0089H   A   
TR0. . . . . . . .  B ADDR   0088H.4 A   
TT . . . . . . . .  C ADDR   0084H   A   
WR_COMM. . . . . .  C ADDR   011DH   A   
WR_DATA. . . . . .  C ADDR   012AH   A   
X. . . . . . . . .  N NUMB   0036H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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