📄 c_block1.lst
字号:
C51 COMPILER V7.50 C_BLOCK1 11/04/2005 23:41:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE C_BLOCK1
OBJECT MODULE PLACED IN C_BLOCK1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE C_BLOCK1.c OPTIMIZE(4,SPEED) BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 /*********************************************************************************************************
-**
2 * C_BLOCK1.c - 如何在C51中实现绝对地址定位的一个文件例子
3 * 弘微科技(SPAC) 田伯运
4 * WEB: www.spacltd.com.cn TEL:0755-26010579 E-MAIL:andy.tian@spacltd.com.cn
5 *
6 * 功能介绍:
7 * 如何使用地址定位指令,将C_BLOCK1.C文件中的所有程序定位到0XF800的地址空间内
8 * 使SST的单片机第2个存储块也可作为统一的程序存储区
9 * 将原本8K的程序存储区的SST89E/V52RD2变为16K的程序存储区
10 *
11 * 解决方法:在连接选项"KEIL C51/PROJECT/OPTIONS FOR TARGET/BL51 LOCATE/CODE"中
12 * 加入模块定位命令:"*C_BLOCK1(0XF800)"
13 * *C_BLOCK1(0XF800)---使C_BLOCK1.C文件中所有的函数都连续定位到0XF800后面的区域
14 * ?PR?_DELAYMS?C_BLOCK1(0XF800)---表示只将C_BLOCK1.C文件中的DELAYMS函数定位到0XF800后面的区域
15 **********************************************************************************************************
-*/
16
17
18
19
20 /*********************************************************************************************************
-**
21 * 本文件中用到的函数声明列表
22 **********************************************************************************************************
-*/
23 void DelayUs(unsigned char n);
24 void DelayMs(unsigned char n);
25 void delay_100ms(unsigned char n);
26
27 //***********************************************************
28 // 本文件中函数定义
29 //***********************************************************
30 void DelayUs(unsigned char n)
31 {
32 1 while(n--);
33 1 }
34
35 //Using 12M
36 void DelayMs(unsigned char n)
37 {
38 1 unsigned char i;
39 1 for(;n>0;n--)
40 1 {
41 2 for(i=0;i<160;i++);
42 2 for(i=0;i<165;i++);
43 2 }
44 1 }
45
46 //******************************************************
47 // delay_100ms:延时100毫秒的函数;按照晶振为12MHZ计算
48 //******************************************************
49 void delay_100ms(unsigned char n)
50 {
51 1 unsigned int i;
C51 COMPILER V7.50 C_BLOCK1 11/04/2005 23:41:37 PAGE 2
52 1 for(;n>0;n--)
53 1 {
54 2 for(i=0;i<2000;i++);
55 2 }
56 1 }
C51 COMPILER V7.50 C_BLOCK1 11/04/2005 23:41:37 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _DelayUs (BEGIN)
; SOURCE LINE # 30
;---- Variable 'n' assigned to Register 'R7' ----
; SOURCE LINE # 31
0000 ?C0001:
; SOURCE LINE # 32
0000 AE07 MOV R6,AR7
0002 1F DEC R7
0003 EE MOV A,R6
0004 70FA JNZ ?C0001
; SOURCE LINE # 33
0006 ?C0003:
0006 22 RET
; FUNCTION _DelayUs (END)
; FUNCTION _DelayMs (BEGIN)
; SOURCE LINE # 36
;---- Variable 'n' assigned to Register 'R7' ----
; SOURCE LINE # 37
; SOURCE LINE # 39
0000 ?C0004:
0000 EF MOV A,R7
0001 D3 SETB C
0002 9400 SUBB A,#00H
0004 4019 JC ?C0013
; SOURCE LINE # 40
; SOURCE LINE # 41
;---- Variable 'i' assigned to Register 'R6' ----
0006 E4 CLR A
0007 FE MOV R6,A
0008 ?C0007:
0008 EE MOV A,R6
0009 C3 CLR C
000A 94A0 SUBB A,#0A0H
000C 5003 JNC ?C0008
000E 0E INC R6
000F 80F7 SJMP ?C0007
0011 ?C0008:
; SOURCE LINE # 42
0011 E4 CLR A
0012 FE MOV R6,A
0013 ?C0010:
0013 EE MOV A,R6
0014 C3 CLR C
0015 94A5 SUBB A,#0A5H
0017 5003 JNC ?C0006
0019 0E INC R6
001A 80F7 SJMP ?C0010
; SOURCE LINE # 43
001C ?C0006:
001C 1F DEC R7
001D 80E1 SJMP ?C0004
; SOURCE LINE # 44
001F ?C0013:
001F 22 RET
; FUNCTION _DelayMs (END)
; FUNCTION _delay_100ms (BEGIN)
; SOURCE LINE # 49
C51 COMPILER V7.50 C_BLOCK1 11/04/2005 23:41:37 PAGE 4
;---- Variable 'n' assigned to Register 'R7' ----
; SOURCE LINE # 50
; SOURCE LINE # 52
0000 ?C0014:
0000 EF MOV A,R7
0001 D3 SETB C
0002 9400 SUBB A,#00H
0004 4016 JC ?C0020
; SOURCE LINE # 53
; SOURCE LINE # 54
;---- Variable 'i' assigned to Register 'R4/R5' ----
0006 E4 CLR A
0007 FD MOV R5,A
0008 FC MOV R4,A
0009 ?C0017:
0009 C3 CLR C
000A ED MOV A,R5
000B 94D0 SUBB A,#0D0H
000D EC MOV A,R4
000E 9407 SUBB A,#07H
0010 5007 JNC ?C0016
0012 0D INC R5
0013 ED MOV A,R5
0014 7001 JNZ ?C0021
0016 0C INC R4
0017 ?C0021:
0017 80F0 SJMP ?C0017
; SOURCE LINE # 55
0019 ?C0016:
0019 1F DEC R7
001A 80E4 SJMP ?C0014
; SOURCE LINE # 56
001C ?C0020:
001C 22 RET
; FUNCTION _delay_100ms (END)
C51 COMPILER V7.50 C_BLOCK1 11/04/2005 23:41:37 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
_DelayMs . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
_DelayUs . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_delay_100ms . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 68 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -