📄 30-14-3.lst
字号:
C51 COMPILER V7.06 30_14_3 03/10/2009 14:50:07 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 30_14_3
OBJECT MODULE PLACED IN 30-14-3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 30-14-3.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #define uchar unsigned char //定义一下方便使用
2 #define uint unsigned int
3 #define ulong unsigned long
4 #include <reg52.h> //包括一个52标准内核的头文件
5
6 sbit P10=P1^0; //要控制的LED灯
7 sbit K1=P3^0; //按键K1
8 sbit K2=P3^1; //按键K2
9 static uchar Tosc;//一个周期的时间
10 static uchar Duty;//占空比
11
12 void main(void)
13 {
14 1 TMOD=0x11; //T0和T1均选择工作方式1,16位定时器
15 1 TH0=0x3C;
16 1 TL0=0xB0; //定时时间为0.1s/周期
17 1 TH1=0x3C;
18 1 TL1=0xB0; //定时时间为0.1s/周期
19 1 ET0=1; //使能T0溢出中断
20 1 ET1=1;
21 1 EA=1; //使能CPU中断
22 1 TR0=0; //T0禁止运行
23 1 TR1=1; //唤醒T1,T1开始计数
24 1 while(1) //无限循环
25 1 {
26 2 ;
27 2 }
28 1 }
29
30 timer0(void) interrupt 1 //T0中断服务函数,占空比
31 {
32 1 if(Duty==0 && Tosc==0)Tosc=1; //消除都等于0时的Duty无限增长死循环
33 1 Duty++;
34 1 if(Duty==Tosc)
35 1 {
36 2 Duty=0;
37 2 P10=~P10; //矩形波中的高低电平反转
38 2 TR1=1; //开始T1计数
39 2 TR0=0; //禁止T0计数,等待T1将其唤醒
40 2 }
41 1 }
42
43 timer1(void) interrupt 3 //T1中断服务函数,频率
44 {
45 1 if(Tosc==10)Tosc=0; //定时时间为1s
46 1 Tosc++;
47 1 TR0=1; //开始T0计数
48 1 TR1=0; //禁止T1计数,等待T0将其唤醒
49 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 86 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.06 30_14_3 03/10/2009 14:50:07 PAGE 2
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -