📄 exam.lst
字号:
C51 COMPILER V6.12 EXAM 03/08/2009 00:20:35 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE EXAM
OBJECT MODULE PLACED IN .\exam.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\exam.c DEBUG OBJECTEXTEND CODE
stmt level source
1 #include<reg51.h> //52单片机头文件
2 #include <intrins.h> //包含有左右循环移位子函数的库
3 #define uint unsigned int //宏定义
4 #define uchar unsigned char //宏定义
5 sbit dula=P2^6; //数码管段选锁存端
6 sbit wela=P2^7; ////数码管位选锁存端
7 uchar num,tt,iled;
8 uchar code table[]={
9 0x3f,0x06,0x5b,0x4f,
10 0x66,0x6d,0x7d,0x07,
11 0x7f,0x6f,0x77,0x7c,
12 0x39,0x5e,0x79,0x71};
13 void main()
14 {
15 1 num=0;
16 1 tt=0;
17 1 iled=0xfe;
18 1 TMOD=0x01;//设置定时器0为工作方式1
19 1 TH0=(65536-5000)/256;
20 1 TL0=(65536-5000)%256;
21 1 EA=1;//开总中断
22 1 ET0=1;//开定时器0中断
23 1 TR0=1;//启动定时器0
24 1 dula=1;
25 1 P0=0x3f; //给段开始送显示0。
26 1 dula=0;//关闭段选锁存端,防止开始时出现乱码。
27 1 wela=1;//11101010
28 1 P0=0x00; // 打开六个数码管位选
29 1 wela=0;
30 1 while(1)
31 1 {
32 2 if(tt==1) //每进入10次中断即为500ms,执行一次显示变化。
33 2 {
34 3
35 3 tt=0;
36 3
37 3 if(num==8)
38 3 num=0;
39 3 // dula=1;
40 3 P0=0xff;
41 3 // dula=0;
42 3 wela=1;
43 3 P0=iled;
44 3 wela=0;
45 3 iled=_crol_(iled,1);
46 3
47 3
48 3 dula=1;
49 3 P0=table[num];
50 3 num++;
51 3 dula=0;
52 3
53 3
54 3 }
55 2 }
C51 COMPILER V6.12 EXAM 03/08/2009 00:20:35 PAGE 2
56 1 }
57
58
59 void exter0() interrupt 1 // 定时器0中断
60 {
61 1 TH0=(65536-5000)/256;
62 1 TL0=(65536-5000)%256;
63 1 tt++;
64 1 }
C51 COMPILER V6.12 EXAM 03/08/2009 00:20:35 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION main (BEGIN)
; SOURCE LINE # 13
; SOURCE LINE # 14
; SOURCE LINE # 15
0000 E4 CLR A
0001 F500 R MOV num,A
; SOURCE LINE # 16
0003 F500 R MOV tt,A
; SOURCE LINE # 17
0005 7500FE R MOV iled,#0FEH
; SOURCE LINE # 18
0008 758901 MOV TMOD,#01H
; SOURCE LINE # 19
000B 758CEC MOV TH0,#0ECH
; SOURCE LINE # 20
000E 758A78 MOV TL0,#078H
; SOURCE LINE # 21
0011 D2AF SETB EA
; SOURCE LINE # 22
0013 D2A9 SETB ET0
; SOURCE LINE # 23
0015 D28C SETB TR0
; SOURCE LINE # 24
0017 D2A6 SETB dula
; SOURCE LINE # 25
0019 75803F MOV P0,#03FH
; SOURCE LINE # 26
001C C2A6 CLR dula
; SOURCE LINE # 27
001E D2A7 SETB wela
; SOURCE LINE # 28
0020 F580 MOV P0,A
; SOURCE LINE # 29
0022 C2A7 CLR wela
0024 ?C0001:
; SOURCE LINE # 30
; SOURCE LINE # 31
; SOURCE LINE # 32
0024 E500 R MOV A,tt
0026 B401FB CJNE A,#01H,?C0001
; SOURCE LINE # 33
; SOURCE LINE # 35
0029 E4 CLR A
002A F500 R MOV tt,A
; SOURCE LINE # 37
002C E500 R MOV A,num
002E B40803 CJNE A,#08H,?C0004
; SOURCE LINE # 38
0031 E4 CLR A
0032 F500 R MOV num,A
0034 ?C0004:
; SOURCE LINE # 40
0034 7580FF MOV P0,#0FFH
; SOURCE LINE # 42
0037 D2A7 SETB wela
; SOURCE LINE # 43
0039 850080 R MOV P0,iled
; SOURCE LINE # 44
003C C2A7 CLR wela
C51 COMPILER V6.12 EXAM 03/08/2009 00:20:35 PAGE 4
; SOURCE LINE # 45
003E AF00 R MOV R7,iled
0040 7801 MOV R0,#01H
0042 EF MOV A,R7
0043 08 INC R0
0044 8001 SJMP ?C0008
0046 ?C0007:
0046 23 RL A
0047 ?C0008:
0047 D8FD DJNZ R0,?C0007
0049 F500 R MOV iled,A
; SOURCE LINE # 48
004B D2A6 SETB dula
; SOURCE LINE # 49
004D E500 R MOV A,num
004F 900000 R MOV DPTR,#table
0052 93 MOVC A,@A+DPTR
0053 F580 MOV P0,A
; SOURCE LINE # 50
0055 0500 R INC num
; SOURCE LINE # 51
0057 C2A6 CLR dula
; SOURCE LINE # 54
; SOURCE LINE # 55
0059 80C9 SJMP ?C0001
; FUNCTION main (END)
; FUNCTION exter0 (BEGIN)
; SOURCE LINE # 59
; SOURCE LINE # 61
0000 758CEC MOV TH0,#0ECH
; SOURCE LINE # 62
0003 758A78 MOV TL0,#078H
; SOURCE LINE # 63
0006 0500 R INC tt
; SOURCE LINE # 64
0008 32 RETI
; FUNCTION exter0 (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 100 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -