📄 pwm控制led.lst
字号:
C51 COMPILER V7.07 PWM控制LED 11/26/2007 20:00:38 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE PWM控制LED
OBJECT MODULE PLACED IN PWM控制LED.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE PWM控制LED.c BROWSE DEBUG OBJECTEXTEND TABS(8)
stmt level source
1 // PWM 控制 LED 灯渐亮渐灭程序
2 // 晶振为11.0592M
3 // 利用定时器控制产生占空比可变的 PWM 波
4 // 按K1,PWM值增加,则占空比减小,LED 灯渐暗。
5 // 按K2,PWM值减小,则占空比增加,LED 灯渐亮。
6 // 当PWM值增加到最大值或减小到最小值时,蜂鸣器将报警。
7
8 /*********************************************************/
9 #include"reg51.h"
10 #include"intrins.h"
11 #define uchar unsigned char
12 #define uint unsigned int
13 sbit K1=P3^2; //增加键
14 sbit K2=P3^3; //减少键
15 sbit BEEP=P1^4; //蜂鸣器
16 uchar PWM=0x7f; //赋初值
17
18 void Beep(void);
19 void delayms(uchar ms);
20 void delay(uchar t);
21
22 /*********************************************************/
23 void main(void)
24 {
25 1 TMOD=0x21;
26 1 TH0=0xfc; //1ms延时常数
27 1 TL0=0x66; //频率调节
28 1 TH1=PWM; //脉宽调节
29 1 TL1=0;
30 1 EA=1;
31 1 ET0=1;
32 1 ET1=1;
33 1 TR0=1 ;
34 1 while(1)
35 1 {
36 2 do{
37 3 if(PWM!=0xff){PWM++;delayms(10);}
38 3 else Beep();
39 3 }while(K1==0);
40 2 do{
41 3 if(PWM!=0x02){PWM--;delayms(10);}
42 3 else Beep();
43 3 }while(K2==0);
44 2 }
45 1 }
46
47 /*********************************************************/
48 // 定时器0中断服务程序.
49 /*********************************************************/
50 void timer0() interrupt 1
51 {
52 1 TR1=0;
53 1 TH0=0xfc;
54 1 TL0=0x66;
55 1 TH1=PWM;
C51 COMPILER V7.07 PWM控制LED 11/26/2007 20:00:38 PAGE 2
56 1 TR1=1;
57 1 P0=0x00; //启动输出
58 1 }
59
60 /*********************************************************/
61 // 定时器1中断服务程序
62 /*********************************************************/
63 void timer1() interrupt 3
64 {
65 1 TR1=0;
66 1 P0=0xff; //结束输出
67 1 }
68
69 /*********************************************************/
70 //蜂鸣器子程序
71 /*********************************************************/
72 void Beep(void)
73 {
74 1 uchar i;
75 1 for(i=0;i<100;i++)
76 1 {
77 2 delay(100);
78 2 BEEP=!BEEP; //Beep取反
79 2 }
80 1 BEEP=1; //关闭蜂鸣器
81 1 delayms(100);
82 1 }
83
84 /*********************************************************/
85 // 延时子程序
86 /*********************************************************/
87 void delay(uchar t)
88 {
89 1 while(t--);
90 1 }
91
92 /*********************************************************/
93 // 延时子程序
94 /*********************************************************/
95 void delayms(uchar ms)
96 {
97 1 uchar i;
98 1 while(ms--)
99 1 {
100 2 for(i=0;i<120;i++);
101 2 }
102 1 }
103 /********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 140 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 1
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 + -