📄 keypwm.lst
字号:
C51 COMPILER V6.23a KEYPWM 12/11/2007 13:18:32 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE KEYPWM
OBJECT MODULE PLACED IN .\obj\keypwm.obj
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE driver\keypwm.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lst\keypwm.
-lst) OBJECT(.\obj\keypwm.obj)
stmt level source
1 /**********************************************************
2 *Header:
3 *File Name:
4 *Author: 陈培炜,杨帆
5 *Data;2007
6 *Function:
7 *********************************************************/
8 #include <REG52.h>
9 #include "DS18B20.h"
10 #include "Lcd.h"
11
12
13 sbit pwmout = P1^0;
14 sbit led1 = P1^1;
15 sbit led2 = P1^2;
16 sbit led3 = P1^3;
17 sbit led4 = P1^4;
18 sbit led5 = P1^5;
19 sbit led6 = P1^6;
20 sbit led7 = P1^7;
21 unsigned char code alltime = 10000;
22 unsigned int tempreture = 0; //存放温度数值
23 unsigned int High = 5000; //存放高电平延时时间
24 unsigned int Low = 5000; //存放低电平延时时间
25
26 extern unsigned char ut; //外部设置的上限温度
27 extern unsigned char dt; //外部设置的下限温度
28
29 /**********************************************************
30 *Header:
31 *File Name:
32 *Author: 陈培炜,杨帆
33 *Data;2007
34 *Function: 用延时做PWM
35 *********************************************************/
36
37 void DelayPwm(unsigned int t)
38 {
39 1 unsigned int a;
40 1 for(a=t; a!=0; a--)
41 1 {
42 2 ;
43 2 }
44 1 }
45
46 /**********************************************************
47 *Header:
48 *File Name:
49 *Author: 陈培炜,杨帆
50 *Data;2007
51 *Function: PWM高底电平输出
52 *********************************************************/
53
54 void Pwm(void)
C51 COMPILER V6.23a KEYPWM 12/11/2007 13:18:32 PAGE 2
55 {
56 1 pwmout = 1;
57 1 DelayPwm(High);
58 1 pwmout = 0;
59 1 DelayPwm(Low);
60 1
61 1 }
62
63 /**********************************************************
64 *Header:
65 *File Name:
66 *Author: 陈培炜,杨帆
67 *Data;2007
68 *Function: 定时器初始化
69 *********************************************************/
70
71 unsigned char TimerNum = 0x00;
72 void T0InterruptInitial(void)
73 {
74 1
75 1 TMOD = (TMOD & 0xf0) | 0x01; // 方式1,手动赋值赋值,定时长度65536 //
76 1 TH0 = TimerNum; // 定时0.001ms
77 1 TL0 = TimerNum;
78 1
79 1 }
80
81 /*************************************************
82 /*Header:DS18B20.h
83 /*File Name:main.c
84 /*Author: 陈培炜,杨帆
85 /*Data;2007
86 /*Function: 定时器中断程序
87 /************************************************/
88 void T0interrupt(void) interrupt 1
89 {
90 1 TH0 = TimerNum; // 定时0.001ms
91 1 TL0 = TimerNum;
92 1 tempreture = read0(); //在定时中断一到就读一次温度
93 1
94 1 if( tempreture>=30 && tempreture<=50 ) //如果读到的温度在30-50之间则计算高底电平延时时间
95 1 {
96 2 High = 25000-500*tempreture; //占空比(50-t)/20
97 2 Low = alltime - High;
98 2 }
99 1 else
100 1 {
101 2 High = 5000;
102 2 Low = 5000;
103 2 }
104 1
105 1 if(tempreture<=dt) //判断温度是否小于设定温度的下限值,如果小于,则LED亮
106 1 {
107 2 led1 = 0;
108 2 led2 = 0;
109 2 led3 = 0;
110 2 led4 = 0;
111 2 led5 = 0;
112 2 led6 = 0;
113 2 led7 = 0;
114 2 }
115 1 if(tempreture>=ut) //判断温度是否大于设定温度的上限值,如果大于,则LED灭
116 1 {
C51 COMPILER V6.23a KEYPWM 12/11/2007 13:18:32 PAGE 3
117 2 led1 = 1;
118 2 led2 = 1;
119 2 led3 = 1;
120 2 led4 = 1;
121 2 led5 = 1;
122 2 led6 = 1;
123 2 led7 = 1;
124 2 }
125 1 disp(tempreture,High); //显示温度值和占空比
126 1 }
127
128
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 248 ----
CONSTANT SIZE = 1 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 ----
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 + -