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