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