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

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

?? jkb.c

?? 此程序是一底層開發驅動代碼,里面包括了I2C芯片(MAX5417)及1 wire sensor、AD驅動的源代碼!稍作改動就能用于自己的產品開發中!
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "c8051f020.h"
#include "stdio.h"
#include <intrins.h>

//-----------------------------------------------------------------------------
// C8051F02X 的16 位SFR 定義
//-----------------------------------------------------------------------------
sfr16 DP = 0x82; // 數據指針
sfr16 TMR3RL = 0x92; // 定時器3 重裝值
sfr16 TMR3 = 0x94; // 定時器3 計數器
sfr16 ADC0 = 0xbe; // ADC0 數據
sfr16 ADC0GT = 0xc4; // ADC0 大于窗口
sfr16 ADC0LT = 0xc6; // ADC0 小于窗口

//-----------------------------------------------------------------------------
//全局常量
//-----------------------------------------------------------------------------
#define SYSCLK 12000000 //系統時鐘頻率12MHz
#define BAUDRATE 9600 // UART 波特率9600bps
#define FLASH_SCRATCHSIZE=128//FLASH為128字節
#define SCLCLK=300000//SMB時鐘為300KHz
sbit  DQ=P2^0;
sbit sda=P0^6;
sbit scl=P0^7;
//sbit  DataPortDS1820=P2^0;

//-----------------------------------------------------------------------------
// 函數原型
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);//時鐘初始化
void PORT_Init (void);//端口初始化
void UART0_Init (void);//串口初始化
void  SMB0_Init(void);//SMB0us初始化
void ADC0_Init (void);//模數轉換初始化
float cu50(float);
float cu100(float);
float pt100(float);
float dj(float);
float dk(float);
float dt(float);
float de(float);
float dr(float);
float ds(float);
float db(float);
float dn(float);
int chaiyang(void);//采樣
float chaiyangjishuan(int);//將采樣值計算成相應的電阻或電壓
void tongdao_init(void);//單通道配置
void spi_send(float);//SPI接口發送
void flash_scratch_write(unsigned dest,char *src,unsigned num);//FLASH寫
void flash_scratch_read(unsigned src,unsigned num);//FLASH讀
void flash_scratch_erase(void);//FLASH擦除
void i2o_write(unsigned short,unsigned short  );//數字電位器寫
void i2o_read();//數字電位器讀
void chan(int t);//通道增益配置參數設置
void delay(word );//延時
void Read_Temperature(void);//讀冷端的溫度值
//void Delay1us(unsigned char ) ;  
//void Delay15us(void);
//void Delay10us(void);
//bit RstDS1820(void);
//void WriteDS1820(unsigned char );
//unsigned char ReadDS1820(void);
//unsigned char ReadDS1820(void);
//void StartADC(void);
// float  GetTempValue(void);





//-----------------------------------------------------------------------------
// 全局變量
//-----------------------------------------------------------------------------
int  chanel_chanshu[24]={0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff,0x0002,0x0000,0x07ff};
typedef unsigned char data  byte;
typedef unsigned int data word;
int data lenduan;
int    *ptrl;
char  *ptrlchar;
int data minlin;
char data COMMAND;  //7位從地址+W/R字節                                                                   
char data WORD;     //命令字節                                                                   
char data OP_CODE;  //數據字節  

//-----------------------------------------------------------------------------
//主程序
//-----------------------------------------------------------------------------
void main(void)
{
    short int data  m,n;
    float data wendu,dianzu;
	int data chaiyangzhi;
	WDTCN=0xde;
	WDTCN=0xad;
    SYSCLK_Init (); // 初始化振蕩器
    PORT_Init (); // 初始化數據交叉開關和通用IO 口
    SMB0_Init();
    UART0_Init (); // 初始化UART0
    ADC0_Init (); // 初始化和使能ADC
    ptrl=chanel_chanshu;
	ptrlchar=chanel_chanshu;
   flash_scratch_read(0x0000,12);
    EIE1 |=2;//SMB中斷使能
    EA=1;//開中斷
    BUSY=0;
    SI=0;
	m=0;
	for(n=1;n<9;n++)
	{
	if((chanel_chanshu[(n-1)*3]>0x0a)|(chanel_chanshu[(n-1)*3]<0))
	   {m=1;}//判斷是否進行過傳感器的配置
	   }
	if(m==1)
	{//沒有進行則將傳感器參數配置成原始值
	   for(n=1;n<9;n++)
	   {
	      chanel_chanshu[(n-1)*3]=0x0002;
		  chanel_chanshu[(n-1)*3+1]=0x0011;
		  chanel_chanshu[(n-1)*3+2]=0x07ff;
		 
		}
	 //printf("AA   \n");
	 }
	  ptrl=chanel_chanshu;
	  ptrlchar=chanel_chanshu;
	 P3=0xf0;
    while(1)
	{
	  /* while(!SPIF);
	   minlin=SPI0DAT;
	   SPIF=0;
	   switch(minlin)
	   {
	      case 0x55://單通道配置命令
		     tongdao_init();
			 flash_scratch_erase();
			 flash_scratch_write(0x0000,ptrlchar,96);
			 ptrl=chanel_chanshu;//重新賦地址
         	 ptrlchar=ptrl;//重新賦地址
			 break;
		  case 0x66://單通道讀數
             while(!SPIF);
			 minlin=SPI0DAT;
			 m=minlin;
			 SPIF=0;
			 P3=0xf0+m-1;
		     chan(minlin);
               dianzu=chaiyangjishuan(chaiyang());
               switch(chanel_chanshu[((minlin-1)*3)])
               {
               case 0:
			   wendu=cu50(dianzu);
			   break;
			   case 1:
			   wendu=cu100(dianzu);
			   break;
			   case 2:
			   wendu=pt100(dianzu);
			   break;
			   case 3:
			   wendu=dj(dianzu);
			   break;
			   case 4:
			   wendu=dk(dianzu);
			   break;
			   case 5:
			   wendu=dt(dianzu);
			   break;
			   case 6:
			   wendu=de(dianzu);
			   break;
			   case 7:
			   wendu=dr(dianzu);
			   break;
			   case 8:
			   wendu=ds(dianzu);
			   break;
			   case 9:
			   wendu=db(dianzu);
			   break;
			   case 10:
			   wendu=dn(dianzu);
			   break;
			   default:
			   break;
			   }
               spi_send(wendu);
               break;
               case 0x77://多通道讀數;即循環發送1至8通道貌岸然的溫度值
            for(minlin=1;minlin<9;minlin++)
			{
			    P3=0XF0+minlin-1;
				m=minlin;
			    //chan(minlin);
				  chaiyangzhi=chaiyang();
				  dianzu=chaiyangjishuan(chaiyangzhi);
			    switch(chanel_chanshu[(minlin-1)*3])
				{
				   case 0:
			          wendu=cu50(dianzu);
			          break;
			       case 1:
			          wendu=cu100(dianzu);
			          break;
			       case 2:
			          wendu=pt100(dianzu);
			          break;
			       case 3:
			          wendu=dj(dianzu);
			          break;
			       case 4:
			          wendu=dk(dianzu);
			          break;
			       case 5:
			          wendu=dt(dianzu);
			          break;
			       case 6:
			          wendu=de(dianzu);
			          break;
			       case 7:
			          wendu=dr(dianzu);
			          break;
			       case 8:
			          wendu=ds(dianzu);
			          break;
			       case 9:
			          wendu=db(dianzu);
			          break;
			       case 10:
			          wendu=dn(dianzu);
			          break;
			       default:
			          break;
			   }
			   SPIF=0;
			   spi_send(wendu);
			   while(!SPIF);
           }
            break;
            case 0x88://通道零點調整
			while(!SPIF);
     		minlin=SPI0DAT;
			m=minlin;
			SPIF=0;
            m=0xf0+m-1;
			P3=m;
		    //chan(minlin);
			chanel_chanshu[(minlin-1)*3+1]=chaiyang();
			flash_scratch_erase();
			flash_scratch_write(0x0000,ptrlchar,96);
			ptrl=chanel_chanshu;//重新賦地址
         	 ptrlchar=ptrl;//重新賦地址
			P3=0XEF;//發送數據準備好中斷
			SPI0DAT=0xaa;//發送響應命令
			SPIF=0;
			P3=0XFF;//收回中斷
            break;
                case 0x99://通道滿量程調整
			while(!SPIF);
     		minlin=SPI0DAT;
			m=minlin;
			SPIF=0;
            m=0xf0+m-1;
			P3=m;
			//chan(minlin);
			chanel_chanshu[(minlin-1)*3+2]=chaiyang();
			 flash_scratch_erase();
			 flash_scratch_write(0x0000,ptrlchar,96);
			 ptrl=chanel_chanshu;//重新賦地址
         	 ptrlchar=ptrl;//重新賦地址
			P3=0XEF;//發送數據準備好中斷
			SPI0DAT=0xaa;//發送響應命令
			SPIF=0;
			P3=0XFF;//收回中斷
            break;
           default:
            break;
           }*/
		     minlin=1;
			 m=minlin;
			 //printf("AA   \n");
			 SPIF=0;
			 P3=0xf0+m-1;
		       chan(minlin);
			   chaiyangzhi=chaiyang();
			   printf("chaiyangzhi   :%x\n",chaiyangzhi);
              dianzu=chaiyangjishuan(chaiyangzhi);
               printf("dianzu  :%f\n",dianzu);
               switch(chanel_chanshu[((minlin-1)*3)])
               {
               case 0:
			   wendu=cu50(dianzu);
			   break;
			   case 1:
			   wendu=cu100(dianzu);
			   break;
			   case 2:
			   wendu=pt100(dianzu);
			   break;
			   case 3:
			   wendu=dj(dianzu);
			   break;
			   case 4:
			   wendu=dk(dianzu);
			   break;
			   case 5:
			   wendu=dt(dianzu);
			   break;
			   case 6:
			   wendu=de(dianzu);
			   break;
			   case 7:
			   wendu=dr(dianzu);
			   break;
			   case 8:
			   wendu=ds(dianzu);
			   break;
			   case 9:
			   wendu=db(dianzu);
			   break;
			   case 10:
			   wendu=dn(dianzu);
			   break;
			   default:
			   break;
			   }
			   printf("wendu    :%f\n",wendu);
			    Read_Temperature();
			   //wendu=GetTempValue();
			   printf("%f\n",lenduan);
               //spi_send(wendu);
      }
 }


// 子程序初始化
//-----------------------------------------------------------------------------
// 系統時鐘初始化
//----------------------------------------------------------------------------- 
// 此程序初始化系統時鐘使用12MHz 晶體作為時鐘源
//
void SYSCLK_Init (void)
{
   int data i; // 延時計數器
   OSCXCN = 0x67; // 起動外部振蕩器12MHz 晶體
   for (i=0; i< 256; i++) ; // 等待振蕩器啟動 (>1ms)
  // while (!(OSCXCN & 0x80)) ; // 等待晶體振蕩器穩定
   OSCICN = 0x88; // 選擇外部振蕩器作為系統時鐘源并使能丟失時鐘檢測器
} 

//-----------------------------------------------------------------------------
// IO 口初始化
//-----------------------------------------------------------------------------
// 配置數據交叉開關和通用IO 口
//
void PORT_Init (void)
{
XBR0 = 0x06; // 使能UART0,SPI,//07時才同時使能SMB0us0
XBR1 = 0x00;
XBR2 = 0x40; // 使能數據交叉開關和弱上拉
P0MDOUT=0X15;
//P0MDOUT |= 0x01; // 允許TX0 為推挽輸出
P1MDOUT |= 0x40; // 允許P1.6(LED)為推挽輸出
}

 //-----------------------------------------------------------------------------
// UART0 初始化
//----------------------------------------------------------------------------- 
// 配置UART0 使用定時器1 產生波特率
//
void UART0_Init (void)
{
SCON0 = 0x50; // SCON0: 模式 1,8 位UART,允許RX
TMOD = 0x20; // TMOD: 1 定時器, 模式2, 8 位重裝
TH1 = -(SYSCLK/BAUDRATE/16); // 按波特率設置定時器1 重裝值
TR1 = 1; // 起動定時器1
CKCON |= 0x10; // 定時器1 使用系統時鐘為時基
PCON |= 0x80; // SMOD00=1
TI0 = 1; // 表示就緒
}

//-----------------------------------------------------------------------------
//SMB0us0初始化
//-----------------------------------------------------------------------------
void  SMB0_Init(void)
{
  SMB0CN=0X44;
  SMB0CR=0xef;//0x14;//SMB時鐘速率為300KHz
  //SMB0DAT=0X00;
  //SMB0ADR=0X58;
  
}

//-----------------------------------------------------------------------------
// ADC0 初始化
//----------------------------------------------------------------------------- 
// 配置ADC0 使用AD0BUSY 作為轉換源, 使用左對齊輸出模式,
// 使用正常跟蹤模式, 測量片內溫度傳感器器輸出
// 禁止ADC0 轉換結束中斷和ADC0 窗口比較器中斷
//
void ADC0_Init (void)
{
ADC0CN = 0x80; // ADC0 使能;正常跟蹤模式
// 當寫AD0BUSY 時ADC0 轉換開始ADC0 數據左對齊
REF0CN = 0x07; // 使能溫度傳感器片內VREF 和VREF 輸出緩沖器
//AMX0SL = 0x0f; // 選擇溫度傳感器作為ADC 多路模擬轉換器輸出
ADC0CF = (SYSCLK/2500000) << 3; // ADC 轉換時鐘=2.5MHz
ADC0CF |= 0x01; // PGA 增益=2
AMX0SL=0X00;//選擇AIN0作為ADC多路模擬轉換器輸出
AMX0CF =0X01;
EIE2 &= ~0x02; // 禁止ADC0 EOC 中斷
EIE1 &= ~0x04; // 禁止ADC0 窗口比較器中斷
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月综合激情日本mⅴ| 欧美国产精品中文字幕| 亚洲va天堂va国产va久| 欧美片网站yy| 日本不卡一区二区| 久久亚洲精品国产精品紫薇| 国产在线观看免费一区| 久久99国产精品久久| 久久免费的精品国产v∧| 国产精品久久久久久福利一牛影视| 国产成人综合亚洲91猫咪| 国产亚洲欧美激情| 99久久国产综合精品色伊| 一区二区三区视频在线观看| 91精品国产乱| 成人一区在线观看| 亚洲va欧美va人人爽| 亚洲精品一区二区精华| 91年精品国产| 美腿丝袜亚洲一区| 国产精品久久影院| 欧美片网站yy| 成人黄色在线视频| 天堂蜜桃一区二区三区| 国产日韩成人精品| 欧美另类高清zo欧美| 国产成人激情av| 午夜精品一区二区三区免费视频| 国产婷婷一区二区| 欧美精品一卡二卡| 99久久免费国产| 久久爱www久久做| 亚洲综合免费观看高清完整版| 日韩一级大片在线观看| 波多野结衣欧美| 精品一二三四区| 亚洲国产精品一区二区久久 | 日韩一级片网站| 99精品视频一区| 极品少妇xxxx精品少妇| 亚洲国产精品久久不卡毛片 | 欧美成人r级一区二区三区| 99久久综合99久久综合网站| 日产欧产美韩系列久久99| 国产精品久久久久久久久动漫| 日韩精品一区二区三区中文不卡| 在线视频你懂得一区二区三区| 国产精品 欧美精品| 日韩电影在线观看一区| 亚洲一线二线三线视频| 国产精品久久久久四虎| 久久蜜臀中文字幕| 日韩欧美激情四射| 欧美日本乱大交xxxxx| 色婷婷激情一区二区三区| 成人av网站在线观看免费| 国产九色精品成人porny| 日本美女一区二区三区| 亚洲动漫第一页| 亚洲午夜在线观看视频在线| 亚洲色图一区二区| 亚洲欧洲日韩av| 国产精品夫妻自拍| 国产精品久久免费看| 国产日韩av一区| 亚洲国产精品t66y| 久久久久国产精品麻豆ai换脸| 精品对白一区国产伦| 91精品久久久久久久99蜜桃| 欧美疯狂性受xxxxx喷水图片| 欧美性大战久久久久久久| 色国产综合视频| 欧洲av一区二区嗯嗯嗯啊| 91免费国产在线观看| 91网站最新网址| 色综合天天综合狠狠| 93久久精品日日躁夜夜躁欧美| 岛国一区二区三区| 99热这里都是精品| 91麻豆国产福利精品| 在线免费一区三区| 欧美日韩小视频| 欧美一区二区免费| 欧美va亚洲va| 国产日产欧美一区二区三区| 国产精品视频观看| 亚洲美女免费视频| 亚洲地区一二三色| 日本视频一区二区| 国产乱淫av一区二区三区| 国产精品一区2区| 成人av资源在线| 99精品久久免费看蜜臀剧情介绍| 色综合久久88色综合天天免费| 91九色最新地址| 91麻豆精品久久久久蜜臀| 欧美一级高清片| 久久久国产精品午夜一区ai换脸| 国产精品美女一区二区三区| 亚洲日本护士毛茸茸| 天天综合网天天综合色| 狠狠色丁香久久婷婷综合_中| 成人免费高清在线| 欧美性videosxxxxx| 日韩欧美国产综合一区| 国产精品萝li| 亚洲一级片在线观看| 久久国产精品无码网站| 成人app软件下载大全免费| 欧美日韩亚洲综合| 久久久久成人黄色影片| 亚洲综合视频网| 九一九一国产精品| 91在线无精精品入口| 6080午夜不卡| 自拍偷拍国产精品| 久久国产精品72免费观看| 99久久精品免费看| 日韩一级免费观看| 亚洲欧美一区二区三区国产精品| 乱一区二区av| 欧美午夜精品久久久| 久久久久久黄色| 日韩精品免费专区| 成人听书哪个软件好| 欧美一卡二卡在线观看| 亚洲男人的天堂网| 国产成人精品亚洲日本在线桃色| 欧美美女激情18p| 国产精品国产三级国产aⅴ无密码| 蜜桃视频在线一区| 在线观看免费亚洲| 中文字幕乱码亚洲精品一区| 日产国产高清一区二区三区| 色综合天天综合网天天看片| wwwwxxxxx欧美| 日韩电影一区二区三区| 日本韩国欧美在线| 中文字幕一区免费在线观看| 美国毛片一区二区三区| 欧美午夜宅男影院| 亚洲美女免费视频| 成人福利视频在线看| 精品国产乱码久久久久久蜜臀| 天堂久久一区二区三区| 91国内精品野花午夜精品| 亚洲欧洲另类国产综合| 国产91精品精华液一区二区三区| 欧美大度的电影原声| 午夜视黄欧洲亚洲| 欧美综合在线视频| 亚洲激情综合网| 99re6这里只有精品视频在线观看| 久久久久久久久久久久久久久99| 裸体一区二区三区| 欧美一二三四区在线| 日本中文字幕一区| 91精品国产综合久久精品性色| 亚洲亚洲精品在线观看| 在线一区二区视频| 亚洲精品精品亚洲| 色综合色综合色综合| 亚洲欧美另类小说| 日本高清免费不卡视频| 亚洲综合无码一区二区| 欧美日韩中文字幕一区二区| 亚洲va国产天堂va久久en| 欧美福利电影网| 日韩精品国产精品| 日韩欧美成人午夜| 久久爱www久久做| 久久―日本道色综合久久| 国产a久久麻豆| 综合激情网...| 欧美日韩免费一区二区三区视频| 视频一区欧美精品| 日韩欧美一级二级三级| 精品一区二区三区视频| 久久精品日韩一区二区三区| 国产大陆亚洲精品国产| 国产精品污网站| 91成人免费电影| 日本不卡高清视频| 久久久综合网站| 91免费版在线| 亚洲第一成人在线| 精品捆绑美女sm三区| 菠萝蜜视频在线观看一区| 亚洲精品国产品国语在线app| 欧美日本一道本在线视频| 国内成人精品2018免费看| 日本一区二区电影| 欧美性videosxxxxx| 久久99精品国产麻豆婷婷洗澡| 欧美激情在线观看视频免费| 色婷婷亚洲精品| 久久狠狠亚洲综合| 中文字幕欧美一| 欧美一区午夜精品| eeuss鲁片一区二区三区在线看|