📄 hongwai.lst
字号:
C51 COMPILER V7.10 HONGWAI 10/13/2008 20:41:42 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 /* *
3 /* OK400C单片机开发系统演示程序 *
4 /* *
5 /* 版本: V2.0 (2007/11/20) *
6 /* 作者: 高山流水 (Email: aoke999@sohu.com) *
7 /* 网站: www.aokemcu.cn(奥科电子) *
8 /* *
9 /* *
10 /******************************************************************/
11
12 #include <reg52.h> //51芯片管脚定义头文件
13 #include <intrins.h> //内部包含延时函数 _nop_();
14
15 #define uchar unsigned char
16 #define uint unsigned int
17
18 sbit dula=P2^6;
19 sbit wela=P2^7;
20
21 //#define DELAYNUM 40 //该数值可以调节显示的速度
22
23 sbit IRIN = P3^2; //红外接收器数据线
24 sbit BEEP = P2^3; //蜂鸣器驱动线
25
26
27 //uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
28 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
29 uchar IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
30 uchar dis[8];
31
32 void delay(unsigned char x);
33 void display();
34 void beep();
35
36 void dis8(uchar r,uchar c)
37 {
38 1 dula=0;
39 1 P0=table[r];
40 1 dula=1;
41 1 dula=0;
42 1
43 1 wela=0;
44 1 P0=~(1<<c);
45 1 wela=1;
46 1 wela=0;
47 1 delay(5);
48 1 }
49
50 /*******************************************************
51 * *
52 * 主函数 *
53 * *
54 *******************************************************/
55 main(void)
C51 COMPILER V7.10 HONGWAI 10/13/2008 20:41:42 PAGE 2
56 {
57 1 // uchar k;
58 1
59 1 EA=1;
60 1 ET1=1;
61 1 EX0=1;
62 1 while(1)
63 1 {
64 2 dis8(IRCOM[4],5);
65 2 dis8(IRCOM[5],4);
66 2 }
67 1
68 1 } //end of main()
69
70
71 void IR_IN() interrupt 0 //using 0
72 {
73 1 unsigned char j,k,N=0;
74 1 EA = 0;
75 1 delay(10);
76 1
77 1 if (IRIN==1)
78 1 {
79 2 EA =1;
80 2 return;
81 2 }
82 1 //确认IR信号出现
83 1 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。
84 1 {
85 2 delay(1);
86 2 }
87 1 while (IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。
88 1 {
89 2 delay(1);
90 2 }
91 1 for (j=0;j<4;j++) //收集四组数据
92 1 {
93 2 for (k=0;k<8;k++) //每组数据有8位
94 2 {
95 3 while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
96 3 {
97 4 delay(1);
98 4 }
99 3 while (!IRIN) //等 IR 变为高电平
100 3 {
101 4 delay(1);
102 4 }
103 3 while (IRIN) //计算IR高电平时长
104 3 {
105 4 delay(1);
106 4 N++;
107 4 } //高电平计数完毕
108 3 if (N>=30)
109 3 {
110 4 EA=1;
111 4 return; //0.14ms计数过长自动离开。
112 4 }
113 3 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0”
114 3 if (N>7)
115 3 {
116 4 IRCOM[j] = IRCOM[j] | 0x80;
117 4 } //数据最高位补“
C51 COMPILER V7.10 HONGWAI 10/13/2008 20:41:42 PAGE 3
118 3 N=0;
119 3 }//end for k
120 2 }//end for j
121 1 /*
122 1 if (IRCOM[2]!=~IRCOM[3]) //接收时间是否正确
123 1 {
124 1 EA=1;
125 1 return;
126 1 }
127 1
128 1 if(IRCOM[0]!=0x00) //比较用户码
129 1 {
130 1 EA=1;
131 1 return;
132 1 }*/
133 1 IRCOM[4]=IRCOM[2] & 0x0F; //取键码的低四位
134 1 IRCOM[5]=IRCOM[2] >> 4; //右移4次,高四位变为低四位
135 1
136 1 beep();
137 1 EA = 1;
138 1 }
139
140 /**********************************************************/
141 void beep()
142 {
143 1 unsigned char i;
144 1 for (i=0;i<180;i++)
145 1 {
146 2 delay(6);
147 2 BEEP=!BEEP; //BEEP取反
148 2 }
149 1 BEEP=1; //关闭蜂鸣器
150 1 }
151 /**********************************************************/
152 void delay(unsigned char x) //x*0.14MS
153 {
154 1 unsigned char i;
155 1 while(x--)
156 1 {
157 2 for (i = 0; i<13; i++) {}
158 2 }
159 1 }
160
161 /**********************************************************/
162
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 314 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 4
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 + -