📄 p87lpc769_da.lst
字号:
C51 COMPILER V7.09 P87LPC769_DA 11/29/2007 15:39:45 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE P87LPC769_DA
OBJECT MODULE PLACED IN P87LPC769_DA.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE P87LPC769_DA.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //Philips P87LPC769 D/A Example Program
2
3 /*-----------------------------------------------------------------------------
4 The following program generates sine and sawtooth waves on the DAC outputs
5 of the Philips LPC Devices. This code was compiled and tested using the
6 Keil Software PK51 Professional Developer's Kit.
7 -----------------------------------------------------------------------------*/
8 #include <REG769.H>
9
10 /*-----------------------------------------------
11 Sine Wave Table
12 -----------------------------------------------*/
13 unsigned char xdata sintab [] = {
14 0x00, 0x01, 0x03, 0x04, 0x06, 0x07, 0x09, 0x0A,
15 0x0C, 0x0E, 0x0F, 0x11, 0x12, 0x14, 0x15, 0x17,
16 0x18, 0x1A, 0x1C, 0x1D, 0x1F, 0x20, 0x22, 0x23,
17 0x25, 0x26, 0x28, 0x29, 0x2B, 0x2C, 0x2E, 0x2F,
18 0x30, 0x32, 0x33, 0x35, 0x36, 0x38, 0x39, 0x3A,
19 0x3C, 0x3D, 0x3F, 0x40, 0x41, 0x43, 0x44, 0x45,
20 0x47, 0x48, 0x49, 0x4A, 0x4C, 0x4D, 0x4E, 0x4F,
21 0x51, 0x52, 0x53, 0x54, 0x55, 0x57, 0x58, 0x59,
22 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61,
23 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
24 0x6A, 0x6B, 0x6C, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
25 0x70, 0x71, 0x72, 0x73, 0x73, 0x74, 0x75, 0x75,
26 0x76, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7A,
27 0x7A, 0x7A, 0x7B, 0x7B, 0x7C, 0x7C, 0x7C, 0x7D,
28 0x7D, 0x7D, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F,
29 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F };
30
31 static unsigned char DA0_next_out;
32 static unsigned char DA1_next_out;
33 static unsigned int i;
34
35 void timer0_isr (void) interrupt 1
36 {
37 1 /*-----------------------------------------------
38 1 Output D/A Value
39 1 -----------------------------------------------*/
40 1 DAC0 = DA0_next_out; /* previous Sine Wave value */
41 1 DAC1 = DA1_next_out; /* previous Sawtooth value */
42 1
43 1 /*-----------------------------------------------
44 1 Calculate next D/A Value
45 1 -----------------------------------------------*/
46 1
47 1 if (i++ >= 511) i = 0;
48 1
49 1 if (i >= 384)
50 1 DA0_next_out = 127 - sintab[127 - (i % 128)]; /* 180 - 270 quadrant */
51 1 else if (i >= 256)
52 1 DA0_next_out = 127 - sintab[i % 128]; /* 90 - 180 quadrant */
53 1 else if (i >= 128)
54 1 DA0_next_out = 128 + sintab[127 - (i % 128)]; /* 0 - 90 quadrant */
55 1 else
C51 COMPILER V7.09 P87LPC769_DA 11/29/2007 15:39:45 PAGE 2
56 1 DA0_next_out = 128 + sintab[i]; /* 270 - 0 quadrant */
57 1
58 1 DA1_next_out = i % 256; /* For Sawtooth pattern */
59 1 }
60
61 void main (void)
62 {
63 1 /*-----------------------------------------------
64 1 Disable the A/D Converter (this is required for
65 1 DAC0)
66 1 -----------------------------------------------*/
67 1 ADCI = 0; /* Clear A/D conversion complete flag */
68 1 ADCS = 0; /* Clear A/D conversion start flag */
69 1 ENADC = 0; /* Disable the A/D Converter */
70 1
71 1 /*-----------------------------------------------
72 1 Set P1.6 and P1.7 to Input Only (Hi Z).
73 1 -----------------------------------------------*/
74 1 P1M2 &= ~0xC0;
75 1 P1M1 |= 0xC0;
76 1
77 1 /*-----------------------------------------------
78 1 Enable the D/A Converter
79 1 -----------------------------------------------*/
80 1 ENDAC0 = 1;
81 1 ENDAC1 = 1;
82 1
83 1 /*-----------------------------------------------
84 1 Initialize Timer 0 Interrupt
85 1 -----------------------------------------------*/
86 1 TMOD = 0x02; /* TMOD: Timer 0, mode 2, 8-bit reload */
87 1 TCON = 0x10; /* TCON: */
88 1 TH0 = 240; /* TH0: Reload value */
89 1 TL0 = 251; /* TL0: Reload value */
90 1 ET0 = 1; /* ET0: Enable timer 0 */
91 1 TR0 = 1; /* TR0: Timer 0 run */
92 1 EA = 1; /* EA: Enable interrupts */
93 1
94 1 while (1) {
95 2 WDRST = 0x1E; /* Reset Watchdog Timer */
96 2 WDRST = 0xE1; /* Reset Watchdog Timer */
97 2 }
98 1 }
99
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 220 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 128 ----
PDATA SIZE = ---- ----
DATA SIZE = 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 + -