?? hong2.lst
字號:
C51 COMPILER V8.02 HONG2 03/16/2009 22:48:17 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HONG2
OBJECT MODULE PLACED IN hong2.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL\C51\BIN\C51.EXE hong2.C BROWSE DEBUG OBJECTEXTEND
line level source
*** WARNING C500 IN LINE 1 OF HONG2.C: LICENSE ERROR (R201: INVALID LICENSE ID CODE (LIC))
1 #include <reg52.h>
2 #define c(x) (x*110592/120000)
3 sbit Ir_Pin=P3^2;
4 unsigned char code Led_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
5 0xf8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共陽極數碼顯示碼0-F.
6 unsigned char code Led_Sel[]={0xfe,0xfd,0xfb,0xf7};
7
8 unsigned char Led_Buf[4]; //顯示緩沖區
9
10 char Led_Index; //位選
11
12 unsigned char Ir_Buf[4]; //用于保存解碼結果
13
14
15 //==============================================================
16
17 //數碼管掃描
18
19 timer0() interrupt 1 using 1
20
21 {
22 1
23 1 TL0=65536-1000;
24 1 TH0=(65536-1000)/256; //定時器0設定約1000us中斷一次,用于數碼管掃描
25 1 P2=0;
26 1 P0=Led_Tab[Led_Buf[0]]; //段選
27 1 //P2=Led_Tab[Led_Buf[Led_Index]]; //段選
28 1 if(++Led_Index>3) Led_Index=0; //四個掃描完了,到第一個數碼管
29 1
30 1 }
31
32 //==============================================================
33
34 unsigned int Ir_Get_Low()
35
36 {
37 1
38 1 TL1=0;
39 1 TH1=0;
40 1 TR1=1;
41 1 while(!Ir_Pin && (TH1&0x80)==0);
42 1 TR1=0;
43 1 return TH1*256+TL1;
44 1
45 1 }
46
47 //=============================================================
48
49 unsigned int Ir_Get_High()
50
51 {
52 1
53 1 TL1=0;
54 1 TH1=0;
C51 COMPILER V8.02 HONG2 03/16/2009 22:48:17 PAGE 2
55 1 TR1=1;
56 1 while(Ir_Pin && (TH1&0x80)==0);
57 1 TR1=0;
58 1 return TH1*256+TL1;
59 1
60 1 }
61
62 //==============================================================
63
64 main()
65
66 {
67 1
68 1 unsigned int temp;
69 1 char i,j;
70 1 Led_Index=1;
71 1 TMOD=0x11;
72 1 TL0=65536-1000;
73 1 TH0=(65536-1000)/256; //定時器0設定約1000us中斷一次,用于數碼管掃描
74 1 EA=1;
75 1 ET0=1;
76 1 TR0=1;
77 1 Led_Buf[0]=0;
78 1 Led_Buf[1]=0;
79 1 Led_Buf[2]=0;
80 1 Led_Buf[3]=0; //顯示區設成0
81 1
82 1 do{
83 2
84 2 restart:
85 2
86 2 while(Ir_Pin);
87 2 temp=Ir_Get_Low();
88 2 if(temp<c(8500) || temp>c(9500)) continue;//引導脈沖低電平9000
89 2 temp=Ir_Get_High();
90 2 if(temp<c(4000) || temp>c(5000)) continue;//引導脈沖高電平4500
91 2 for(i=0;i<4;i++) //4個字節
92 2 for(j=0;j<8;j++) //每個字節8位
93 2
94 2 {
95 3
96 3 temp=Ir_Get_Low();
97 3 if(temp<c(200) || temp>c(800)) goto restart;
98 3 temp=Ir_Get_High();
99 3 if(temp<c(200) || temp>c(2000)) goto restart;
100 3 Ir_Buf[i]>>=1;
101 3 if(temp>c(1120)) Ir_Buf[i]|=0x80;
102 3
103 3 }
104 2
105 2 Led_Buf[0]=Ir_Buf[2]&0xf;
106 2 // Led_Buf[1]=(Ir_Buf[2]/16)&0xf;
107 2 // Led_Buf[2]=Ir_Buf[3]&0xf;
108 2 // Led_Buf[3]=(Ir_Buf[3]/16)&0xf; //顯示結果
109 2 }
110 1 while(1);
111 1
112 1
113 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.02 HONG2 03/16/2009 22:48:17 PAGE 3
CODE SIZE = 401 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -