📄 第二方案中断.lst
字号:
C51 COMPILER V8.02 第二方案中断 09/02/2007 21:01:14 PAGE 1
C51 COMPILER V8.02, 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 #include<reg51.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5
6 sbit dula=P2^7;
7 sbit wela=P2^6; //数码管段,位定义
8 sbit send=P1^0; //发送端定义
9
10
11 uint count=0,js,L,a,b;
12 uchar a1,a2,a3;
13
14 void display(uchar,uchar,uchar);
15 void delay(uchar);
16
17 uchar code table[]={
18 0x3f,0x06,0x5b,0x4f,
19 0x66,0x6d,0x7d,0x07,
20 0x7f,0x6f,0x77,0x7c,
21 0x39,0x5e,0x79,0x71}; //段码数组
22
23 void main()
24 {
25 1 EA=0;
26 1 send=0;
27 1 delay(100);
28 1
29 1 TH0=0x1F;
30 1 TL0=0xF4; //T0设初值刚好驱动探头
31 1 TH1=0x00;
32 1 TL1=0x00; //T1计数设初值
33 1 TMOD=0x10; //T0为模式0,13位计数; T1为模式1,16位计数
34 1
35 1 TR0=1; //开启T0
36 1 /*TR1=1;*/ //开启T1
37 1
38 1 EA=1;
39 1 ET0=1;
40 1 PT0=1; //开启T0中断,并设高优先级
41 1
42 1 ET1=1; //开启T1中断,用于溢出显示无效
43 1 PX1=1; //该不该设?
44 1
45 1 IT0=1; // 低电平触发方式
46 1 EX0=1; //开启外部中断0
47 1 IE=0x83;
48 1
49 1 }
50
51
52 void display(uchar bai,uchar shi,uchar ge) //显示子函数
53 {
54 1 for(;;)
55 1 {
C51 COMPILER V8.02 第二方案中断 09/02/2007 21:01:14 PAGE 2
56 2 dula=1;
57 2 P0=table[bai];
58 2 dula=0;
59 2 wela=1;
60 2 P0=0x0d;
61 2 wela=0;
62 2 delay(1);
63 2
64 2 dula=1;
65 2 P0=table[shi];
66 2 dula=0;
67 2 wela=1;
68 2 P0=0x0b;
69 2 wela=0;
70 2 delay(1);
71 2
72 2 dula=1;
73 2 P0=table[ge];
74 2 dula=0;
75 2 wela=1;
76 2 P0=0x07;
77 2 wela=0;
78 2 delay(1);
79 2 }
80 1 }
81
82
83 void delay(uchar x5ms) //延时5ms子函数
84 {
85 1 for(b=x5ms;b>0;b--)
86 1 for(a=532;a>0;a--);
87 1 }
88
89
90 void time0_int(void) interrupt 1 //T0溢出中断,P1.0口连续发40KHz脉冲
91 {
92 1 count++;
93 1 send=!send;
94 1 TH0=0x1F;
95 1 TL0=0xF4;
96 1 /*if(count==17)
97 1 {
98 1 count=0;
99 1 TR0=0;
100 1 ET0=0;
101 1 TH0=0x00;
102 1 TL0=0x00;
103 1 }*/
104 1 }
105
106 void rec(void) interrupt 0 //外部中断0,接收信号并处理
107 {
108 1 TR0=0;
109 1 js=TH0*256+TL0;
110 1 if(js<300);
111 1 if(js>=300)
112 1 {
113 2 L=(17*js)/1000;
114 2 a1=L/100;
115 2 a2=L%100/10;
116 2 a3=L%100%10;
117 2 display(a1,a2,a3);
C51 COMPILER V8.02 第二方案中断 09/02/2007 21:01:14 PAGE 3
118 2 }
119 1 }
120
121 void time1_over(void) interrupt 3 //T1溢出则无效测量,显示FFF
122 { ET1=0;
123 1 a1=table[15];
124 1 a2=table[15];
125 1 a3=table[15];
126 1 display(a1,a2,a3);
127 1 ET1=1;
128 1 }
129
130
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 423 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 3
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 + -