📄 0832.lst
字号:
C51 COMPILER V6.12 0832 09/16/2008 09:21:36 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 0832
OBJECT MODULE PLACED IN .\0832.OBJ
COMPILER INVOKED BY: D:\keil c51\C51\BIN\C51.EXE .\0832.C DEBUG OBJECTEXTEND
stmt level source
1 #include<absacc.h>
2 #include<reg51.h>
3 #include<intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6 unsigned char T,DA;
7 sbit AD_CS=P2^3;
8 sbit SCK=P2^1;
9 sbit DI=P2^2;
10 sbit DO=P2^0;
11 sbit date=P2^4;
12 uchar adc0832(uchar channel);
13 void main (void)
14 {
15 1 date=0;
16 1 while(1)
17 1 {
18 2 DA=adc0832(1);
19 2 if(DA>=0x4f)
20 2 date=1;
21 2 else
22 2 date=0;
23 2
24 2 }
25 1 }
26 uchar adc0832(uchar channel) //读ADC0832函数,采集并返回
27 {
28 1 uchar i=0;
29 1 uchar j;
30 1 uint dat2=0;
31 1 uchar ndat=0;
32 1
33 1 if(channel==0)channel=2;
34 1 if(channel==1)channel=3;
35 1
36 1 AD_CS=0;_nop_(); //拉低CS端,AD片选
37 1
38 1 DI=1;_nop_(); //在第一个脉冲下降之前 DI 必须是高电平,表示启始信号
39 1 SCK=1;_nop_();
40 1 SCK=0;_nop_();
41 1
42 1 SCK=1;
43 1 DI=channel&0x1;_nop_();//在第二和第三个脉冲下降之前 DI 输入两位表示通道
44 1 SCK=0;_nop_();
45 1 SCK=1;
46 1 DI=(channel>>1)&0x1;_nop_();
47 1 SCK=0; //写命令完成,DI失去输入作用
48 1 DI=1;_nop_();
49 1
50 1 dat2=0;
51 1 for(i=0;i<8;i++) //读出8字节数据
52 1 {
53 2 dat2|=DO;
54 2 SCK=1;_nop_();
55 2 SCK=0;_nop_();
C51 COMPILER V6.12 0832 09/16/2008 09:21:36 PAGE 2
56 2 dat2<<=1;
57 2 if(i==7)dat2|=DO;
58 2 }
59 1
60 1 for(i=0;i<8;i++)
61 1 {
62 2 j=0;
63 2 j=j|DO;
64 2 SCK=1;_nop_();
65 2 SCK=0;_nop_();
66 2 j=j<<7;
67 2 ndat=ndat|j;
68 2 if(i<7)ndat>>=1;
69 2 }
70 1
71 1 AD_CS=1;
72 1 SCK=0;
73 1 DO=1;
74 1 dat2<<=8;
75 1 dat2|=ndat;
76 1 return(dat2); //返回数据
77 1 }
78
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 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 + -