📄 test.lst
字号:
C51 COMPILER V7.10 TEST 08/04/2004 20:42:29 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE TEST
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS PREPRINT
line level source
1 //////////////////////////////////////////////////////////////////
2 /// //
3 // 作为初学者,对Keil C51与汇编函数的相互调用一直是个不敢轻易尝 //
4 // 试的难点。本程序的演示通过一个简单的相互结合,演示了下述内容 //
5 // 1。c对asm的函数调用,并展示了变量传递方法 //
6 // 2。用asm编写中断函数,并展示了C程序中的全局变量在asm中的引用//
7 // 希望通过本程序能对大多数初学者学习C51有所帮助。 //
8 //--------------------------------------------------------------//
9 // 晓奇工作室 http://www.xiao-qi.com/ //
10 // 晓奇 info@xiao-qi.com //
11 //////////////////////////////////////////////////////////////////
12 #pragma src( aa.a51 ) // 产生汇编代码
13 #include "reg51.h"
14
15 // 定义一个16位变量
16 unsigned int aa;
17
18 // 对外部函数的说明,并不区分汇编或C
19 extern void timerCt0(void);
20 extern unsigned char fnAdd( unsigned char x ,unsigned char y );
21 extern unsigned char fnSub( unsigned char x ,unsigned char y );
22
23 //////////////////////////////////////////////////////////////////
24 // cpu内部状态初始化。这里仅仅对ct0作了初始化 //
25 //////////////////////////////////////////////////////////////////
26 void prInit(void){
27 1 TMOD= 0x11; // 0001 0001 T0,T1 16位定时器
28 1 IP = 0x2; // 0000 0010 定时0最高优先级
29 1 IE = 0x2;
30 1 TCON= 5;
31 1 TH0 = 0xff; // 预置初值
32 1 TL0 = 0xe0;
33 1 TR0 = 1; // 打开定时器中断
34 1 ET0 = 1;
35 1 EA = 1;
36 1 }
37
38 //////////////////////////////////////////////////////////////////
39 // 本函数提供给汇编函数调用 //
40 //////////////////////////////////////////////////////////////////
41
42 unsigned char fnMul( unsigned char x ,unsigned char y ){
43 1 unsigned char temp;
44 1 temp = x*y;
45 1 return temp;
46 1 }
47
48 //////////////////////////////////////////////////////////////////
49 // 演示主程序,debug时请在进入while(1)处后,留意定时中断对变量 //
50 // aa的修改.为了更清楚的观察,请使用F11单步调试。 // //
51 //////////////////////////////////////////////////////////////////
52
53 void main(void) {
54 1 prInit();
55 1 aa=fnAdd(10,20);
C51 COMPILER V7.10 TEST 08/04/2004 20:42:29 PAGE 2
56 1 aa=fnSub(30,10);
57 1 aa=aa+1;
58 1 while(1);
59 1 }
C51 COMPILER V7.10 TEST 08/04/2004 20:42:29 PAGE 3
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
_fnAdd . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
aa . . . . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
_fnSub . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
_fnMul . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
x?140. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
y?141. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
temp?142 . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
prInit . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 68 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -