📄 int0+int1.lst
字号:
C51 COMPILER V8.02 INT0_INT1 12/13/2006 21:22:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE INT0_INT1
OBJECT MODULE PLACED IN INT0+INT1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE INT0+INT1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************/
2 /* */
3 /* ME500单片机开发系统演示程序 - INT0 INT1 中断计数 */
4 /* */
5 /* 6位数码管显示 */
6 /* */
7 /* 版本: V1.0 (2006/11/20) */
8 /* 作者: gguoqing (Email: gguoqing@willar.com) */
9 /* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) */
10 /* 时间: 2006/12/13 */
11 /* */
12 /*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved */
13 /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! */
14 /* */
15 /*******************************************************************/
16
17 #include < reg51.h >
18 #include <intrins.h>
19
20 #define uchar unsigned char
21 #define uint unsigned int
22
23 unsigned char code LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,
24 0x82,0xF8,0x80,0x90,0xff};
25
26 unsigned char data display[8] = {0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00};
27
28 unsigned char code scan_bit[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
29
30 unsigned char count0,count1,temp=0 ;
31
32 /********************************************************
33 * *
34 * 延时函数 *
35 * *
36 ********************************************************/
37 void delay(uint ms)
38 // 延时子程序
39 {
40 1 uchar k;
41 1 while(ms--)
42 1 {
43 2 for(k = 0; k < 100; k++);
44 2 }
45 1 }
46
47 /********************************************************
48 * *
49 * 数据处理与显示函数 *
50 * *
51 ********************************************************/
52 void disp_count()
53 {
54 1 char n;
55 1
C51 COMPILER V8.02 INT0_INT1 12/13/2006 21:22:31 PAGE 2
56 1 temp=count0;
57 1
58 1 display[2]=temp/100; //数据处理
59 1 temp=temp%100;
60 1 display[1]=temp/10;
61 1 display[0]=temp%10;
62 1
63 1 if(display[2]==0) //高位为0,不显示
64 1 {
65 2 display[2]=0x0a;
66 2 if(display[1]==0)
67 2 display[1]=0x0a;
68 2 }
69 1
70 1 temp=count1;
71 1
72 1 display[7]=temp/100; //数据处理
73 1 temp=temp%100;
74 1 display[6]=temp/10;
75 1 display[5]=temp%10;
76 1
77 1 if(display[7]==0) //高位为0,不显示
78 1 {
79 2 display[7]=0x0a;
80 2 if(display[6]==0)
81 2 display[6]=0x0a;
82 2 }
83 1
84 1 for(n=0;n<8;n++)
85 1 {
86 2 P0 =LEDData[display[n]] ; //显示段码
87 2 P2 =scan_bit[n]; //输出位码
88 2 delay(1);
89 2 P2 = 0xff; //关闭显示
90 2 }
91 1 }
92
93 /********************************************************
94 * *
95 * 主程序 *
96 * *
97 ********************************************************/
98 void main(void)
99 {
100 1 P0=0xff;
101 1 P1=0xff;
102 1 P2=0xff;
103 1
104 1 IT0=0; //低电平触发
105 1 // IT0=1; //下降沿触发
106 1 IT1=0; //低电平触发
107 1 // IT1=1; //下降沿触发
108 1 PX0=1;
109 1 EA=1;
110 1 EX1=1;
111 1 EX0=1;
112 1
113 1 while(1)
114 1 {
115 2 disp_count();
116 2 }
117 1 }
C51 COMPILER V8.02 INT0_INT1 12/13/2006 21:22:31 PAGE 3
118
119 /********************************************************
120 * *
121 * INT0中断函数 *
122 * *
123 ********************************************************/
124 void counter0(void) interrupt 0
125 {
126 1 uchar x;
127 1 EX0=0;
128 1 count0++;
129 1
130 1 for(x=0;x<10;x++)
131 1 {
132 2 disp_count();
133 2 }
134 1 EX0=1;
135 1 }
136
137 /********************************************************
138 * *
139 * INT1中断函数 *
140 * *
141 ********************************************************/
142 void counter1(void) interrupt 2
143 {
144 1 uchar x;
145 1 EX1=0;
146 1 count1++;
147 1
148 1 for(x=0;x<10;x++)
149 1 {
150 2 disp_count();
151 2 }
152 1 EX1=1;
153 1 }
154
155 /********************************************************/
156
157
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 332 ----
CONSTANT SIZE = 19 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -