?? pwm控制led.lst
字號:
C51 COMPILER V7.07 PWM控制LED 12/25/2007 23:17:39 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^3; //增加鍵
14 sbit K2=P3^5; //減少鍵
15 sbit BEEP=P1^0; //蜂鳴器
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 12/25/2007 23:17:39 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 + -