📄 7.1.lst
字号:
C51 COMPILER V7.09 7_1 08/23/2005 13:17:18 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE 7_1
OBJECT MODULE PLACED IN 7.1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 7.1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #ifndef AT89C51_HEADER_FILE
2 #define AT89C51_HEADER_FILE 1
3 //Byte 寄存器
4 sfr SP = 0x81;
5 sfr DPL = 0x82;
6 sfr DPH = 0x83;
7 sfr PCON = 0x87;
8 sfr TCON = 0x88;
9 sfr TMOD = 0x89;
10 sfr TL0 = 0x8A;
11 sfr TL1 = 0x8B;
12 sfr TH0 = 0x8C;
13 sfr TH1 = 0x8D;
14 sfr P1 = 0x90;
15 sfr SCON = 0x98;
16 sfr SBUF = 0x99;
17 sfr IE = 0xA8;
18 sfr P3 = 0xB0;
19 sfr IP = 0xB8;
20 sfr PSW = 0xD0;
21 sfr ACC = 0xE0;
22 sfr B = 0xF0;
23 //PCON
24 #define IDL_ 0x01
25 #define STOP_ 0x02
26 #define EWT_ 0x04
27 #define EPFW_ 0x08
28 #define WTR_ 0x10
29 #define PFW_ 0x20
30 #define POR_ 0x40
31 #define SMOD_ 0x80
32
33 //TCON
34 sbit IT0 = 0x88;
35 sbit IE0 = 0x89;
36 sbit IT1 = 0x8A;
37 sbit IE1 = 0x8B;
38 sbit TR0 = 0x8C;
39 sbit TF0 = 0x8D;
40 sbit TR1 = 0x8E;
41 sbit TF1 = 0x8F;
42
43 //TMOD值
44 #define T0_M0_ 0x01
45 #define T0_M1_ 0x02
46 #define T0_CT_ 0x04
47 #define T0_GATE_ 0x08
48 #define T1_M0_ 0x10
49 #define T1_M1_ 0x20
50 #define T1_CT_ 0x40
51 #define T1_GATE_ 0x80
52
53 #define T1_MASK_ 0xF0
54 #define T0_MASK_ 0x0F
55
C51 COMPILER V7.09 7_1 08/23/2005 13:17:18 PAGE 2
56 //P1
57 sbit P1_0 = 0x90;
58 sbit P1_1 = 0x91;
59 sbit P1_2 = 0x92;
60 sbit P1_3 = 0x93;
61 sbit P1_4 = 0x94;
62 sbit P1_5 = 0x95;
63 sbit P1_6 = 0x96;
64 sbit P1_7 = 0x97;
65
66 sbit AIN0 = 0x90; // + 输入
67 sbit AIN1 = 0x91; //- 输入
68
69 //SCON
70 sbit RI = 0x98;
71 sbit TI = 0x99;
72 sbit RB8 = 0x9A;
73 sbit TB8 = 0x9B;
74 sbit REN = 0x9C;
75 sbit SM2 = 0x9D;
76 sbit SM1 = 0x9E;
77 sbit SM0 = 0x9F;
78
79 //IE
80 sbit EX0 = 0xA8; // 开INT0
81 sbit ET0 = 0xA9; // 开ET0
82 sbit EX1 = 0xAA; // 开INT1
83 sbit ET1 = 0xAB; // Timer 1
84 sbit ES = 0xAC; // 开ES
85 sbit ET2 = 0xAD; // Timer 2
86
87 sbit EA = 0xAF; // 关中断
88
89 //P3
90 sbit P3_0 = 0xB0;
91 sbit P3_1 = 0xB1;
92 sbit P3_2 = 0xB2;
93 sbit P3_3 = 0xB3;
94 sbit P3_4 = 0xB4;
95 sbit P3_5 = 0xB5;
96 sbit P3_7 = 0xB7;
97
98 sbit RXD = 0xB0; // 串行收中断
99 sbit TXD = 0xB1; //串行发中断
100 sbit INT0 = 0xB2; // INT0
101 sbit INT1 = 0xB3; // INT11
102 sbit T0 = 0xB4; // Timer 0
103 sbit T1 = 0xB5; // Timer 1
104 sbit AOUT = 0xB6; // 模拟输出
105
106 //IP
107 sbit PX0 = 0xB8;
108 sbit PT0 = 0xB9;
109 sbit PX1 = 0xBA;
110 sbit PT1 = 0xBB;
111 sbit PS = 0xBC;
112
113 //PSW
114 sbit P = 0xD0;
115 sbit FL = 0xD1;
116 sbit OV = 0xD2;
117 sbit RS0 = 0xD3;
C51 COMPILER V7.09 7_1 08/23/2005 13:17:18 PAGE 3
118 sbit RS1 = 0xD4;
119 sbit F0 = 0xD5;
120 sbit AC = 0xD6;
121 sbit CY = 0xD7;
122
123 //中断地址= (Number * 8) + 3
124 #define IE0_VECTOR 0 // 0x03 INT0
125 #define TF0_VECTOR 1 // 0x0B Timer 0
126 #define IE1_VECTOR 2 // 0x13 INT11
127 #define TF1_VECTOR 3 // 0x1B Timer 1
128 #define SIO_VECTOR 4 // 0x23 串行口
129
130 #endif
131
132 // io分配:
133 /* OUTPUT:
134 P1.0 ...... 模拟量输入
135 P1.1 ...... DA输入比较基准电压
136 P1.2~7..... R-2R DA电阻网络
137 P3.7 ...... LED 模拟亮度输出
138 CPU CLOCK EQU 6M */
139
140 //#pragma src
141
142
143 #include <stdlib.h>
144 #include<math.h>
145 #include<intrins.h>
146
147 //变量类型标识的宏定义
148 #define Uchar unsigned char
149 #define Uint unsigned int
150
151 #define Ledlight() (P3 &= 0x7f)
152 #define Leddark() (P3 |= 0x80)
153
154 sbit P36 = P3^6; // 比较器内部判断脚
155 sbit LED = P3^7; // 一个发光二级管观察亮度变化
156
157 // 内部标志位定义
158 bit less; // 比较是否大于 1.小于,0.大于
159
160 // 全局变量定义
161 Uchar timer1, // 通用延时计数器
162 timer2, // 按键蜂鸣器反应定时器
163 adcdata, // ad转换变量
164 pwm1; // PWM输出比例
165
166 // 函数列表
167 void DelayMs(unsigned int number); // 毫秒延时
168 void timers0(); // 在定时器中断中做数码管的扫描显示(ct0)
169 void Initall(void); // 系统初始化
170 void timers1(void); // TC1定时器中断用于扫描显示与键盘
171 Uchar adcread(void); // adc转换程序
172
173 void main(void) using 0
174 {
175 1 DelayMs(120);
176 1 Initall();
177 1 pwm1 = adcread();
178 1 LED=1;
179 1 while(1)
C51 COMPILER V7.09 7_1 08/23/2005 13:17:18 PAGE 4
180 1 {
181 2 pwm1 = adcread();
182 2 timer2=10;
183 2 while (timer2);
184 2 }
185 1 }
186 // 毫秒延时
187 void DelayMs(unsigned int number)
188 {
189 1 unsigned char temp;
190 1
191 1 for(;number!=0;number--)
192 1 for(temp=112;temp!=0;temp--);
193 1 }
194
195 //在定时器中断中做LED的PWM输出
196
197 void timers0() interrupt 1 using 1
198 {
199 1 TH0 = 0xff;
200 1 TL0 = 0xd0;
201 1 timer1--;
202 1 if (timer1==pwm1)LED=0;
203 1 if (timer1==0){
204 2 LED=1;
205 2 timer1=0x40;
206 2 timer2--;
207 2 };
208 1 }
209
210 //6位 ADC转换
211 Uchar adcread(void)
212 {
213 1 Uchar i=0x3f,temp=0;
214 1 P36 =1;
215 1 P1 = 3; _nop_();_nop_(); //从零开始
216 1 while ((i--)&& (P36))
217 1 {
218 2 temp += 4;
219 2 P1 = temp|3;
220 2 _nop_();
221 2 }
222 1 temp >>= 2;
223 1 return temp;
224 1 }
225
226 //系统初始化
227 void Initall(void)
228 {
229 1 TMOD = 0x11; // 0001 0001 16进制计数器
230 1 IP = 0x8; // 0000 1000 t1优先
231 1 IE = 0x8A; // 1000 1010 t0,t1中断允许
232 1 TCON = 5; // 0000 0101 外部中断低电平触发
233 1 TR0 = 1; // 打开定时器中断,IE中已经打开,在明示一下
234 1 TR1 = 0;
235 1 ET0 = 1;
236 1 ET1 = 0;
237 1 P1 = 0xff;
238 1 }
239
240 // TC1定时器中断用于扫描显示与键盘(ct1)
241 void timers1(void) interrupt 3 using 2
C51 COMPILER V7.09 7_1 08/23/2005 13:17:18 PAGE 5
242 {
243 1 _nop_(); //实验中没有启用
244 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 151 ----
CONSTANT SIZE = ---- ----
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 + -