?? 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 + -