📄 ck.lst
字号:
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE CK
OBJECT MODULE PLACED IN CK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CK.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1
2 //串口使用2400,N,8,1
3
4 #include <STC89C52RC.H>
5 #include <intrins.h>
6
7 #define uchar unsigned char
8 #define uint unsigned int
9
10 void UartInit(void);
11 uchar HEX2ASCII(uchar dat);
12 void Tx1Send(uchar i);
13 void PrintString(uchar code *p);
14 void SJZ(uint i);
15 void InitT0(void);
16
17
18 /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
19 串口初始化函数 字符 2400bps@12MHz 校验位N 数据位8 停止位1
20 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
21 void UartInit(void) //2400bps@12MHz
22 {
23 1 PCON &= 0x7f; //波特率不倍速
24 1 SCON = 0x50; //8位数据,可变波特率
25 1 AUXR &= 0xbf; //定时器1时钟为Fosc/12,即12T
26 1 AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
27 1 TMOD &= 0x0f; //清除定时器1模式位
28 1 TMOD |= 0x20; //设定定时器1为8位自动重装方式
29 1 TL1 = 0xF3; //设定定时初值
30 1 TH1 = 0xF3; //设定定时器重装值
31 1 ET1 = 0; //禁止定时器1中断
32 1 TR1 = 1; //启动定时器1
33 1 }
34
35 /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
36 十六进制转ASCII函数
37 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
38 uchar HEX2ASCII(uchar dat)
39 {
40 1 dat &= 0x0f;
41 1 if(dat <= 9) return(dat+'0'); //数字0~9
42 1 return (dat-10+'A'); //字母A~F
43 1 }
44
45 /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
46 发送函数
47 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
48 void Tx1Send(uchar i)
49 {
50 1 SBUF=i;
51 1 while(!TI);
52 1 TI=0;
53 1 }
54
55 /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 2
56 字符串发送函数
57 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
58 void PrintString(uchar code *p) //发送一串字符串
59 {
60 1 for(; *p != 0; p++) Tx1Send(*p); //遇到停止符0结束
61 1 }
62
63 /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
64 双字节十进制发送函数
65 ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
66 void SJZ(uint i)
67 {
68 1 bit BT;
69 1 uchar n1,n2,n3,n4,n5;
70 1
71 1 BT = 0;
72 1 n1 = i/10000;
73 1 n2 = i/1000%10;
74 1 n3 = i/100%10;
75 1 n4 = i/10%10;
76 1 n5 = i%10;
77 1
78 1 if(n1) { Tx1Send(HEX2ASCII(n1)); BT = 1;}
79 1 else PrintString(" ");
80 1
81 1 if(n2 | BT){ Tx1Send(HEX2ASCII(n2)); BT = 1;}
82 1 else PrintString(" ");
83 1
84 1 if(n3 | BT){ Tx1Send(HEX2ASCII(n3)); BT = 1;}
85 1 else PrintString(" ");
86 1
87 1 if(n4 | BT) Tx1Send(HEX2ASCII(n4));
88 1 else PrintString(" ");
89 1
90 1 Tx1Send(HEX2ASCII(n5));
91 1 }
92
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION UartInit (BEGIN)
; SOURCE LINE # 21
; SOURCE LINE # 22
; SOURCE LINE # 23
0000 53877F ANL PCON,#07FH
; SOURCE LINE # 24
0003 759850 MOV SCON,#050H
; SOURCE LINE # 25
0006 538EBF ANL AUXR,#0BFH
; SOURCE LINE # 26
0009 538EFE ANL AUXR,#0FEH
; SOURCE LINE # 27
000C 53890F ANL TMOD,#0FH
; SOURCE LINE # 28
000F 438920 ORL TMOD,#020H
; SOURCE LINE # 29
0012 758BF3 MOV TL1,#0F3H
; SOURCE LINE # 30
0015 758DF3 MOV TH1,#0F3H
; SOURCE LINE # 31
0018 C2AB CLR ET1
; SOURCE LINE # 32
001A D28E SETB TR1
; SOURCE LINE # 33
001C 22 RET
; FUNCTION UartInit (END)
; FUNCTION _HEX2ASCII (BEGIN)
; SOURCE LINE # 38
;---- Variable 'dat' assigned to Register 'R7' ----
; SOURCE LINE # 39
; SOURCE LINE # 40
0000 53070F ANL AR7,#0FH
; SOURCE LINE # 41
0003 EF MOV A,R7
0004 D3 SETB C
0005 9409 SUBB A,#09H
0007 EF MOV A,R7
0008 5004 JNC ?C0002
000A 2430 ADD A,#030H
000C FF MOV R7,A
000D 22 RET
000E ?C0002:
; SOURCE LINE # 42
000E 2437 ADD A,#037H
0010 FF MOV R7,A
; SOURCE LINE # 43
0011 ?C0003:
0011 22 RET
; FUNCTION _HEX2ASCII (END)
; FUNCTION L?0022 (BEGIN)
0000 120000 R LCALL _HEX2ASCII
; FUNCTION _Tx1Send (BEGIN)
; SOURCE LINE # 48
;---- Variable 'i' assigned to Register 'R7' ----
; SOURCE LINE # 49
; SOURCE LINE # 50
0003 8F99 MOV SBUF,R7
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 4
0005 ?C0004:
; SOURCE LINE # 51
0005 3099FD JNB TI,?C0004
0008 ?C0005:
; SOURCE LINE # 52
0008 C299 CLR TI
; SOURCE LINE # 53
000A 22 RET
; FUNCTION _Tx1Send (END)
; FUNCTION L?0020 (BEGIN)
0000 L?0021:
0000 7E00 R MOV R6,#HIGH ?SC_0
0002 7F00 R MOV R7,#LOW ?SC_0
; FUNCTION _PrintString (BEGIN)
; SOURCE LINE # 58
;---- Variable 'p' assigned to Register 'DPTR' ----
0004 8F82 MOV DPL,R7
0006 8E83 MOV DPH,R6
; SOURCE LINE # 59
; SOURCE LINE # 60
0008 ?C0007:
0008 E4 CLR A
0009 93 MOVC A,@A+DPTR
000A FF MOV R7,A
000B 6006 JZ ?C0010
000D 120000 R LCALL _Tx1Send
0010 A3 INC DPTR
0011 80F5 SJMP ?C0007
; SOURCE LINE # 61
0013 ?C0010:
0013 22 RET
; FUNCTION _PrintString (END)
; FUNCTION _SJZ (BEGIN)
; SOURCE LINE # 66
;---- Variable 'i' assigned to Register 'R2/R3' ----
0000 AB07 MOV R3,AR7
0002 AA06 MOV R2,AR6
; SOURCE LINE # 67
; SOURCE LINE # 71
0004 C200 R CLR BT
; SOURCE LINE # 72
0006 7C27 MOV R4,#027H
0008 7D10 MOV R5,#010H
000A 120000 E LCALL ?C?UIDIV
000D 8F00 R MOV n1,R7
; SOURCE LINE # 73
000F 7C03 MOV R4,#03H
0011 7DE8 MOV R5,#0E8H
0013 AF03 MOV R7,AR3
0015 AE02 MOV R6,AR2
0017 120000 E LCALL ?C?UIDIV
001A 7C00 MOV R4,#00H
001C 7D0A MOV R5,#0AH
001E 120000 E LCALL ?C?UIDIV
0021 8D00 R MOV n2,R5
; SOURCE LINE # 74
0023 7C00 MOV R4,#00H
0025 7D64 MOV R5,#064H
0027 AF03 MOV R7,AR3
0029 AE02 MOV R6,AR2
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 5
002B 120000 E LCALL ?C?UIDIV
002E 7C00 MOV R4,#00H
0030 7D0A MOV R5,#0AH
0032 120000 E LCALL ?C?UIDIV
0035 8D00 R MOV n3,R5
; SOURCE LINE # 75
0037 7C00 MOV R4,#00H
0039 7D0A MOV R5,#0AH
003B AF03 MOV R7,AR3
003D AE02 MOV R6,AR2
003F 120000 E LCALL ?C?UIDIV
0042 7C00 MOV R4,#00H
0044 7D0A MOV R5,#0AH
0046 120000 E LCALL ?C?UIDIV
0049 8D00 R MOV n4,R5
; SOURCE LINE # 76
004B AE02 MOV R6,AR2
004D AF03 MOV R7,AR3
004F 7C00 MOV R4,#00H
0051 7D0A MOV R5,#0AH
0053 120000 E LCALL ?C?UIDIV
;---- Variable 'n5' assigned to Register 'R5' ----
; SOURCE LINE # 78
0056 E500 R MOV A,n1
0058 6008 JZ ?C0011
005A FF MOV R7,A
005B 120000 R LCALL L?0022
005E D200 R SETB BT
0060 8003 SJMP ?C0012
0062 ?C0011:
; SOURCE LINE # 79
0062 120000 R LCALL L?0020
0065 ?C0012:
; SOURCE LINE # 81
0065 A200 R MOV C,BT
0067 E4 CLR A
0068 33 RLC A
0069 4500 R ORL A,n2
006B 6009 JZ ?C0013
006D AF00 R MOV R7,n2
006F 120000 R LCALL L?0022
0072 D200 R SETB BT
0074 8003 SJMP ?C0014
0076 ?C0013:
; SOURCE LINE # 82
0076 120000 R LCALL L?0020
0079 ?C0014:
; SOURCE LINE # 84
0079 A200 R MOV C,BT
007B E4 CLR A
007C 33 RLC A
007D 4500 R ORL A,n3
007F 600C JZ ?C0015
0081 AF00 R MOV R7,n3
0083 120000 R LCALL _HEX2ASCII
0086 120000 R LCALL _Tx1Send
0089 D200 R SETB BT
008B 8003 SJMP ?C0016
008D ?C0015:
; SOURCE LINE # 85
008D 120000 R LCALL L?0021
0090 ?C0016:
C51 COMPILER V9.00 CK 06/04/2011 12:13:06 PAGE 6
; SOURCE LINE # 87
0090 A200 R MOV C,BT
0092 E4 CLR A
0093 33 RLC A
0094 4500 R ORL A,n4
0096 600A JZ ?C0017
0098 AF00 R MOV R7,n4
009A 120000 R LCALL _HEX2ASCII
009D 120000 R LCALL _Tx1Send
00A0 8003 SJMP ?C0018
00A2 ?C0017:
; SOURCE LINE # 88
00A2 120000 R LCALL L?0021
00A5 ?C0018:
; SOURCE LINE # 90
00A5 AF05 MOV R7,AR5
00A7 120000 R LCALL _HEX2ASCII
00AA 020000 R LJMP _Tx1Send
; FUNCTION _SJZ (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 251 ----
CONSTANT SIZE = 2 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -