📄 text.lst
字号:
C51 COMPILER V7.01 TEXT 01/18/2006 15:50:36 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE TEXT
OBJECT MODULE PLACED IN Text.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE Text.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <REG1210.H> /* special function register 1210 */
3 #include <stdio.h> /* standard I/O .h-file */
4 #include <rtx51tny.h> /* RTX-51 tiny functions & defines */
5 #include <stdlib.h>
6 #include <string.h>
7 #include <16b.h>
8
9 #define uint unsigned int
10 #define uchar unsigned char
11
12
13 sbit DAC8532=P1^4; /*dac8532 */
14 unsigned char data ccnun=4,chanl_n=0;
15 uint daval1=0;
16 uint daval2=0;
17
18
19 void write_8532(unsigned int val,unsigned char port)
20 {
21 1 uchar i;
22 1 SPICON = SPICON_8532;
23 1 DAC8532 =0;
24 1 for(i=0;i<5;i++)
25 1 {;}
26 1 if(port==1)
27 1 {
28 2 while((AIE&0X08)!=0X08){}SPIDATA=Dac8532A;
29 2 while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
30 2 while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
31 2 }
32 1 if(port==2)
33 1 {
34 2 while((AIE&0X08)!=0X08){}SPIDATA=Dac8532B;
35 2 while((AIE&0X08)!=0X08){}SPIDATA=((val>>8)&0xFF);
36 2 while((AIE&0X08)!=0X08){}SPIDATA=((val)&0xFF);
37 2 }
38 1 for(i=0;i<5;i++)
39 1 {;}
40 1 DAC8532 =1;
41 1 }
42
43
44 /* initial spi ,SPICON在各自的子程序中设置*/
45 void init_spi(void)
46 {
47 1 P1DDRH=0x75; /* SPI port setup */
48 1 SPITCON=SCLK_EN|DRV_EN;
49 1 PDCON &= ~(PDSPI); /* turn on SPI */
50 1 }
51
52 /* initial ADC */
53 void init_adc(void)
54 {
55 1 int decimation=720; /* factor of extractive */
C51 COMPILER V7.01 TEXT 01/18/2006 15:50:36 PAGE 2
56 1 EAI = CLEAR;
57 1 ACLK = 4; /* ACLK = 11.0592 MHz/(9+1) = 1.10592 MHz */
58 1 ADCON0 &= (~(BOD|EVREF|VREFH|EBUF)|PGA_1); /* Vref Off,Extenal Verf,Buff off,BOD off, PGA=1 */
59 1 ADCON1 = (POL|SM_3|CAL_1); /* Unipolar, sinc3, self calibration, offset, gain */
60 1 ADCON2 = decimation & 0xff; /* LSB of decimation */
61 1 ADCON3 = (decimation >>8)&0x07; /* MSB of decimation */
62 1 SSCON = CLEAR;
63 1 ADMUX = INP_0|INN_COM; /* Select AIN0+/Acom- */
64 1 adcsum.ps = CLEAR; /* buffer sp clear */
65 1 AIE = AD_EN; /* Enable Aux Interrupt */
66 1 EAI=SET ;
67 1 AI=CLEAR;
68 1 }
69
70
71 /*辅助中断服务程序*/
72 assistant_proc() interrupt 6 using 3
73 {
74 1 signed long int xdata result;
75 1 switch(PAI&0x0f)
76 1 {
77 2 case 0x06://adc滤波中断
78 2 {
79 3 if (ccnun--) result=unipolar(); // Dummy read to clear ADCIRQ
80 3 else
81 3 {
82 4 result=unipolar(); // read to clear ADCIRQ
83 4 adcsum.buf[adcsum.ps]=result>>8; // read to clear ADCIRQ
84 4 switch ((chanl_n++)&0x01)
85 4 {
86 5 case 0:
87 5 {
88 6 ADMUX=((chanl_n+1)<<3)|0x08;
-
89 6 adcsum.ps=(chanl_n+1)>>1;
90 6 }break;
91 5 case 1:
92 5 {
93 6 ADMUX=0x08;
94 6 adcsum.ps=0;
95 6 }break;
96 5 }
97 4 chanl_n= (chanl_n<8)? chanl_n : 0 ;
98 4 ccnun=4;
99 4 }
100 3 }break;
101 2
102 2 }
103 1 AI=CLEAR;
104 1 }
105
106 /******************************************************************************/
107 /* Task 0 'init': Initialize */
108 /******************************************************************************/
109 void init (void) _task_ INIT /* program execution starts here */
110 {
111 1 init_spi();
112 1 init_adc();
113 1 PDCON |= PDWDT; /* turn oFF WatchDog */
114 1 WDTCON |= EWDT; /* set ewbt */
115 1 WDTCON &= ~EWDT; /* clear ewbt set timeout=8,900ms */
116 1 PDCON &= ~(PDSPI|PDAD); /* turn on SPI and ADC device */
C51 COMPILER V7.01 TEXT 01/18/2006 15:50:36 PAGE 3
117 1 DAC8532 =1;
118 1 os_create_task (LOGIC_JUDGE);
119 1 os_delete_task (INIT); /* stop init task (no longer needed) */
120 1 }
121
122 /*--------------------------------------------------------------------------
123 读写FPGA
124 ---------------------------------------------------------------------------*/
125
126 void logic_judge (void) _task_ LOGIC_JUDGE
127 {
128 1 int data i=0;
129 1 while(1)
130 1 {
131 2 os_wait (K_TMO, 10,0);
132 2 for(i=0;i<5;i++)
133 2 {
134 3 *(W_ADDRESS+i)= adcsum.buf[i];
135 3 }
136 2 daval1=*(W_ADDRESS+64);
137 2 write_8532(daval1,1);
138 2 daval2=*(W_ADDRESS+65);
139 2 write_8532(daval2,2);
140 2 }
141 1 }
142
143
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 429 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 17 4
PDATA SIZE = ---- ----
DATA SIZE = 6 2
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 + -