📄 cp发送.lst
字号:
151 ;-------------------------
152 ;设置模块1
153 ;Channe0-5mS-H, Channe0-5mS-L 的计算方法见 PCA 中断服务程序内的注释
0069 75EB00 154 MOV CCAP1L, #Channe15mSL ;给 PCA 模块0 的 CCAP0L 置初值
006C 75FB01 155 MOV CCAP1H, #Channe15mSH ;给 PCA 模块0 的 CCAP0H 置初值
006F 75DB49 156 MOV CCAPM1, #49H ;设置 PCA 模块0 为16位软件定时器,ECCF0=1允许PCA模块0中断
157 ;当[CH,CL]==[CCAP0H,CCAP0L]时,产生中断请求,CCF0=1,请求中断
158
159 ;-------------------------
0072 D2AE 160 SETB EPCALVD ;开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位
0074 D2AF 161 SETB EA ;开整个单片机所有中断共享的总中断控制位
0076 D2DE 162 SETB CR ;启动 PCA 计数器(CH,CL)计数
0078 22 163 RET
164 ;------------------------------------------------------------------------------
0079 165 PCAInterrupt:
0079 C0E0 166 PUSH ACC ;4 Clock
007B C0D0 167 PUSH PSW ;4 Clock
007D 30D82A 168 JNB CCF0, NotPCA0ElsePCA1 ;如果CCF0不等于1就不是PCA模块0中断
169 ;就直接去判是否是PCA模块1中断
170 ;模块0 中断服务程序
171 ;P1.6LED变化一次,表示PCA模块0发生了一次中断
172
0080 7442 173 MOV A, #CCAPnLValue ;2 Clock
0082 25EA 174 ADD A, CCAP0L ;3 Clock
0084 F5EA 175 MOV CCAP0L, A ;3 Clock
0086 E4 176 CLR A ;1 Clock
0087 35FA 177 ADDC A, CCAP0H ;3 Clock
0089 F5FA 178 MOV CCAP0H, A ;3 Clock
008B 7844 179 MOV R0,#DCONT
008D 16 180 DEC @R0
008E B60017 181 CJNE @R0,#0,lOPP
0091 7640 182 MOV @R0,#64
0093 08 183 INC R0
0094 16 184 DEC @R0
0095 B60010 185 CJNE @R0,#0,LOPP
0098 7640 186 MOV @R0,#64
009A 08 187 INC R0
009B 16 188 DEC @R0
009C B60009 189 CJNE @R0,#0,LOPP
009F 7640 190 MOV @R0,#64
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 4
00A1 08 191 INC R0
00A2 16 192 DEC @R0
00A3 B60002 193 CJNE @R0,#0,LOPP
00A6 D270 194 SETB WANGBIT
00A8 195 LOPP:
196 ;------------------------------------------------------------
00A8 C2D8 197 CLR CCF0 ;清PCA模块0中断标志
198
00AA 199 NotPCA0ElsePCA1:
00AA 30D91C 200 JNB CCF1, PCAInterruptExit ;如果CCF1不等于1就不是PCA模块1中断 ;就立即退出
201 ;模块1 中断服务程序 ;本程序PCA模块0每5mS中断一次,
202 ;在本程序中[CH,CL]每12个时钟脉冲加1, 当[CH,CL] 增加到等于 [CCAP0H,CCAP0L]时
203 ;CCF0=1, 产生中断请求。如果每次 PCA 模块0 中断后, 在中断服务程序中给
204 ;[CCAP0H,CCAP0L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相
205 ;同的。本程序中这个"相同的数值" 就是 Channe0-5mS-H, Channe0-5mS-L
206 ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 1E00H 次才是 5mS。
207 ;计算PCA 计数器计数多少次:
208 ; Channe0-5mS-H, Channe0-5mS-L = T/( (1/Fosc)*12 )
209 ; = 0.005/ ( (1/18432000)*12 )
210 ; = 7680 (10进制数)
211 ; = 1E00H (16进制数)
212 ; 即 Channe0-5mS-H = 1EH, Channe0-5mS-L = 00H
213 ;
214 ; Channe0-5mS-H, Channe0-5mS-L:每次给 [CCAP0H,CCAP0L] 增加的数值(步长)
00AD 7400 215 MOV A, #Channe15mSL ;给[CCAP0H,CCAP0L] 增加一个数值
00AF 25EB 216 ADD A, CCAP1L
00B1 F5EB 217 MOV CCAP1L, A
00B3 7401 218 MOV A, #Channe15mSH
00B5 35FB 219 ADDC A, CCAP1H
00B7 F5FB 220 MOV CCAP1H, A
00B9 C2D9 221 CLR CCF1 ;清 PCA 模块0 中断标志
00BB 054A 222 INC Counter ;中断次数计数器 + 1
00BD E54A 223 MOV A, Counter
00BF C3 224 CLR C
00C0 94C8 225 SUBB A, #200 ;检测是否中断了 200 次(1秒)
00C2 4005 226 JC PCAInterruptExit ;有借位,表示 Counter 小于 200,立即跳转退出
00C4 754A00 227 MOV Counter, #0 ;已中断了 200 次,清 0 中断次数计数器
00C7 C2D9 228 CLR CCF1 ;清 PCA 模块1 中断标志
00C9 229 PCAInterruptExit:
00C9 D0D0 230 POP PSW ;3 Clock
00CB D0E0 231 POP ACC ;3 Clock
00CD 32 232 RETI ;4 Clock
233 ;------------------------------------------------------------------------------
234 END
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
CCAP0H . . . . . . N NUMB 00FAH A
CCAP0L . . . . . . N NUMB 00EAH A
CCAP1H . . . . . . N NUMB 00FBH A
CCAP1L . . . . . . N NUMB 00EBH A
CCAP2H . . . . . . N NUMB 00FCH A
CCAP2L . . . . . . N NUMB 00ECH A
CCAP3H . . . . . . N NUMB 00FDH A
CCAP3L . . . . . . N NUMB 00EDH A
CCAP4H . . . . . . N NUMB 00FEH A
CCAP4L . . . . . . N NUMB 00EEH A
CCAP5H . . . . . . N NUMB 00FFH A
CCAP5L . . . . . . N NUMB 00EFH A
CCAPM0 . . . . . . N NUMB 00DAH A
CCAPM1 . . . . . . N NUMB 00DBH A
CCAPM2 . . . . . . N NUMB 00DCH A
CCAPM3 . . . . . . N NUMB 00DDH A
CCAPM4 . . . . . . N NUMB 00DEH A
CCAPM5 . . . . . . N NUMB 00DFH A
CCAPNLVALUE. . . . N NUMB 0042H A
CCF0 . . . . . . . B ADDR 00D8H.0 A
CCF1 . . . . . . . B ADDR 00D8H.1 A
CCF2 . . . . . . . B ADDR 00D8H.2 A
CCF3 . . . . . . . B ADDR 00D8H.3 A
CCF4 . . . . . . . B ADDR 00D8H.4 A
CCF5 . . . . . . . B ADDR 00D8H.5 A
CCON . . . . . . . N NUMB 00D8H A
CF . . . . . . . . B ADDR 00D8H.7 A
CH . . . . . . . . N NUMB 00F9H A
CHANNE15MSH. . . . N NUMB 0001H A
CHANNE15MSL. . . . N NUMB 0000H A
CL . . . . . . . . N NUMB 00E9H A
CMOD . . . . . . . N NUMB 00D9H A
COUNTER. . . . . . N NUMB 004AH A
CR . . . . . . . . B ADDR 00D8H.6 A
DCONT. . . . . . . N NUMB 0044H A
EA . . . . . . . . B ADDR 00A8H.7 A
EPCALVD. . . . . . B ADDR 00A8H.6 A
IE . . . . . . . . D ADDR 00A8H A
IPH. . . . . . . . N NUMB 00B7H A
LEDMCUSTART. . . . B ADDR 0090H.7 A
LEDPCAINT0 . . . . B ADDR 0090H.6 A
LEDPCAINT1 . . . . B ADDR 0090H.5 A
LOPP . . . . . . . C ADDR 00A8H A
MAIN . . . . . . . C ADDR 0050H A
NOTPCA0ELSEPCA1. . C ADDR 00AAH A
P1 . . . . . . . . D ADDR 0090H A
PCAINITIATE. . . . C ADDR 005AH A
PCAINTERRUPT . . . C ADDR 0079H A
PCAINTERRUPTEXIT . C ADDR 00C9H A
PCAPWM0. . . . . . N NUMB 00F2H A
PCAPWM1. . . . . . N NUMB 00F3H A
PCAPWM2. . . . . . N NUMB 00F4H A
PCAPWM3. . . . . . N NUMB 00F5H A
PCAPWM4. . . . . . N NUMB 00F6H A
PCAPWM5. . . . . . N NUMB 00F7H A
PSW. . . . . . . . D ADDR 00D0H A
SP . . . . . . . . D ADDR 0081H A
WAIT . . . . . . . C ADDR 0058H A
WANGBIT. . . . . . B ADDR 002EH.0 A
A51 MACRO ASSEMBLER CP发送 05/14/2007 12:44:11 PAGE 6
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -