?? 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 + -