📄 1503cs.lst
字号:
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 1503CS
OBJECT MODULE PLACED IN 1503cs.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1503cs.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND CODE LISTINCLUDE SYMBOLS PR
-EPRINT
line level source
1 /*********************************************************************/
2 /*公司名称:南通现代电力 */
3 /*模 块 名:1305cs.c CPU型号 :77E58 */
4 /*创 建 人:李晓军 日期:2005-08-28 */
5 /*修 改 人: 日期:2005-11-26 */
6 /*功能描述: */
7 /*其他说明: */
8 /*版 本:v1.03 */
9 /*************************************************************************/
10 #include "w77e58.h"
1 =1 //W77E58头文件;整理:聂小猛。该资料来自“51单片机世界”http://go.163.com/~dz2000,欢迎访问。
2 =1 /*--BYTE Registers-------------------------------------------------*/
3 =1 sfr P0 = 0x80;
4 =1 sfr P1 = 0x90;
5 =1 sfr P2 = 0xA0;
6 =1 sfr P3 = 0xB0;
7 =1 #define p0 P0
8 =1 #define p1 P1
9 =1 #define p2 P2
10 =1 #define p3 P3
11 =1
12 =1
13 =1 sfr PSW = 0xD0;
14 =1 sfr ACC = 0xE0;
15 =1 sfr B = 0xF0;
16 =1 sfr SP = 0x81;
17 =1 sfr DPL = 0x82;
18 =1 sfr DPH = 0x83;
19 =1 sfr PCON = 0x87;//PCON.7(SMOD)拨特率加倍,PCON.1(PD)掉电方式,PCON.0(IDL)冻结方式
20 =1 //PCON.6(SMOD0)帧错检测允许,PCON.3(GF1)PCON.2(GF0)
21 =1 sfr TCON = 0x88;//定时控制寄存器
22 =1 sfr TMOD = 0x89;//"gate,c/t,m1,m0"x2定时器方式GATE=1时只有intx=1时才可以开放定时器x;
23 =1 //c/t =1时计书数方式,=0时定时方式。m1m0=00时13位计数,=01时16位=10时自装入8位,
24 =1 //11时定时器0分两个,定时器1停止。
25 =1 sfr TL0 = 0x8A;
26 =1 sfr TL1 = 0x8B;
27 =1 sfr TH0 = 0x8C;
28 =1 sfr TH1 = 0x8D;
29 =1 sfr IE = 0xA8;
30 =1 sfr IP = 0xB8;//中断优先级
31 =1 sfr SCON = 0x98;//串口控制与状态
32 =1 sfr SBUF = 0x99;
33 =1
34 =1 /*--W77E58 Extensions---------------------------------------------*/
35 =1 sfr T2CON = 0xC8;
36 =1 sfr T2MOD = 0xc9;//HC5,HC4,HC3,HC2,T2CR,-,T2OE,DCEN
37 =1 //hc5-hc2 =1时外中断5-2标志硬件自动清除。
38 =1 //t2cr=1 捕获完成时自动复位
39 =1 //t2oe=1 定时器2输出允许
40 =1 //dcen=1 减计数允许,结合外部输入t2ex使用,16位自装入模式
41 =1 sfr RCAP2L= 0xCA;//重装的预置数,捕获的输出
42 =1 sfr RCAP2H= 0xCB;
43 =1 sfr TL2 = 0xCC;
44 =1 sfr TH2 = 0xCD;
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 2
45 =1
46 =1 sfr DPL1 = 0x84;
47 =1 sfr DPH1 = 0x85;
48 =1 sfr DPS = 0x86;
49 =1
50 =1 sfr CKCON = 0x8e;//wd1,wd0,t2m,t1m,t0m,md2,md1,md0
51 =1 //wd1wd0:看门狗计数00=2^17,01=2^20,10=2^23,11=2^26
52 =1 //t2m,t1m,t0m等于1时时钟4分频
53 =1 //md2,md1,md0 MOVX执行机器周期000=2,001=3。。。111=9
54 =1 sfr EXIF = 0x91;//ie5,ie4,ie3,ie2,XT/RG,RGMD,RGSL,-
55 =1 //ie5,ie3=1外中断下跳变中断标志
56 =1 //ie4,ie3=2外中断上跳变中断标志
57 =1 sfr P4 = 0xa5;//低四位有效
58 =1 sfr SADDR = 0xa9;//从机串口0地址
59 =1 sfr SADDR1= 0xaa;//从机串口1地址
60 =1 sfr SADEN = 0xb9;//串口0地址屏蔽,等于0时所有地址都会引起中断
61 =1 sfr SADEN1= 0xba;//串口0地址屏蔽,等于0时所有地址都会引起中断
62 =1 sfr SCON1 = 0xc0;
63 =1 sfr SBUF1 = 0xc1;
64 =1 sfr ROMMAP= 0xc2;//ROMMAP.7为等待信号使能,用movx指令时,wait脚为p4.0
65 =1 sfr PMR = 0xc4;//CD1,CD0,SWB,-,XTOFF,ALE-OFF,-DME0
66 =1 //cd0cd1=0时钟不变,=1-1/4,=2-1/64,=3=1/1024
67 =1 //swb=1强制4分频,外中断或串口中断唤醒
68 =1 //aleoff =1时ale信号终止,外部内存访问时自动唤醒
69 =1 //dme0 =1时内部1kram使能
70 =1 sfr STATUS= 0xc5;//-,HIP,LIP,XTUP,SPTA1,SPRA1,SPTA0,SPRA0
71 =1 //hip=1正在处理高优先级中断
72 =1 //lip=1正在处理低优先级中断
73 =1 //spta1串口0正在发送数据
74 =1 //spra1串口0正在接收数据
75 =1 //spta0串口0正在发送数据
76 =1 //spra0串口0正在接收数据
77 =1 sfr TA = 0xc7;//保护位
78 =1 sfr WDCON = 0xd8;//SMOD_1,POR,-,-,WDIF,WTRF,EWT,RWT
79 =1 //smod1 加倍串口1的拨特率,pro电源复位标志
80 =1 //por 电源复位标志
81 =1 //wdif看门狗定时中断标志,软清
82 =1 //wtrf看门狗定时器复位标志,看门狗引起复位后,该位置1
83 =1 //ewt 允许看门狗定时器自动复位
84 =1 //rwt复位看门狗定时器,如果看门狗溢出还没有被复位计数器,将会引起中断,再过512周期将复位
85 =1 sfr EIE = 0xe8;//-,-,-,EWDI,EX5,EX4,EX3,EX2
86 =1 //ewdi=1,允许看门狗中断?
87 =1 //ex5-ex2;外部中断允许
88 =1 sfr EIP = 0xf8;//-,-,-,pwdi,px5,px4,px3,px2
89 =1 //pwdi=1 看门狗中断优先
90 =1 //px5-px2=1 外部中断优先
91 =1
92 =1 /*--BIT Registers-------------------------------------------------*/
93 =1 /* PSW */
94 =1 sbit CY = 0xD7;
95 =1 sbit AC = 0xD6;
96 =1 sbit F0 = 0xD5;
97 =1 sbit RS1 = 0xD4;
98 =1 sbit RS0 = 0xD3;
99 =1 sbit OV = 0xD2;
100 =1 sbit P = 0xD0;
101 =1
102 =1 /* TCON */
103 =1 sbit TF1 = 0x8F;//定时器1溢出标志,自动清零
104 =1 sbit TR1 = 0x8E;//timer1运行控制位
105 =1 sbit TF0 = 0x8D;//定时器0溢出标志,自动清零
106 =1 sbit TR0 = 0x8C;//timer0运行控制位
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 3
107 =1 sbit IE1 = 0x8B;//外中断1跳变中断请求标志,自动清零
108 =1 sbit IT1 = 0x8A;//中断1跳变检测使能
109 =1 sbit IE0 = 0x89;//外中断0跳变中断请求标志,自动清零
110 =1 sbit IT0 = 0x88;//中断0跳变检测使能
111 =1
112 =1 /* IE */
113 =1 sbit EA = 0xAF;//
114 =1 sbit ES = 0xAC;
115 =1 sbit ET1 = 0xAB;
116 =1 sbit EX1 = 0xAA;
117 =1 sbit ET0 = 0xA9;
118 =1 sbit EX0 = 0xA8;
119 =1
120 =1 /* IP */
121 =1 sbit PS = 0xBC;//串口0中断优先设定
122 =1 sbit PT1 = 0xBB;//定时器1中断优先
123 =1 sbit PX1 = 0xBA;//外中断1
124 =1 sbit PT0 = 0xB9;//定时器0中断优先
125 =1 sbit PX0 = 0xB8;//外中断0
126 =1
127 =1 /* P3 */
128 =1 sbit RD = 0xB7;
129 =1 sbit WR = 0xB6;
130 =1 sbit T1 = 0xB5;
131 =1 sbit T0 = 0xB4;
132 =1 sbit INT1 = 0xB3;
133 =1 sbit INT0 = 0xB2;
134 =1 sbit TXD = 0xB1;
135 =1 sbit RXD = 0xB0;
136 =1
137 =1 /* SCON */
138 =1 sbit SM0 = 0x9F;//SM0/FE 串口0方式0选择或帧错标志,人工清零
139 =1 sbit SM1 = 0x9E;//串口1工作方式选择0-4/12tclk同步,1-10位可设bps异步,2-64/32tclk异步,3-11位可变bps异步
140 =1 sbit SM2 = 0x9D;//允许方式2和3的多机通讯控制位。方式2、3中=1时接收到的第9位为0时不启动接收中断ri标志
141 =1 //方式1中,=1时只有收到有效停止时才启动ri,方式0中=1将拨特率提高3倍。
142 =1 sbit REN = 0x9C;//允许接收标志
143 =1 sbit TB8 = 0x9B;//方式23中要发送的第9位。
144 =1 sbit RB8 = 0x9A;//方式23中接收到的第9位。
145 =1 sbit TI = 0x99;//发送中断标志
146 =1 sbit RI = 0x98;//接收中断标志
147 =1
148 =1 /*--W77E58 Extensions--------------------------------------------*/
149 =1 /* PSW */
150 =1 sbit F1 = 0xd1;
151 =1
152 =1 /* IE */
153 =1 sbit ET2 = 0xAD;//定时器2允许
154 =1 sbit ES1 = 0xae;//串口1优先
155 =1
156 =1 /* IP */
157 =1 sbit PT2 = 0xBD;//定时器2优先
158 =1 sbit PS1 = 0xbe;//串口1优先
159 =1
160 =1 /* P1 */
161 =1 sbit T2 = 0x90;//计数器2输入端口
162 =1 sbit T2EX = 0x91;//计数器捕获触发
163 =1 sbit RXD1 = 0x92;//串口1入
164 =1 sbit TXD1 = 0x93;//串口2出
165 =1 sbit INT2 = 0x94;//外中断2,上跳变触发
166 =1 sbit INT3 = 0x95;//外中断3,下跳变触发
167 =1 sbit INT4 = 0x96;//外中断4,上跳变触发
168 =1 sbit INT5 = 0x97;//外中断5,下跳变触发
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 4
169 =1
170 =1
171 =1 /* T2CON */
172 =1 sbit TF2 = 0xCF;//定时器2溢出标志,软清除
173 =1 sbit EXF2 = 0xCE;//定时器2外部标志,当exen2=1且t2ex引脚负跳变引起捕获或重载时置位,软清。
174 =1 sbit RCLK = 0xCD;//接收时钟标志,=1时串口0用定时器2溢出做时钟。
175 =1 sbit TCLK = 0xCC;//发送时钟标志,=1时串口0用定时器2溢出做时钟。
176 =1 sbit EXEN2 = 0xCB;//定时器2外部允许标志,=1时若未用作拨特率发生器,t2ex脚的负跳变引起捕获
177 =1 sbit TR2 = 0xCA;//定时器2运行控制位
178 =1 sbit C_T2 = 0xC9;//计数/定时选择,=1时计数
179 =1 sbit CP_RL= 0xC8;//捕获/重载标志,=1时,外部允许时,vt2ex负跳变发生捕获
180 =1 //=0时 溢出或外部允许时,vt2ex负跳变发生重载
181 =1
182 =1 /* SCON1 */ //注释参考SCON
183 =1 sbit SM0_1 = 0xC7;
184 =1 sbit SM1_1 = 0xC6;
185 =1 sbit SM2_1 = 0xC5;
186 =1 sbit REN_1 = 0xC4;
187 =1 sbit TB8_1 = 0xC3;
188 =1 sbit RB8_1 = 0xC2;
189 =1 sbit TI_1 = 0xC1;
190 =1 sbit RI_1 = 0xC0;
191 =1
192 =1 /* WDCON */
193 =1 sbit SMOD_1= 0xDF; //加倍串口1的拨特率,pro电源复位标志
194 =1 sbit POR = 0xDE; //电源复位标志
195 =1 sbit WDIF = 0XDB; //看门狗定时中断标志,软清
196 =1 sbit WTRF = 0xDA; //看门狗定时器复位标志,看门狗引起复位后,该位置1
197 =1 sbit EWT = 0xD9; // 允许看门狗定时器自动复位
198 =1 sbit RWT = 0xD8; //复位看门狗定时器,如果看门狗溢出还没有被复位计数器,将会引起中断,再过512周期将复位
199 =1
200 =1
201 =1 /* EIE */
202 =1 sbit EWDI = 0xec; //允许看门狗中断
203 =1 sbit EX5 = 0xeb; //ex5-ex2;外部中断允许
204 =1 sbit EX4 = 0xea;
205 =1 sbit EX3 = 0xe9;
206 =1 sbit EX2 = 0xe8;
207 =1
208 =1 /* EIP */
209 =1 sbit PWDI = 0xfc; //pwdi=1 看门狗中断优先
210 =1 sbit PX5 = 0xfb; //px5-px2=1 外部中断优先
211 =1 sbit PX4 = 0xfa;
212 =1 sbit PX3 = 0xf9;
213 =1 sbit PX2 = 0xf8;
11 #include <stdio.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 STDIO.H
3 =1
4 =1 Prototypes for standard I/O functions.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __STDIO_H__
10 =1 #define __STDIO_H__
11 =1
12 =1 #ifndef EOF
13 =1 #define EOF -1
14 =1 #endif
15 =1
16 =1 #ifndef NULL
C51 COMPILER V7.50 1503CS 12/31/2005 10:44:49 PAGE 5
17 =1 #define NULL ((void *) 0)
18 =1 #endif
19 =1
20 =1 #ifndef _SIZE_T
21 =1 #define _SIZE_T
22 =1 typedef unsigned int size_t;
23 =1 #endif
24 =1
25 =1 #pragma SAVE
26 =1 #pragma REGPARMS
27 =1 extern char _getkey (void);
28 =1 extern char getchar (void);
29 =1 extern char ungetchar (char);
30 =1 extern char putchar (char);
31 =1 extern int printf (const char *, ...);
32 =1 extern int sprintf (char *, const char *, ...);
33 =1 extern int vprintf (const char *, char *);
34 =1 extern int vsprintf (char *, const char *, char *);
35 =1 extern char *gets (char *, int n);
36 =1 extern int scanf (const char *, ...);
37 =1 extern int sscanf (char *, const char *, ...);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -