📄 irc_000.lst
字号:
C51 COMPILER V8.02 IRC_000 03/24/2009 20:01:13 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE IRC_000
OBJECT MODULE PLACED IN irc_000.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE irc_000.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<stc89c51rc_rd+.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define irc P1
5 #define disp_data P2
6 #define t_3ms5 0x0c
7 #define t_1ms 0x03
8
9 unsigned char seg_bcd[] = {0x7e,0x48,0xbc,0xb6,0xd2,0xe6,0xee,0x38,0xFe,0xf2,
10 };// 0--9
11 uchar get_code[4] = {0} ;
12 uchar tms[20]={0};
13 uchar timer;
14 void UartInit();
15 void UartSendChar(unsigned char ch);
16 void delay(uint time) //10ms--10000
17 {
18 1 while(time--);
19 1 }
20
21 void set_timer()
22 {
23 1 TH0=0;
24 1 TL0=0;
25 1 TR0=1;
26 1 }
27
28 void disp(dat)
29 {
30 1 switch (dat)
31 1 {case 0x1b:dat=10;break;
32 2 case 0x1f:dat=11;break;
33 2 case 0x1e:dat=12;break;
34 2 case 0x1a:dat=13;break;
35 2 default:break;
36 2 }
37 1 disp_data=seg_bcd[dat];
38 1 }
39
40 uchar get_num()
41 { uchar i,j,rd,dat=0;
42 1 for(j=0;j<4;j++)
43 1 { for(i=8;i>0;i--)
44 2 {
45 3 dat>>=1;
46 3 do
47 3 rd=irc;
48 3 while(!(rd&0x04)); // wait high
49 3 set_timer(); //检测高电平时间
50 3 do
51 3 rd=irc;
52 3 while(rd&0x04); // wait low
53 3 TR0=0;
54 3 timer=TH0;
55 3 if(timer>t_1ms)dat=dat|0x80;
C51 COMPILER V8.02 IRC_000 03/24/2009 20:01:13 PAGE 2
56 3 else dat=dat&0x7f;
57 3 }
58 2 get_code[j]=dat;
59 2 }
60 1 return(get_code[2]);
61 1 }
62
63 void main()
64 {
65 1 uchar rd;
66 1 UartInit();
67 1 P2=0x00;
68 1 P1=0xef;
69 1 disp(5);
70 1 TMOD=0x01;//T0选择方式一
71 1 judge:
72 1 do
73 1 rd=P1;
74 1 while(rd&0x04); //wait low
75 1 delay(100);
76 1 rd=P1;
77 1 if(rd&0x04)goto judge; //xiao dou
78 1 do
79 1 rd=irc;
80 1 while(!(rd&0x04)); //wait high
81 1 set_timer();
82 1 do
83 1 rd=irc;
84 1 while(rd&0x04); //wait low
85 1 TR0=0;
86 1 timer=TH0;
87 1 if(timer<t_3ms5){delay(2000);goto judge;}//连续按下,重复标志
88 1 rd=get_num();
89 1 disp(rd);
90 1 UartSendChar(rd);
91 1 goto judge;
92 1 }
93 /************************************************************
94 * Name: UartInit
95 * Func:
96 * 串行通信初始化
97 * Para:
98 * uchar ch: 发送的字符
99 * Return: None
100 ***********************************************************/
101 void UartInit()
102 {
103 1 SCON = 0x50; // SCON: serail mode 1, 8-bit UART
104 1 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
105 1 PCON |= 0x80; // SMOD="1";
106 1 TH1 = 0xFA; // Baud:9600 fosc="11".0592MHz
107 1 TL1 = 0xFA;
108 1 IE |= 0x90; // 使能串行中断
109 1
110 1 TR1 = 1; // 启动TIMER1
111 1
112 1 }
113 /************************************************************
114 * Name: UartSendChar
115 * Func:
116 * 向串口发送一个字符
117 * Para:
C51 COMPILER V8.02 IRC_000 03/24/2009 20:01:13 PAGE 3
118 * uchar ch: 发送的字符
119 * Return: None
120 ***********************************************************/
121 void UartSendChar(unsigned char ch)
122 {
123 1 SBUF = ch;
124 1 while(TI==0);
125 1 TI=0;
126 1 }
127
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 269 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 35 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 + -