📄 定时器和外部中断.lst
字号:
C51 COMPILER V7.50 定时芲和外部中断 08/23/2011 12:59:33 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 定时芲和外部中断
OBJECT MODULE PLACED IN 定时器和外部中断.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 定时器和外部中断.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 * 文件名 : 定时器和外部中断.c
3 * 描述 : 外部中断和定时器一样,是单片机最基本也是最重要的两个功能.
4 * 创建人 : 东流,2009年4月9日
5 * 版本号 : 2.0
6 ***********************************************************************/
7 #include<reg52.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 sbit KEY = P3^2;
12 uchar Count = 0;
13 uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
14
15 /********************************************************************
16 * 名称 : Delay()
17 * 功能 : 延时,延时时间为 10ms * del
18 * 输入 : del
19 * 输出 : 无
20 ***********************************************************************/
21 void Delay(uint del)
22 {
23 1 uint i,j;
24 1 for(i=0; i<del; i++)
25 1 for(j=0; j<1827; j++)
26 1 ;
27 1 }
28
29 /********************************************************************
30 * 名称 : Outside_Init()
31 * 功能 : 外部中断0 的初始化
32 * 输入 : 无
33 * 输出 : 无
34 ***********************************************************************/
35 void Outside_Init(void)
36 {
37 1 IT0 = 1; //负边沿触发
38 1 EX0 = 1; //外部中断0允许
39 1 }
40
41 /********************************************************************
42 * 名称 : Outside_Int()
43 * 功能 : 外部中断0 的中断处理
44
45 * 输入 : 无
46 * 输出 : 无
47 ***********************************************************************/
48 void Outside_Int(void) interrupt 0
49 {
50 1 Delay(3); //延时30ms,去掉这行会出现按一下中断几次的情况
51 1 if(KEY == 0) //对按键进行抗干扰处理
52 1 {
53 2 P0 = 0xff;
54 2 }
55 1 Delay(100);
C51 COMPILER V7.50 定时芲和外部中断 08/23/2011 12:59:33 PAGE 2
56 1 }
57
58 /********************************************************************
59 * 名称 : Time0_Init()
60 * 功能 : 定时器的初始化,11.0592MZ晶振,50ms
61 * 输入 : 无
62 * 输出 : 无
63 ***********************************************************************/
64 void Time0_Init()
65 {
66 1 TMOD = 0x01; //定时器0选用方式1
67 1 TH0 = 0x4c; //初值的计算
68 1 TL0 = 0x00;
69 1 TR0 = 1; //启动定时器
70 1 ET0 = 1; //打开定时器中断允许位
71 1 }
72
73 /********************************************************************
74 * 名称 : Time0_Int()
75 * 功能 : 定时器中断,中断中实现 Count 加一
76 * 输入 : 无
77 * 输出 : 无
78 ***********************************************************************/
79 void Time0_Int() interrupt 1
80 {
81 1 TH0 = 0x4c;
82 1 TL0 = 0x00;
83 1 Count++; //长度加1
84 1 }
85
86 /********************************************************************
87 * 名称 : Main()
88 * 功能 : 外部中断试验主程序
89 * 输入 : 无
90 * 输出 : 无
91 ***********************************************************************/
92 void Main(void)
93 {
94 1 uint i = 0;
95 1 Time0_Init();
96 1 Outside_Init();
97 1 EA = 1; //打开总中断
98 1 while(1)
99 1 {
100 2 P0 = table[i % 10]; //取 i 的个位
101 2 if(Count == 20) //当Count为 20 时,i 自加一次,20 * 50MS = 1S
102 2 {
103 3 Count = 0;
104 3 i++;
105 3 }
106 2 }
107 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 167 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.50 定时芲和外部中断 08/23/2011 12:59:33 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -