📄 generator.lst
字号:
C51 COMPILER V7.50 GENERATOR 08/15/2007 19:26:19 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE GENERATOR
OBJECT MODULE PLACED IN generator.OBJ
COMPILER INVOKED BY: D:\软件\单片机\keil c51\keil 软件\C51\BIN\C51.EXE generator.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include "hardware.h"
3 /*
4 * 在TIMER0的ISR中,将数据送入DAC0832,
5 * 通过在功能按键的中断中,改变HZ和幅度值,
6 * TIMER0的ISR将监测这些变量,达到调控的作用,
7 */
8 unsigned char code data_buf[] = {
9 128,131,134,137,140,143,146,149,
10 152,156,159,162,165,168,171,174,
11 176,179,182,185,188,191,193,196,
12 199,201,204,206,209,211,213,216,
13 218,220,222,224,226,228,230,232,
14 234,236,237,239,240,242,243,245,
15 246,247,248,249,250,251,252,252,
16 253,254,254,255,255,255,255,255,
17 256,255,255,255,255,255,254,254,
18 253,252,252,251,250,249,248,247,
19 246,245,243,242,240,239,237,236,
20 234,232,230,228,226,224,222,220,
21 218,216,213,211,209,206,204,201,
22 199,196,193,191,188,185,182,179,
23 176,174,171,168,165,162,159,156,
24 152,149,146,143,140,137,134,131,
25 128,124,121,118,115,112,109,106,
26 103,99,96,93,90,87,84,81,
27 79,76,73,70,67,64,62,59,
28 56,54,51,49,46,44,42,39,
29 37,35,33,31,29,27,25,23,
30 21,19,18,16,15,13,12,10,
31 9,8,7,6,5,4,3,3,
32 2,1,1,0,0,0,0,0,
33 0,0,0,0,0,0,1,1,
34 2,3,3,4,5,6,7,8,
35 9,10,12,13,15,16,18,19,
36 21,23,25,27,29,31,33,35,
37 37,39,42,44,46,49,51,54,
38 56,59,62,64,67,70,73,76,
39 78,81,84,87,90,93,96,99,
40 103,106,109,112,115,118,121,124
41 };
42
43 bit cur_signal = 0x20; //当前输出波形, 0 方波 , 1 正弦
44 unsigned int data freq; //频率
45
46 /* 方波占空比 */
47 unsigned char data time_high = 1, time_low = 1;
48
49 /* 与方波频率相关 */
50 unsigned char data rect_high_TH0;
51 unsigned char data rect_high_TL0;
52 unsigned char data rect_low_TH0;
53 unsigned char data rect_low_TL0;
54
55 /* 正弦频率相关 */
C51 COMPILER V7.50 GENERATOR 08/15/2007 19:26:19 PAGE 2
56 unsigned char data sin_TH0;
57 unsigned char data sin_TL0;
58
59 /* 与正弦幅度相关 */
60 unsigned char data range_low = 0, range_high = 0xff;
61 float data proportion = 1; /* 幅度与DAC量程之比 */
62
63 unsigned int data cur_pos = 0;
64
65 void enable_timer0()
66 {
67 1 TMOD = 0X01; /* 方式1, 定时器 */
68 1 ET0 = 1;
69 1 EA = 1;
70 1 TR0 = 1;
71 1 }
72
73 void TIMER0_ISR() interrupt 1 using 1
74 {
75 1 static rect_signal = 0;
76 1 unsigned char sin_data;
77 1 if (cur_signal == SIG_RECT) {
78 2 //根据HZ和占空比计算两段时间(在KeyInt中完成),相继的送给THO/TL0
79 2 if (rect_signal == 0) {
80 3 TH0 = rect_high_TH0;
81 3 TL0 = rect_high_TL0;
82 3 DAC0832_data = 0xff;
83 3 rect_signal = 1;
84 3 } else {
85 3 TH0 = rect_low_TH0;
86 3 TL0 = rect_low_TL0;
87 3 DAC0832_data = 0x0;
88 3 rect_signal = 0;
89 3 }
90 2 } else if (cur_signal == SIG_SIN) { //正弦波
91 2 TH0 = sin_TH0;
92 2 TL0 = sin_TL0;
93 2 sin_data = data_buf[(cur_pos++) % 256];
94 2 sin_data = sin_data * proportion + range_low;
95 2 DAC0832_data = sin_data;
96 2 } else ;
97 1 // printerr("undefined signal", 16);
98 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 154 ----
CONSTANT SIZE = 256 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -