📄 liushui.lst
字号:
A51 MACRO ASSEMBLER LIUSHUI 12/21/2006 15:54:36 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN liushui.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE liushui.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*******************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 流水灯 (双定时中断) *
4 ;* *
5 ;* P0、P2 LED显示 *
6 ;* *
7 ;* 版本: V1.0 (2006/11/20) *
8 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
9 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
10 ;* 时间: 2006/12/13 *
11 ;* *
12 ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
13 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 ;* *
15 ;*******************************************************************
16
0000 17 ORG 0000H
0000 0130 18 AJMP MAIN
000B 19 ORG 000BH ;定时器0的中断向量地址
000B 015F 20 AJMP TIME0
001B 21 ORG 001BH ;定时器1的中断向量地址
001B 017F 22 AJMP TIME1
0030 23 ORG 0030H
24
25 ;**********************************************************
0030 26 MAIN:
0030 7580FF 27 MOV P0,#0FFH ;关所有灯
0033 75A0FF 28 MOV P2,#0FFH
0036 753000 29 MOV 30H,#00H ;计数器单元清0
0039 754000 30 MOV 40H,#00H
003C 7531FE 31 MOV 31H,#0FEH ;置扫描初值
003F 7541FE 32 MOV 41H,#0FEH
0042 758911 33 MOV TMOD,#11H ;定时/计数器工作于方式1
0045 758CA6 34 MOV TH0,#0A6H
0048 758A00 35 MOV TL0,#00H ;25ms定时常数
004B 758D4C 36 MOV TH1,#4CH
004E 758B00 37 MOV TL1,#00H ;50ms定时常数
0051 D2B9 38 SETB PT0 ;定义TIMER0优先
0053 D2AF 39 SETB EA ;开总中断
0055 D2A9 40 SETB ET0 ;允许定时/计数器0 中断
0057 D2AB 41 SETB ET1 ;允许定时/计数器1 中断
0059 D28C 42 SETB TR0 ;启动定时/计数器0 中断
005B D28E 43 SETB TR1 ;启动定时/计数器1 中断
005D 44 LOOP:
005D 015D 45 AJMP LOOP
46
47 ;*********************************************************
48
49 ;定时器0的中断服务程序
50
51 ;*********************************************************
005F 52 TIME0:
005F C0E0 53 PUSH ACC
0061 C0D0 54 PUSH PSW ;将PSW和ACC推入堆栈保护
0063 758CA6 55 MOV TH0,#0A6H
0066 758A00 56 MOV TL0,#00H ;重置定时常数
0069 0530 57 INC 30H
006B E530 58 MOV A,30H
A51 MACRO ASSEMBLER LIUSHUI 12/21/2006 15:54:36 PAGE 2
006D B40A0A 59 CJNE A,#10,T0_END ;30H单元中的值到10了吗?
0070 753000 60 MOV 30H,#00H ;清计数器
0073 E531 61 MOV A,31H
0075 F580 62 MOV P0,A
0077 23 63 RL A
0078 F531 64 MOV 31H,A
007A 65 T0_END:
007A D0D0 66 POP PSW
007C D0E0 67 POP ACC
007E 32 68 RETI
69
70 ;*********************************************************
71
72 ;定时器1的中断服务程序
73
74 ;*********************************************************
007F 75 TIME1:
007F C0E0 76 PUSH ACC
0081 C0D0 77 PUSH PSW ;将PSW和ACC推入堆栈保护
0083 758D4C 78 MOV TH1,#4CH
0086 758B00 79 MOV TL1,#00H ;重置定时常数
0089 0540 80 INC 40H
008B E540 81 MOV A,40H
008D B40A0A 82 CJNE A,#10,T1_END ;40H单元中的值到10了吗?
0090 754000 83 MOV 40H,#00H ;清计数器
0093 E541 84 MOV A,41H
0095 F5A0 85 MOV P2,A
0097 23 86 RL A
0098 F541 87 MOV 41H,A
009A 88 T1_END:
009A D0D0 89 POP PSW
009C D0E0 90 POP ACC
009E 32 91 RETI
92 ;*********************************************************
93 END
A51 MACRO ASSEMBLER LIUSHUI 12/21/2006 15:54:36 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET0. . . . . . . . B ADDR 00A8H.1 A
ET1. . . . . . . . B ADDR 00A8H.3 A
LOOP . . . . . . . C ADDR 005DH A
MAIN . . . . . . . C ADDR 0030H A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
PSW. . . . . . . . D ADDR 00D0H A
PT0. . . . . . . . B ADDR 00B8H.1 A
T0_END . . . . . . C ADDR 007AH A
T1_END . . . . . . C ADDR 009AH A
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIME0. . . . . . . C ADDR 005FH A
TIME1. . . . . . . C ADDR 007FH A
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -