?? 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 + -