?? 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 + -