📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 08/26/2007 17:57:35 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <INTRINS.H>
3 #include <math.H>
4 #include <stdio.H>
5 #include "Mini51B.H"
6 #include "LCD1602.h"
7
8 #define UART_ASK 0xA5
9
10 sbit GATE=P3^2;
11 sbit OPEN=P1^0;
12 sbit CLRP=P3^5;
13 sbit BEEP=P1^7;
14
15 unsigned char xdata REG0 _at_ 0xfff0;
16 unsigned char xdata REG1 _at_ 0xfff1;
17 unsigned char xdata REG2 _at_ 0xfff2;
18 unsigned char xdata REG3 _at_ 0xfff3;
19
20 unsigned char str_buff[30];
21 unsigned char counter;
22
23
24
25
26 void rs232_port_init(void)
27 {
28 1 SCON|=0x50; //串口工作在方式1,异步模式
29 1 PCON|=0x80; //波特率翻倍
30 1 TMOD|=0x20; //定时器1工作在方式2
31 1 TH1=0xff; //波特率115200,晶振为22.1184MHz
32 1 TL1=0xff;
33 1 TR1 = 1; //启动定时器,产生波特率
34 1 RI = 0; //接收标志位清零
35 1 TI = 0; //发送标志位清零
36 1 // ES = 1; //中断允许
37 1 // EA = 1;
38 1 }
39
40 void timer0_init()
41 {
42 1
43 1 TMOD|=0x09;
44 1 ET0=1;
45 1 EA=1;
46 1 TR0=0;
47 1 }
48
49
50 void uart_putc(unsigned char c)
51 {
52 1 SBUF = c;
53 1 while(!TI);
54 1 TI = 0;
55 1 }
C51 COMPILER V8.02 MAIN 08/26/2007 17:57:35 PAGE 2
56
57 unsigned char uart_getc()
58 {
59 1 while(!RI);
60 1 RI = 0;
61 1 return SBUF;
62 1 }
63
64 void uart_puts(unsigned char *s)
65 {
66 1 while (*s)
67 1 {
68 2 uart_putc(*s);
69 2 s++;
70 2 }
71 1 uart_putc(0x0d);
72 1 uart_putc(0x0a);
73 1 }
74
75
76
77 main()
78 {
79 1 double fx,temp;
80 1
81 1 lcd1602_init();
82 1 rs232_port_init();
83 1 timer0_init();
84 1 OPEN=0;
85 1 BEEP=0;
86 1 delay_ms(100);
87 1 BEEP=1;
88 1
89 1 while(1)
90 1 {
91 2
92 2 OPEN=0;
93 2 while(GATE);
94 2 CLRP=1;
95 2 _nop_();
96 2 _nop_();
97 2 _nop_();
98 2 _nop_();
99 2 CLRP=0;
100 2
101 2 TH0=0;
102 2 TL0=0;
103 2 counter=0;
104 2 TR0=1;
105 2 OPEN=1;
106 2 while(counter<1);
107 2 OPEN=0;
108 2 while(GATE);
109 2 TR0=0;
110 2
111 2 //uart_putc(REG0);
112 2
113 2 temp=counter*65536+TH0*256+TL0;
114 2 fx=1843200/temp;
115 2 fx=fx*(REG2*65536+REG1*256+REG0);
116 2 sprintf(str_buff,"%-8.3fHz",fx);
117 2 lcd_put_xys(1,1,"f=");
C51 COMPILER V8.02 MAIN 08/26/2007 17:57:35 PAGE 3
118 2 lcd_put_xys(3,1,str_buff);
119 2 uart_puts(str_buff);
120 2 /*
121 2 uart_putc(REG2);
122 2 uart_putc(REG1);
123 2 uart_putc(REG0);
124 2 uart_putc(0x55);
125 2 uart_putc(0x55); */
126 2
127 2 delay_ms(1000);
128 2 }
129 1 }
130
131 void timer0_int(void) interrupt 1
132 {
133 1 counter++;
134 1 }
135
136
137
138 //串口接收中断
139 void serial_int(void) interrupt 4
140 {
141 1 unsigned char temp;
142 1 if (RI)
143 1 {
144 2 temp = SBUF;
145 2 RI = 0;
146 2 switch (temp)
147 2 {
148 3 case 0:
149 3 //Add your code
150 3 P1 = ~uart_getc();
151 3 break;
152 3 case 1:
153 3 //do one task
154 3
155 3 break;
156 3 //...
157 3 //...
158 3
159 3 case UART_ASK:
160 3 uart_putc(UART_ASK);
161 3 break;
162 3 default:
163 3 break;
164 3 }
165 2 }
166 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 935 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 31 17
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 + -