📄 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转换成相应的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产生PWM波形
23 {
24 1 TF2=0; //定时器2的溢出标志要软件清除,
25 1 //但当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)//把键值转化为PWM设置值
37 {
38 1 switch(x) //把矩阵键盘转化为独立键盘
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) //设置PWM参数: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溢出时会把这个单元的内容送到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); //调用键值转PWM设置参数函数
87 3 key_value=0x00; //清除键值,以免一次按下,多次响应
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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -