📄 jiema.lst
字号:
C51 COMPILER V7.06 JIEMA 03/06/2007 00:27:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE JIEMA
OBJECT MODULE PLACED IN jiema.OBJ
COMPILER INVOKED BY: F:\keil c51\C51\BIN\C51.EXE jiema.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #define uint unsigned int
3 #define uchar unsigned char
4 void delay(uint k);//延时
5 void add(void); //把数组转化为地址码和数据码
6 void addled(void); //计算出led要显示的数
7 void display(void);//led显示
8 void count(void);
9 uchar SEG7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳
10 uchar scan_led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //片选 高平亮
11 uchar led[8]={1,2,3,4,5,6,7,8}; //每位led要显示的数
12 sbit P32=P3^2;
13 bit finish;//结束标志位
14 uchar tt[33];
15 uchar j,t;
16 uchar data1,data2,address1,address2;
17 void main(void)
18 {
19 1 TH0=0;TL0=0;
20 1 TMOD=0x19;
21 1 TR0=0;
22 1 EX0=1;//允许中断
23 1 IT0=1;//下降沿中断
24 1 TH1=252;TL1=0;
25 1 ET1=1;
26 1 TR1=1;
27 1 PT1=1;
28 1 EA=1;
29 1 while(1){
30 2 if(finish==1){finish=0;
31 3 add();
32 3 //addled();
33 3 count();
34 3 }
35 2 }
36 1 }
37 ////////////////////////////////////////////
38 void delay(uint k)//延时
39 {k=k*8;
40 1 while(--k);
41 1 }
42 //////////////////////////////////
43 void int0()interrupt 0
44 {uchar i;
45 1 EX0=0;
46 1 TR0=1;
47 1 while(P32==0);
48 1 while(P32==1){if(TH0>20)break;}//时间大于5.3ms时就退出
49 1 TR0=0;
50 1 t=(TH0*256+TL0)/100;
51 1 TH0=0;TL0=0;
52 1 tt[0]=t;
53 1 //if(t>42&&t<48){
54 1 for(i=1;i<=32;i++)
55 1 {
C51 COMPILER V7.06 JIEMA 03/06/2007 00:27:26 PAGE 2
56 2 TR0=1;
57 2 while(P32==0);
58 2 while(P32==1){if(TH0>20)break;}//时间大于2.7ms时就退出
59 2 TR0=0;
60 2 t=(TH0*256+TL0)/100;
61 2 TH0=0;TL0=0;
62 2 //if(t>4&&t<7)
63 2 tt[i]=t; //0.56ms为0
64 2 //if(t>15&&t<18)
65 2 //tt[i]=1;//1.68ms为1
66 2 TH0=0;TL0=0;
67 2 }
68 1 finish=1;
69 1 // }
70 1 EX0=1;
71 1 }
72 ///////////////////////////////////////////
73 void add(void) //把数组转化为地址码和数据码
74 {uchar i;
75 1 address1=0;
76 1 address2=0;
77 1 data1=0;
78 1 data2=0;//清0
79 1 for(i=8;i>0;i--)
80 1 {address1=(address1<<1)|tt[i];
81 2 address2=(address2<<1)|tt[i+8];
82 2 data1=(data1<<1)|tt[i+16];
83 2 data2=(data2<<1)|tt[i+24];
84 2 }
85 1 }
86 ///////////////////////////////////////////
87 void addled(void) //计算出led要显示的数
88 {if((data1+data2)==0xff)//数据码和反码的检验
89 1 {led[7]=address1>>4;//取高位
90 2 led[6]=address1&0x0f;//取低位
91 2 led[5]=address2>>4;
92 2 led[4]=address2&0x0f;
93 2 led[3]=data1>>4;
94 2 led[2]=data1&0x0f;
95 2 led[1]=data2>>4;
96 2 led[0]=data2&0x0f;
97 2 }
98 1 }
99 //////////////////////////////////////////
100 void display(void)//led显示
101 { P0=0xff;
102 1 P2=scan_led[j]; //片选扫瞄
103 1 P0=SEG7[led[j]]; //共阳段显
104 1 j++;
105 1 if(j>=8)j=0;
106 1 }
107 ////////////////////////
108 void timer1()interrupt 3
109 {TH1=245;TL1=0;
110 1 display();
111 1 }
112 ////////////////////////////
113 void count(void)
114 {led[7]=tt[0]/10;
115 1 led[6]=tt[0]%10;
116 1 led[5]=tt[1]/10;
117 1 led[4]=tt[1]%10;
C51 COMPILER V7.06 JIEMA 03/06/2007 00:27:26 PAGE 3
118 1 led[3]=tt[2]/10;
119 1 led[2]=tt[2]%10;
120 1 led[1]=tt[3]/10;
121 1 led[0]=tt[3]%10;
122 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 478 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -