?? pcf8591ad.lst
字號(hào):
C51 COMPILER V7.05 PCF8591AD 02/16/2006 21:21:51 PAGE 1
C51 COMPILER V7.05, COMPILATION OF MODULE PCF8591AD
OBJECT MODULE PLACED IN PCF8591AD.OBJ
COMPILER INVOKED BY: C:\SiLabs\MCU\IDEfiles\C51\BIN\C51.exe PCF8591AD.C DB OE
stmt level source
1 //參考程序A: PCF8591AD.C PCF8591的AD轉(zhuǎn)換實(shí)驗(yàn).
2 /*芯片PCF8951共有四個(gè)A/D輸入通道:AD0,AD1,AD2,AD3,分別與四個(gè)電位器(R1,R2,R3,R4)連接,用以調(diào)節(jié)電位器的輸
-出電壓。其中AD0通道既可測量電位器輸出電壓,也可用于測量從J1插座輸入的外接電壓,須用開關(guān)J2加以選擇。J4插座提供由PCF8591輸
-出的時(shí)鐘方波信號(hào)。SAA1064驅(qū)動(dòng)四個(gè)數(shù)碼管顯示一路AD轉(zhuǎn)換后得到的數(shù)據(jù)。顯示格式如下表:
3 通道號(hào): AD轉(zhuǎn)換結(jié)果(高四位) AD轉(zhuǎn)換結(jié)果(低四位)
4 3 E 7
5 函數(shù)SLA_READ(char chip_select, char channel)中的channel就是通道號(hào)選擇變量.channel=0到3.本程序選定channel=3
-(用戶可修改),用小改刀調(diào)節(jié)R4,可觀察到數(shù)碼管上顯示的數(shù)據(jù)的變化.*/
6 #include <c8051f020.h> // SFR declarations
7 #include <intrins.h>
8 #define WRITE 0x00 // 寫位
9 #define READ 0x01 // 讀位
10 #define CHIP_B 0x70
11 #define SMB_START 0x08 // (MT&MR)主收發(fā)器發(fā)送起始位成功.再將從機(jī)寫地址送SMB0DAT
12 #define SMB_RP_START 0x10 // (MT & MR)主收發(fā)器重復(fù)發(fā)送起始位成功,再將從機(jī)讀地址送SMB0DAT
13 #define SMB_MTADDACK 0x18 // (MT)主收發(fā)器發(fā)送從地址+W成功;收到 ACK
14 #define SMB_MTADDNACK 0x20 // (MT) 主收發(fā)器發(fā)送從地址+W成功;收到 NACK
15 #define SMB_MTDBACK 0x28 //(MT)主收發(fā)器發(fā)送數(shù)據(jù)字節(jié)成功;收到ACK.
16 #define SMB_MRADDACK 0x40 // (MR)主收發(fā)器發(fā)送從地址+R成功;收到 ACK.
17 #define SMB_MRDBACK 0x50 // (MR)主收發(fā)器接收數(shù)據(jù)成功;主機(jī)發(fā)送ACK
18 #define SMB_MRDBNACK 0x58 // (MR)主收發(fā)器接收數(shù)據(jù)成功;主機(jī)發(fā)送NACK
19 char COMWRITE; //保存從地址 + R/W 位,用在 中斷服務(wù)函數(shù)中
20 char COMREAD;
21 unsigned char totalnumber,sendnumber,WORD;
22 unsigned char INTERRUPT[20],L;
23 unsigned char xdata channel=3; // channel保存AD通道變量,channel=0--3.
24 unsigned char xdata SENDMODE; // SENDMODE=1為寫(SLA_SEND),SENDMODE=0為讀(SLA_READ)
25 bit SM_BUSY; // 在收/發(fā)過程中,SM_BUSY被置1.中斷服務(wù)完成后被清為另.
26 unsigned char wr_data[8]; //保存寫入從器件的數(shù)據(jù)
27 unsigned char rd_data[8]; //保存從從器件中讀出的數(shù)據(jù)
28 void SYSCLK_Init (void);
29 void SMBUS_ISR (void);
30 char SLA_READ(char chip_select, char channel);
31 //channel就是通道號(hào)選擇變量.channel=0到3
32 void SLA_SEND(char chip_select, char *wr_data, char number);
33 //chip_select為從器件的寫地址
34 char temp;
35 char Number[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //LED
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -