?? pwm.lst
字號:
C51 COMPILER V7.08 PWM 05/12/2007 17:30:02 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE PWM
OBJECT MODULE PLACED IN pwm.OBJ
COMPILER INVOKED BY: D:\工具安裝目錄二\Keil C51\C51\BIN\C51.EXE pwm.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 //#include <at89x52.h>
3 //#include <keyscan.h>
4 extern void scan_full(void);
5 extern unsigned char key_scan(void);
6 extern bit key_ok;
7 unsigned char pwm_set,key_value;
8 unsigned char count;
9 sbit PWM=P3^6;
10 bit up,down,set_flag;
11 unsigned char code BCD[]={0x3f,0x06,0x5b,0x4f, //此處是將0-F轉(zhuǎn)換成相應(yīng)的BCD碼
12 0x66,0x6d,0x7d,0x07,
13 0x7f,0x6f,0x77,0x7c,
14 0x39,0x5e,0x79,0x71};
15 void delay1(unsigned char t)
16 {
17 1 while(t--);
18 1 }
19
20
21
22 void pwm(void) interrupt 5//定時器2產(chǎn)生PWM波形
23 {
24 1 TF2=0; //定時器2的溢出標(biāo)志要軟件清除,
25 1 //但當(dāng)RCLK或TCLK為1時由硬件清除
26 1 if((count>=pwm_set)&&(count<10))
27 1 PWM=1;
28 1 else PWM=0;
29 1 count++;
30 1 if(count==10)
31 1 count=0x00;
32 1
33 1 }
34
35
36 void key_pwm(unsigned char x)//把鍵值轉(zhuǎn)化為PWM設(shè)置值
37 {
38 1 switch(x) //把矩陣鍵盤轉(zhuǎn)化為獨(dú)立鍵盤
39 1 {
40 2 case 1:up=1;break;
41 2 case 2:down=1;break;
42 2 case 3:set_flag=!set_flag;break;
43 2 default:break;
44 2 }
45 1
46 1 if(up&&set_flag) //設(shè)置PWM參數(shù):pwm_set
47 1 {
48 2 pwm_set++;
49 2 up=0;
50 2 if(pwm_set>=10)
51 2 pwm_set=0x00;
52 2 }
53 1 if(down&&set_flag)
54 1 {
55 2 pwm_set--;
C51 COMPILER V7.08 PWM 05/12/2007 17:30:02 PAGE 2
56 2 down=0;
57 2 if(pwm_set==0xff)
58 2 pwm_set=9;
59 2 }
60 1 if(!set_flag)
61 1 {
62 2 up=0;
63 2 down=0;
64 2 }
65 1 }
66
67
68 void main(void)
69 {
70 1 TH2=0xb1; //定時20MS
71 1 TL2=0xe0;
72 1 RCAP2H=0xb1;//定時器2溢出時會把這個單元的內(nèi)容送到TH2和TL2中
73 1 RCAP2L=0xe0;
74 1 EA=1;
75 1 ET2=1;
76 1 TR2=1;
77 1 while(1)
78 1 {
79 2 scan_full(); //看是否有鍵按下
80 2 if(key_ok) //有鍵按下,則判斷到底是哪個鍵按下
81 2 {
82 3 key_value=key_scan();//鍵值送key_value暫存
83 3 P0=~BCD[key_value]; /*此三句是將鍵值顯示出來*/
84 3 P2=0xfe; /** */
85 3 delay1(200); /*************************/
86 3 key_pwm(key_value); //調(diào)用鍵值轉(zhuǎn)PWM設(shè)置參數(shù)函數(shù)
87 3 key_value=0x00; //清除鍵值,以免一次按下,多次響應(yīng)
88 3 }
89 2 P0=~BCD[pwm_set]; /***此三句是將pwm_set值顯示出來*/
90 2 P2=0xfd; /******* */
91 2 delay1(200); /****************************/
92 2 }
93 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 187 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -