📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 09/30/2011 15:02:53 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\obj\main.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\main.lst) OBJECT(.\obj\main.ob
-j)
stmt level source
1 /*-----------------------------------------------
2 名称:IIC协议 PCF8591 AD/DA转换 测试光敏电阻
3 修改:无
4 内容:使用4路AD中的1路检测外部模拟量输入,显示0-255数值
5 ------------------------------------------------*/
6 #include <reg52.h>
7 #include "i2c.h"
8 #include "delay.h"
9 #include "display.h"
10
11 #define AddWr 0x90 //写数据地址
12 #define AddRd 0x91 //读数据地址
13
14 extern bit ack;
15 unsigned char ReadADC(unsigned char Chl);
16 bit WriteDAC(unsigned char dat);
17 /*------------------------------------------------
18 主程序
19 ------------------------------------------------*/
20 main()
21 {
22 1 unsigned char num=0;
23 1 Init_Timer0();
24 1
25 1
26 1 while (1) //主循环
27 1 {
28 2
29 2 num=ReadADC(3);//值取差值,用于显示光强越小,数值越小
30 2 TempData[0]=dofly_DuanMa[num/100];
31 2 TempData[1]=dofly_DuanMa[(num%100)/10];
32 2 TempData[2]=dofly_DuanMa[(num%100)%10];
33 2 //主循环中添加其他需要一直工作的程序
34 2 DelayMs(100);
35 2 }
36 1 }
37 /*------------------------------------------------
38 读AD转值程序
39 输入参数 Chl 表示需要转换的通道,范围从0-3
40 返回值范围0-255
41 ------------------------------------------------*/
42 unsigned char ReadADC(unsigned char Chl)
43 {
44 1 unsigned char Val;
45 1 Start_I2c(); //启动总线
46 1 SendByte(AddWr); //发送器件地址
47 1 if(ack==0)return(0);
48 1 SendByte(0x40|Chl); //发送器件子地址
49 1 if(ack==0)return(0);
50 1 Start_I2c();
51 1 SendByte(AddWr+1);
52 1 if(ack==0)return(0);
53 1 Val=RcvByte();
54 1 NoAck_I2c(); //发送非应位
C51 COMPILER V7.06 MAIN 09/30/2011 15:02:53 PAGE 2
55 1 Stop_I2c(); //结束总线
56 1 return(Val);
57 1 }
58 /*------------------------------------------------
59 写入DA转换数值
60 输入参数:dat 表示需要转换的DA数值,范围是0-255
61 ------------------------------------------------*/
62 /*bit WriteDAC(unsigned char dat)
63 {
64 Start_I2c(); //启动总线
65 SendByte(AddWr); //发送器件地址
66 if(ack==0)return(0);
67 SendByte(0x40); //发送器件子地址
68 if(ack==0)return(0);
69 SendByte(dat); //发送数据
70 if(ack==0)return(0);
71 Stop_I2c();
72 }*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 116 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -