亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pcf8591ad.c

?? C8051F系列單片機外圍電路功能模塊程序
?? C
字號:
//參考程序A: PCF8591AD.C  PCF8591的AD轉換實驗.
/*芯片PCF8951共有四個A/D輸入通道:AD0,AD1,AD2,AD3,分別與四個電位器(R1,R2,R3,R4)連接,用以調節電位器的輸出電壓。其中AD0通道既可測量電位器輸出電壓,也可用于測量從J1插座輸入的外接電壓,須用開關J2加以選擇。J4插座提供由PCF8591輸出的時鐘方波信號。SAA1064驅動四個數碼管顯示一路AD轉換后得到的數據。顯示格式如下表:
通道號:		      AD轉換結果(高四位)    	   AD轉換結果(低四位)
   3	                     E	                            7
函數SLA_READ(char chip_select, char channel)中的channel就是通道號選擇變量.channel=0到3.本程序選定channel=3(用戶可修改),用小改刀調節R4,可觀察到數碼管上顯示的數據的變化.*/
#include <c8051f020.h>                    // SFR declarations
#include <intrins.h>
#define  WRITE       0x00                 // 寫位
#define  READ        0x01                 // 讀位           
#define  CHIP_B      0x70
#define  SMB_START      0x08  // (MT&MR)主收發器發送起始位成功.再將從機寫地址送SMB0DAT
#define  SMB_RP_START   0x10  // (MT & MR)主收發器重復發送起始位成功,再將從機讀地址送SMB0DAT
#define  SMB_MTADDACK   0x18  // (MT)主收發器發送從地址+W成功;收到 ACK        
#define  SMB_MTADDNACK  0x20  // (MT) 主收發器發送從地址+W成功;收到 NACK        
#define  SMB_MTDBACK    0x28  //(MT)主收發器發送數據字節成功;收到ACK.           
#define  SMB_MRADDACK   0x40  // (MR)主收發器發送從地址+R成功;收到 ACK.
#define  SMB_MRDBACK    0x50  // (MR)主收發器接收數據成功;主機發送ACK 
#define  SMB_MRDBNACK   0x58  // (MR)主收發器接收數據成功;主機發送NACK 
char COMWRITE;         //保存從地址 + R/W 位,用在 中斷服務函數中
char COMREAD;                                         
unsigned char totalnumber,sendnumber,WORD;     
unsigned char  INTERRUPT[20],L;
unsigned char xdata  channel=3;    // channel保存AD通道變量,channel=0--3.
unsigned char xdata SENDMODE;      // SENDMODE=1為寫(SLA_SEND),SENDMODE=0為讀(SLA_READ)
bit SM_BUSY;                      // 在收/發過程中,SM_BUSY被置1.中斷服務完成后被清為另.
unsigned char wr_data[8];         //保存寫入從器件的數據
unsigned char rd_data[8];         //保存從從器件中讀出的數據
void SYSCLK_Init (void);
void SMBUS_ISR (void);
char SLA_READ(char chip_select, char channel);
//channel就是通道號選擇變量.channel=0到3
void SLA_SEND(char chip_select, char *wr_data, char number);
//chip_select為從器件的寫地址
char temp;              
char Number[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //LED數碼管的字型碼
void sleep_ms(unsigned int count)//延時
{
  unsigned char ii,jj;
  for(ii=0;ii<count;ii++)
    {
      for(jj=0;jj<250;jj++)
	  _nop_();			
    }	
}

void MAIN (void)
{
    WDTCN = 0xde;                 // 禁止看門狗
   WDTCN = 0xad;
   SYSCLK_Init();                // 系統時鐘初始化
   XBR0 = 0x01;                  // 設置P0.0為SDA,P0.1為SCL
   XBR2 = 0x40;                  // 使能交叉開關和弱上拉
   SMB0CN = 0x44;                // 允許SMBus并回應低電平(AA = 1)
   SMB0CR =0X0c9 ;    // 設定SMBus 速率 = 100 kHz(系統時鐘為11.0692MHZ)
   EIE1 |= 2;                     // SMBus 中斷使能
   SM_BUSY = 0;                   // 釋放SMBus總線
   SI = 0;
   EA = 1;                        // 開中斷
  while(1){
   SLA_READ(0x90,channel);//(寫地址WR_ADD=0x90,AD通道選擇變量channel=0---3)
		sleep_ms(200);
		wr_data[0] = 0x00;       //數組wr_data[] 中存放的數據送SAA1064
		wr_data[1] = 0x17;       //SAA1064的控制字
		//wr_data[2] = 0x00;     //第一個數碼管顯示通道號
		wr_data[3] = 0x0;        //第二個數碼管熄滅
		temp = rd_data[0]>>4;    //AD采樣數據的高四位存入temp
		temp = Number[temp];     //查出temp對應的字形碼
		wr_data[4] = temp;
		temp = rd_data[0] & 0x0f;//AD采樣數據的低四位存入temp
		temp = Number[temp];     //查出temp對應的字形碼
		wr_data[5] = temp;
		SLA_SEND(CHIP_B,wr_data,0x06);
		sleep_ms(200);
		sleep_ms(200);
		sleep_ms(200);
		sleep_ms(200);
   }
   
}
void SYSCLK_Init (void)
{
   int i;                                 // 延時計數器
   OSCXCN = 0x67;                         // 啟動外部時鐘(11.0592MHZ)
   for (i=0; i < 256; i++) ;              
   while (!(OSCXCN & 0x80)) ;             // 等待晶振穩定
   OSCICN = 0x88;                         // 選擇外部晶振作為系統時鐘
                                          // 允許時鐘丟失檢測
}
void SLA_SEND(char chip_select, char *wr_data, char number)
{
   SENDMODE=0x01;
   totalnumber=number;
   sendnumber=number;
   while(SM_BUSY);                        //SMBus忙碌即等待
   SM_BUSY = 1;                           // SMBus 忙碌標志位置1
   SMB0CN = 0x44;                         // SMBus 使能, 回應(ACK)為低電平.
   COMWRITE = (chip_select | WRITE);       // COMWRITE = 7 位地址位加寫位
   STO = 0;
   STA = 1;                               // 啟動數據傳輸
	while(SM_BUSY);   
}
char SLA_READ(char chip_select, char channel)
{   
   SENDMODE=0;                            //SENDMODE=0,讀出方式(SLA_READ)
   while(SM_BUSY);                        // SMBus忙碌即等待
   SM_BUSY = 1;                           // 設置忙碌標志位
   SMB0CN = 0x44;                         // 使能SMBus, 回應(ACK)低電平 .
   COMREAD = (chip_select | READ);        //// COMWRITE = 7 位地址位加讀位 
   COMWRITE = (chip_select | WRITE); 
   wr_data[0]=channel;              //PCF8591控制字(AD通道號)---->wr_data[0]
     temp =channel;
  	temp = Number[temp];
   wr_data[2]=temp;                    //wr_data[2]中存入通道號,送顯示在第一位數碼管上
   STO = 0;
   STA = 1;                               // 啟動傳輸
   while(SM_BUSY);                        // 等待傳輸完成
   return WORD;                           // 返回接收到的數據
}
void SMBUS_ISR (void) interrupt 7
{
   switch (SMB0STA){                    // 根據 SMBus 的狀態字(SMB0STA)跳轉
   case SMB_START:	//0x08
         SMB0DAT = COMWRITE ;			// 裝入從寫地址
         STA = 0;                       // 人工清除STA
         SI = 0;                        // 人工清除中斷標志位
         break;
      case SMB_RP_START:	//0x10
         SMB0DAT = COMREAD;
         STA = 0;                       // 人工清除STA
         SI = 0;                        // 人工清除中斷標志位
         break;
      case SMB_MTADDACK:	//0x18
         SMB0DAT = wr_data[0];
         SI = 0;                        
         break;
      case SMB_MTADDNACK:	//0x20
         STO = 1;
         STA = 1;
         SI = 0;                       
         break;
      case SMB_MTDBACK:		//0x28
         switch (SENDMODE){         	// 檢查讀/寫標志位SENDMODE.
            case 1:                    // SENDMODE=1(SLA_SEND)為寫狀態.
			   sendnumber--;
			   if(sendnumber)
			   SMB0DAT = wr_data[totalnumber-sendnumber];
			   else{
			   		STO=1;
				   	SM_BUSY=0;
				}
               break;                    
            case 0:            // SENDMODE=0(SLA_SEND)為讀狀態.   
			     STO = 0;
               STA = 1;
               break;                         
            default:                   
               STO = 1;
               SM_BUSY = 0;
               break;
         }
         SI = 0;
         break;
      case SMB_MRADDACK:	//0x40
         AA = 0;                          // 在回應周期送NACK
         SI = 0;
         break;
      case SMB_MRDBNACK:	//0x58
         rd_data[0] = SMB0DAT;
         STO = 1;
         SM_BUSY = 0;
         AA = 1;                          // 設置AA=1,準備下一次傳送
         SI = 0;
         break;
      // 狀態字SMB0STA無效. 
      default:
         STO = 1;
         SM_BUSY = 0;
         break;
      }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久| 国v精品久久久网| 椎名由奈av一区二区三区| 欧美大白屁股肥臀xxxxxx| 欧美一区二区三区视频| 欧美一区二区福利在线| 日韩欧美国产成人一区二区| 欧美男人的天堂一二区| 欧美精品乱码久久久久久按摩| 欧美日韩国产区一| 日韩区在线观看| 久久久亚洲精品一区二区三区| 国产欧美日韩另类视频免费观看 | 色嗨嗨av一区二区三区| 99精品黄色片免费大全| 日本精品视频一区二区| 欧美日韩国产综合一区二区| 日韩一二在线观看| 久久精品人人做| 亚洲人成小说网站色在线 | 色一区在线观看| 欧美图区在线视频| 欧美一区二区性放荡片| 久久精品一级爱片| 亚洲精品视频在线观看网站| 亚洲国产视频一区二区| 久久国产剧场电影| 99国产精品久久久久久久久久久 | 日韩视频123| 日本一区二区在线不卡| 亚洲高清免费观看高清完整版在线观看| 婷婷成人综合网| 成人在线一区二区三区| 欧美疯狂做受xxxx富婆| 国产精品色呦呦| 日韩中文字幕一区二区三区| 国产高清成人在线| 欧美三区在线观看| 亚洲国产精品精华液2区45| 亚洲成av人片在www色猫咪| 国产真实乱对白精彩久久| 在线视频中文字幕一区二区| 精品国产百合女同互慰| 亚洲精品第1页| 国内精品视频一区二区三区八戒| 欧美在线一二三| 久久精品视频免费| 久久精品国产一区二区| 在线一区二区视频| 欧美激情在线一区二区三区| 舔着乳尖日韩一区| 欧美影视一区在线| 国产精品久久久久影院亚瑟| 久久精品国产一区二区三| 在线观看国产91| 国产精品不卡视频| 国产成人在线视频网址| 欧美一级电影网站| 五月天激情综合网| 欧美日韩国产影片| 中文字幕在线观看不卡视频| 国产一区二区三区免费看| 91精品国产综合久久香蕉麻豆| 最好看的中文字幕久久| 成人听书哪个软件好| 国产日韩欧美综合在线| 麻豆成人久久精品二区三区红| 欧美日韩视频第一区| 一区二区三区四区激情 | 欧美高清视频在线高清观看mv色露露十八| 久久久国际精品| 国产精品99久久久久久久vr| 久久综合久色欧美综合狠狠| 久久aⅴ国产欧美74aaa| 日韩三级视频在线观看| 免费在线观看一区| 日韩欧美一区在线| 精品制服美女丁香| 精品久久一区二区| 国产精品白丝av| 中文幕一区二区三区久久蜜桃| 国产成人aaa| 国产精品你懂的| 91亚洲精品一区二区乱码| 一区二区视频在线看| 在线欧美日韩国产| 人人超碰91尤物精品国产| 日韩视频一区二区在线观看| 久久精品国产99国产| 国产欧美日产一区| av毛片久久久久**hd| 一区二区在线电影| 欧美一区二区久久| 国产成人8x视频一区二区| 亚洲免费av高清| 欧美美女激情18p| 久久福利资源站| 国产精品人人做人人爽人人添| 99久久伊人精品| 肉丝袜脚交视频一区二区| 日韩欧美的一区| 成人精品小蝌蚪| 亚洲国产日韩一区二区| 精品国产青草久久久久福利| 丁香亚洲综合激情啪啪综合| 亚洲蜜臀av乱码久久精品| 欧美一级在线免费| 不卡av在线免费观看| 亚洲成a人片在线不卡一二三区| wwwwww.欧美系列| 色婷婷综合久久久久中文| 美女视频黄频大全不卡视频在线播放| 久久久久综合网| 欧美疯狂性受xxxxx喷水图片| 国产999精品久久久久久| 午夜视频一区二区| 国产精品久久久久9999吃药| 欧美丰满少妇xxxxx高潮对白| 成人不卡免费av| 美女视频免费一区| 亚洲国产人成综合网站| 久久久国产精华| 337p亚洲精品色噜噜噜| 99精品欧美一区二区蜜桃免费| 蜜桃av噜噜一区| 亚洲一区日韩精品中文字幕| 欧美极品xxx| 精品成人免费观看| 欧美精品一卡二卡| 色丁香久综合在线久综合在线观看| 另类小说一区二区三区| 亚洲一级二级在线| 国产精品动漫网站| 日本一区二区三区在线不卡| 日韩欧美久久久| 欧美一级理论片| 欧美日韩五月天| 欧美视频在线播放| 日本精品一区二区三区高清| 成人午夜在线播放| 国产精品综合av一区二区国产馆| 青青草原综合久久大伊人精品| 一区二区三区高清| 亚洲精品网站在线观看| 中文字幕一区二区三区精华液| 国产亚洲欧美色| 国产欧美日韩精品一区| 久久久精品蜜桃| 国产女人18毛片水真多成人如厕| 久久奇米777| 欧美日韩在线播| 欧美日韩精品综合在线| 色94色欧美sute亚洲线路一ni | 久久精品国产亚洲一区二区三区 | 日韩欧美国产不卡| 日韩欧美一二区| 精品捆绑美女sm三区| 精品国内二区三区| 久久综合久久综合久久综合| 精品粉嫩aⅴ一区二区三区四区| 精品国产91乱码一区二区三区| 精品国产sm最大网站| 久久久久久免费毛片精品| 国产三级精品三级| 成人免费小视频| 亚洲综合男人的天堂| 午夜伦理一区二区| 久久精品久久综合| 国产精品系列在线观看| 99v久久综合狠狠综合久久| 91美女蜜桃在线| 欧美老女人在线| 久久久久久久久久久久电影| 久久精品一区二区三区av| 国产精品久久一卡二卡| 亚洲国产视频a| 国内精品免费**视频| 不卡一区二区三区四区| 欧美亚洲综合另类| 亚洲精品一区在线观看| 国产精品亲子伦对白| 亚洲第一成年网| 国产精品99久久久久久久女警 | 亚洲成人av一区二区三区| 日本不卡一二三| 成人深夜在线观看| 欧美日韩精品欧美日韩精品一 | 91精品国产综合久久久蜜臀粉嫩| 精品少妇一区二区三区在线视频| 国产蜜臀97一区二区三区| 亚洲福利视频一区| 国产精品一区二区久激情瑜伽| 91老师片黄在线观看| 日韩一区二区三区精品视频| 国产精品二三区| 久久av资源站| 欧美午夜免费电影| 国产精品无码永久免费888| 午夜精品免费在线| 99久久久无码国产精品|