📄 10.1.lst
字号:
C51 COMPILER V6.20c 10_1 09/02/2001 15:01:48 PAGE 1
C51 COMPILER V6.20c, COMPILATION OF MODULE 10_1
OBJECT MODULE PLACED IN 10.1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 10.1.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5 #define N 128 /*定采样长度,如128点*/
6 sbit BYTE=P1^0;
7 sbit RC=P1^1;
8 sbit BUSY=P1^2; /*定义特殊位*/
9 int xdata array[128]; /*在外部存储器内定义长度为N的有符号整数数*/
10 int ADS7804(void);
11
12 int ADS7804(void)
13 {
14 1 uint ul,uh;int u;
15 1 RC=0; /* 低电平,进入转换模式*/
16 1 ul=XBYTE[0xffff]; /*产生读脉冲,启动A/D转换*/
17 1 while(BUSY==0); /*等待转换完成*/
18 1 RC=1;BYTE=0; /*进入读模式,选择低字节*/
19 1 ul=XBYTE[0xffff]; /*读转换结果低8位*/
20 1 BYTE=1; /*选择高字节*/
21 1 uh=XBYTE[0xffff]&0x0f; /*读转换结果高4位*/
22 1 u=uh*256+ul; /*得到12位转换结果*/
23 1 if(u>=0x0800)
24 1 u=u|0xf000; /*如果为负值,则符号扩展*/
25 1 return(u); /*返回转换结果*/
26 1 }
27
28 void DAQ(uint interval)
29 {
30 1 uchar th,tl;
31 1 uint i;
32 1 interval=interval-5; /*减去TF0清零和装载计数初值的时间5μs*/
33 1 th=255-(interval/256);
34 1 tl=255-(interval%256); /*计算计数初值*/
35 1 TMOD=0x01; /*定时器0,方式1 */
36 1 TH0=th; TL0=tl; /*装载计数初值*/
37 1 TR0=1; /*启动定时*/
38 1 for(i=0;i<N;i++)
39 1 {
40 2 do{}while(!TF0); /*查询等待TF0复位*/
41 2 TF0=0; /*清溢出标志*/
42 2 TH0=th;TL0=tl; /*装载计数初值*/
43 2 array[i]=ADS7804(); /*采样、存储*/
44 2 }
45 1 TR0=0; /*停止定时*/
46 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 137 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 256 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
C51 COMPILER V6.20c 10_1 09/02/2001 15:01:48 PAGE 2
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 + -