📄 ex.lst
字号:
C51 COMPILER V7.07 EX 03/03/2004 11:20:31 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE EX
OBJECT MODULE PLACED IN Ex.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Ex.c BROWSE INTVECTOR(0X8000) DEBUG OBJECTEXTEND
stmt level source
1 #include "reg52.h"
2
3 sbit P1_0=P1^0;
4 sbit P1_1=P1^1;
5 sbit P1_2=P1^2;
6
7 unsigned char PWMH; //高电平脉冲的个数
8 unsigned char PWM; //PWM周期
9 unsigned char COUNTER;
10
11 void K1CHECK();
12 void K2CHECK();
13
14 void INTTO() interrupt 1
15 {
16 1 COUNTER++; //计数值加1
17 1 if((COUNTER!=PWMH)&&(COUNTER==PWM)) //如果等于高电平脉冲数
18 1 {
19 2 COUNTER=1; //计数器复位
20 2 P1_0=1; //P1.0为高电平
21 2 }
22 1 else if(COUNTER==PWMH)
23 1 P1_0=0; //P1.0变为低电平
24 1 }
25
26 main()
27 {
28 1 PWMH=0x02;
29 1 COUNTER=0x01;
30 1 PWM=0x15;
31 1 TMOD=0x02; //定时器0在模式2下工作
32 1 TL0=0x38; //定时器每200us产生一次溢出
33 1 TH0=0x38; //自动重装的值
34 1 ET0=1; //使能定时器0中断
35 1 EA=1; //使能总中断
36 1 TR0=1; //开始计时
37 1
38 1 while(1)
39 1 {
40 2 if(P1_1==0)
41 2 K1CHECK();//扫描KEY1,
42 2 if(P1_2==0)
43 2 K2CHECK();//扫描KEY2,如果按下KEY2,跳转到KEY2处理程序
44 2 }
45 1 }
46 void K1CHECK()
47 {
48 1 while(P1_1==0);
49 1 if(PWMH!=PWM)
50 1 {
51 2 PWMH++;
52 2 if(PWMH==PWM)
53 2 {
54 3 TR0=0;
55 3 P1_0=1;
C51 COMPILER V7.07 EX 03/03/2004 11:20:31 PAGE 2
56 3 }
57 2 else
58 2 {
59 3 if(PWMH==0x02)
60 3 {
61 4 TR0=1;
62 4 }
63 3 }
64 2 }
65 1 }
66 void K2CHECK()
67 {
68 1 unsigned char TEMP;
69 1 while(P1_2==0);
70 1 if(PWMH!=0x01)
71 1 {
72 2 PWMH--;
73 2 TEMP=PWM;
74 2 TEMP--;
75 2 if(PWMH==0x01)
76 2 {
77 3 TR0=0;
78 3 P1_0=0;
79 3 }
80 2 else
81 2 {
82 3 if(PWMH==TEMP)
83 3 {
84 4 TR0=1;
85 4 }
86 3 }
87 2 }
88 1 }
89
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 135 ----
CONSTANT SIZE = ---- ----
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 + -