?? main.lst
字號:
C51 COMPILER V7.50 MAIN 08/15/2007 19:26:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\軟件\單片機\keil c51\keil 軟件\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "hardware.h"
2 #include "LCD1602.h"
3 extern void (enable_timer1)();
4 extern void (enable_timer0)();
5 extern void (init_LCD1602)();
6
7 extern bit cur_signal;
8 extern unsigned int data freq;
9
10 /* 方波占空比 */
11 extern unsigned char data time_high, time_low;
12
13 /* 與方波頻率相關 */
14 extern unsigned char data rect_high_TH0;
15 extern unsigned char data rect_high_TL0;
16 extern unsigned char data rect_low_TH0;
17 extern unsigned char data rect_low_TL0;
18
19 /* 正弦頻率相關 */
20 extern unsigned char data sin_TH0;
21 extern unsigned char data sin_TL0;
22
23 /* 與幅度相關 */
24 extern unsigned char data range_low, range_high;
25 extern float data proportion; /* 幅度與DAC量程之比 */
26
27 extern mdelay(unsigned int);
28 void main()
29 {
30 1 unsigned int count;
31 1 // unsigned char dec_bit;
32 1 //char rect_line1[] = "F DR:5/5#";
33 1 cur_signal = SIG_RECT;
34 1 freq = 500;
35 1 range_high = 0xff;
36 1 range_low = 0x00;
37 1 time_high = 1;
38 1 time_low = 1;
39 1
40 1 proportion = (float)(range_high - range_low) / 0xff;
41 1
42 1 count = (HZ * time_high) / (freq * 12 * (time_high + time_low)) * 1000000;
43 1 rect_high_TL0 = (unsigned char) count;
44 1 rect_high_TH0 = count >> 8;
45 1
46 1 count = (HZ * time_low) / (freq * 12 * (time_high + time_low)) * 1000000;
47 1 rect_low_TL0 = (unsigned char) count;
48 1 rect_low_TH0 = count >> 8;
49 1
50 1 count = (HZ / (12 * 256 * freq)) * 1000000;
51 1 sin_TL0 = (unsigned char) count;
52 1 sin_TH0 = count >> 8;
53 1
54 1 init_LCD1602();
55 1 //if( cur_signal == SIG_RECT)
C51 COMPILER V7.50 MAIN 08/15/2007 19:26:19 PAGE 2
56 1 // print_line(0, 10, "F DR:5/5#");
57 1 //else //cur_signal == SIG_SIN
58 1 // print_line(0, 10, "Z 0.5-5.0v");
59 1
60 1 enable_timer0();
61 1 enable_timer1();
62 1
63 1 printstr(0x0, 0xf, "SignalGenerator");
64 1 printstr(0x40, 0x4f, "program running!");
65 1 mdelay(1000);
66 1 LCD_write_cmd(0x01);
67 1 //print : program running
68 1
69 1 printstr(0xa, 0xf, "0500HZ");
70 1
71 1 while (1) {
72 2 if (cur_signal == SIG_RECT) {
73 3 printstr(0x0, 0x3, "F DR");
74 3 LCD_write_data(0, 4, time_high + 0x30);
75 3 LCD_write_data(0, 5, 'H');
76 3 LCD_write_data(0, 6, time_low + 0x30);
77 3 LCD_write_data(0, 7, 'L');
78 3 LCD_write_data(0, 8, ' ');
79 3 LCD_write_data(0, 9, ' ');
80 3 printstr(0x40, 0x4f, "SET DR: 5L 6H ");
81 3 } else {// 正弦波
82 3 LCD_write_data(0, 0, 'Z');
83 3 LCD_write_data(0, 1, ' ');
84 3
85 3 /* range_low / 50 + 0x30;將256個階分為25份,每份10,
86 3 * 對于Vref為5V的情況,10近似地代表0.2V
87 3 * 50近似代表1V, 所以這里的dec_bit表示幅度的整數部分
88 3 */
89 3 LCD_write_data(0, 2, range_low / 50 + 0x30);
90 3 LCD_write_data(0, 3, '.');
91 3 LCD_write_data(0, 4, ((range_low / 5) % 10) + 0x30);
92 3 // (range_low / 5) % 10 + 0x30;range_low /5 表示0。1V的個數, %10 取個位數
93 3
94 3 LCD_write_data(0, 5, '-');
95 3
96 3 LCD_write_data(0, 6, range_high / 50 + 0x30);
97 3 LCD_write_data(0, 7, '.');
98 3 LCD_write_data(0, 8, (range_high / 5) % 10 + 0x30);
99 3 LCD_write_data(0, 9, 'V');
100 3
101 3 printstr(0x40, 0x4f, "mod:5 trg,6 crst");
102 3 //LCD_write_data(0, 4, (unsigned char)
103 3 }
104 2 }
105 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 577 ----
CONSTANT SIZE = 78 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -