📄 main.lst
字号:
A51 MACRO ASSEMBLER MAIN 06/29/2006 11:58:50 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;*************************************************************************
2 ; main.ASM
3 ; CAT1021看门狗实验程序
4 ;*************************************************************************
5
6
7 ;*************************************************************************
8 ;定义I/O接口
9 ;*************************************************************************
0080 10 LED BIT P0.0
00B4 11 SCL BIT P3.4
00B5 12 SDA BIT P3.5
13
14
15 ;*************************************************************************
16 ;复位入口
17 ;*************************************************************************
0000 18 ORG 0x0000
0000 020003 19 LJMP PreMain
20
21
22 ;*************************************************************************
23 ;程序段:PreMain
24 ;功能:进入主程序之前的初始化操作
25 ;*************************************************************************
0003 26 PreMain:
0003 75812F 27 MOV SP, #0x2F
0006 02004A 28 LJMP main
29
30
31 ;*************************************************************************
32 ;宏定义:DJNZ_W
33 ;功能:双字节数自减1,结果不为0跳转
34 ;参数:
35 ; (xh,xl):要操作的数
36 ; Label:跳转目标
37 ;*************************************************************************
38 DJNZ_W MACRO xh,xl, Label
39 LOCAL next
40 MOV A, xl
41 JNZ next
42 DEC xh
43 next:
44 DEC xl
45 MOV A, xh
46 ORL A, xl
47 JNZ Label
48 ENDM
49
50
51 ;*************************************************************************
52 ;函数:Delay()
53 ;功能:延时0.001~65.536s
54 ;参数:
55 ; t>0时,延时(t*0.001)s
56 ; t=0时,延时65.536s
57 ;*************************************************************************
58 ; void Delay(unsigned int t)
A51 MACRO ASSEMBLER MAIN 06/29/2006 11:58:50 PAGE 2
59 ; t = (R6,R7)
0009 60 Delay:
0009 758CFC 61 MOV TH0, #0xFC
000C 758A66 62 MOV TL0, #0x66
000F D28C 63 SETB TR0
0011 308DFD 64 JNB TF0, $
0014 C28C 65 CLR TR0
0016 C28D 66 CLR TF0
67 DJNZ_W R6,R7, Delay
0021 22 76 RET
77
78
79 ;*************************************************************************
80 ;函数:Feed()
81 ;功能:清除CAT1021内部WDT定时器(喂狗)
82 ;说明:如果没有在1.6秒(典型值)内喂狗,则CAT1021会输出复位信号
83 ;*************************************************************************
84 ; void Feed()
0022 85 Feed:
0022 C006 86 PUSH 0x06
0024 C007 87 PUSH 0x07
0026 C2B5 88 CLR SDA
0028 7E00 89 MOV R6, #0
002A 7F01 90 MOV R7, #1
002C 120009 91 LCALL Delay
002F D2B5 92 SETB SDA
0031 D007 93 POP 0x07
0033 D006 94 POP 0x06
0035 22 95 RET
96
97
98 ;*************************************************************************
99 ;函数:SysInit()
100 ;功能:系统初始化
101 ;*************************************************************************
102 ; void SysInit()
0036 103 SysInit:
0036 C280 104 CLR LED ;点亮LED。如果CPU被看门狗复位,则能看到LED闪亮
0038 D2B4 105 SETB SCL
003A D2B5 106 SETB SDA
003C 5389F0 107 ANL TMOD, #0xF0
003F 438901 108 ORL TMOD, #0x01
0042 7E00 109 MOV R6, #0
0044 7FFA 110 MOV R7, #250
0046 120009 111 LCALL Delay ;上电后必须先延时200ms以上才能对CAT1021进行操作
0049 22 112 RET
113
114
115 ;*************************************************************************
116 ;函数:void main()
117 ;功能:主函数
118 ;*************************************************************************
004A 119 main:
004A 120036 120 LCALL SysInit
004D 121 Loop:
122 ; 喂狗
004D 120022 123 LCALL Feed
124 ; 延时
0050 7E03 125 MOV R6, #HIGH(800)
0052 7F20 126 MOV R7, #LOW(800)
0054 120009 127 LCALL Delay
128 ;
0057 80F4 129 SJMP Loop
130
131
132 ;*************************************************************************
A51 MACRO ASSEMBLER MAIN 06/29/2006 11:58:50 PAGE 3
133 ;程序结束
134 ;*************************************************************************
135 END
A51 MACRO ASSEMBLER MAIN 06/29/2006 11:58:50 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
??0000 . . . . . . C ADDR 001CH A
DELAY. . . . . . . C ADDR 0009H A
FEED . . . . . . . C ADDR 0022H A
LED. . . . . . . . B ADDR 0080H.0 A
LOOP . . . . . . . C ADDR 004DH A
MAIN . . . . . . . C ADDR 004AH A
P0 . . . . . . . . D ADDR 0080H A
P3 . . . . . . . . D ADDR 00B0H A
PREMAIN. . . . . . C ADDR 0003H A
SCL. . . . . . . . B ADDR 00B0H.4 A
SDA. . . . . . . . B ADDR 00B0H.5 A
SP . . . . . . . . D ADDR 0081H A
SYSINIT. . . . . . C ADDR 0036H A
TF0. . . . . . . . B ADDR 0088H.5 A
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -