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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pic18 單片機(jī)學(xué)習(xí)(程序?qū)嵗?txt

?? 18F基本模塊初始化程序均在內(nèi)
?? TXT
字號(hào):
PIC18 單片機(jī)學(xué)習(xí)(程序?qū)嵗?
說(shuō)明:

18F基本模塊初始化程序均在內(nèi),且測(cè)試通過(guò),主程序可以調(diào)用各個(gè)程序!

編譯器使用PICC18

//程序主要用于18F單片機(jī)學(xué)習(xí)
#include <pic18.h>    //18系列單片機(jī)頭文件
//-------------函數(shù)定義--------------
void delay(unsigned int rr);
void timer1(void);
void SPI_Iint(void);  //串行SPI輸出設(shè)置函數(shù)
void display(void);
void i2cint(void);    //i2c總線初始化程序
void c64R(void);      //i2c接口的EEPROM存儲(chǔ)器(讀程序)
void c64W(void);      //寫程序
void Start(void);     //起始位發(fā)送函數(shù)
void Stop(void);      //停止位發(fā)送函數(shù)
void WriteWait(void); //等待函數(shù)
void Senddata(unsigned char data); //數(shù)據(jù)發(fā)送函數(shù)
void Restart(void);   //重復(fù)啟動(dòng)函數(shù)
void Datain(void);    //數(shù)據(jù)讀入
void Uartint(void);   //通用同步/異步收發(fā)器初始化程序
void Udatas(unsigned char dad); //UART數(shù)據(jù)發(fā)送
void Uartrs(void);    //串口接收數(shù)據(jù)發(fā)送函數(shù)
void ADint(void);     //AD模塊初始化
void shuchai(void);
//-----------數(shù)據(jù)寄存器定義----------
const unsigned char table[10]={0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6}; //顯示段碼
unsigned char buf[5];      //顯示緩存
unsigned char receive[10]; //定義接收緩存
unsigned char dd;          //定時(shí)器0,中斷計(jì)數(shù)寄存器
unsigned char save;
unsigned char conet;
unsigned char *Counter;    //接收數(shù)據(jù)指針
unsigned char DADh;        //AD緩存,
unsigned char DADl;
unsigned int  Dat;  
unsigned int  Dat1;        //保存上次的AD轉(zhuǎn)換值,用于比  
 
volatile bit  DADflage;    //AD轉(zhuǎn)換標(biāo)志 
volatile bit  I2Cerror;    //I2C錯(cuò)誤標(biāo)志
volatile bit  Uartsend;    //異步串口數(shù)據(jù)發(fā)送允許
union                      //聯(lián)合體用來(lái)對(duì)C64的地址進(jìn)行操作!
{
  unsigned char dizhi[2];
  unsigned int  Adress;
}add;
#define AddLow  add.dizhi[0]
#define AddHigh add.dizhi[1]
#define ADDss   add.Adress
//***********************************
//初始化
//***********************************
void PICint()
{
  SWDTEN=1;                  //禁止看門狗,18F看門狗是可以用軟件控制開(kāi)啟的!
  INTCON=0;
  ADCON1=0x07;               //AD端口全部始能為數(shù)字IO口
  TRISB7=0;                  //設(shè)置為輸出端口
  RB7=0;  
  PIE1=0;
  PIE2=0;
  PIE3=0;
  buf[0]=0;
  buf[1]=0;
  buf[2]=0;
  buf[3]=0;
  //CMCON=0x07;              //關(guān)閉比較器,18F2680沒(méi)有比較器
}
//***********************************
//高優(yōu)先級(jí)中斷函數(shù)
//***********************************
void interrupt HI_ISR()
{
  if(TMR0IF&TMR0IE)          //確認(rèn)是定時(shí)器0中斷
  { 
    dd++;
    TMR0IF=0; 
    TMR0H=0xd8;              //10ms定時(shí)常數(shù)
    TMR0L=0xef;
    if(dd==100)
    {
      dd=0;
      buf[0]++;
      if(buf[0]==10)
       {
         buf[0]=0;
         buf[1]++;
         if(buf[1]==10)
         {
           buf[1]=0;
           buf[2]++;
           if(buf[2]==10)
           {
             buf[2]=0;
             buf[3]++;
             if(buf[3]==10)
             {
               buf[3]=0;
             }
           } 
         } 
       }          
    }
  }
 if(ADIF)   //判斷是否是AD轉(zhuǎn)換中斷
 {   
   ADIF=0;       //清0
   DADh=ADRESH;
   DADl=ADRESL;
   Dat=256*DADh+DADl;
   if(((Dat-Dat1)==1)||((Dat1-Dat)==1))
   {
     Dat=Dat1;
   }
   DADflage=1;
 } 
}  
   
//***********************************
//低優(yōu)先級(jí)中斷函數(shù)
//***********************************
void interrupt low_priority LOW_ISR()
{
  if(RCIF&RCIE)    //如果是串口接收中斷的話,則進(jìn)入中斷處理
  {
    RCIF=0;        //清中斷標(biāo)志 
    *Counter=RCREG;//讀取數(shù)據(jù)到數(shù)組
    Counter++;
    if((Counter-&receive[0])==10)
    {
      Counter=&receive[0];
      Uartsend=1;
    }
  } 
}
//***********************************
//定時(shí)器0初始化子程序
//***********************************
void timer1()
{ 
  IPEN=1;           //打開(kāi)高低優(yōu)先級(jí)
  T0CON=0x09;       //把定時(shí)器0設(shè)定為16位定時(shí)器,內(nèi)部時(shí)鐘觸發(fā),不使用分頻器
  TMR0IE=1;         //允許定時(shí)器0溢出中斷
  TMR0IF=0;         //清除中斷標(biāo)志
  TMR0IP=1;         //設(shè)定定時(shí)器0中斷為高優(yōu)先級(jí)
  TMR0H=0xD8;       //定時(shí)常數(shù)
  TMR0L=0xef;
  GIE=1;
  PEIE=1;
  TMR0ON=1;
}
//***********************************
//AD轉(zhuǎn)換初始化函數(shù)
//***********************************
void ADint()    //使用于18F2680!
{               
  ADCON0=0x01;  //AD轉(zhuǎn)換速率為Fosc/4,并使能AD轉(zhuǎn)換模塊
  ADCON1=0x0e;  //選擇為右對(duì)齊模式,并且使能AD0為模擬通道
  ADCON2=0x91;
  TRISA=1;      //RA0為輸入模式
  ADIF=0;       
  ADIE=1;       //中斷使能
  IPEN=1;       //使能高低中斷優(yōu)先級(jí)
  ADIP=1;       //AD轉(zhuǎn)換設(shè)置為高優(yōu)先級(jí)中斷
  GIE=1;        //開(kāi)總中斷以及外部中斷
  PEIE=1;     
  DADflage=0;  
}               
//***********************************
//I2C初始化函數(shù)
//***********************************
void i2cint()
{
  SSPCON1=0x08;             //允許串口工作,I2C主控方式,時(shí)鐘=Fosc/[4*(SSPADD+1)]
  RC4=1;                    //設(shè)置為輸入
  RC3=1;
  SSPADD=7;                 //時(shí)鐘頻率約為0.125M
  SSPSTAT=0x80;             //關(guān)閉標(biāo)準(zhǔn)速度方式
  SSPCON2=0;
  SSPEN=1;                  //使能串口(SSP模塊)
  I2Cerror=0;
}
//***********************************
//SPI初始化程序
//***********************************
void SPI_Iint()
{
  TRISC5=0;          //SDO引腳
  TRISC4=1;          //SDI引腳
  TRISC3=0;          //SCK,串行時(shí)鐘輸出引腳
  TRISA5=0;          //RA5為從動(dòng)SS端
  SSPCON1=0x30;      //使能串口,高電平為空閑狀態(tài),并且發(fā)送頻率為fose/4,主控方式;
  SSPSTAT=0xc0;      //時(shí)鐘下降沿發(fā)送數(shù)據(jù)!
  SSPIF=0;  
  conet=0;  
}
//***********************************
//通用同步/異步收發(fā)器(UART)初始化
//***********************************
void Uartint()
{
  TXSTA=0x04;       //設(shè)置為高速異步,方式
  RCSTA=0x80;       //使能UART
  TRISC6=0;         //設(shè)置為輸入,對(duì)外部呈現(xiàn)高阻態(tài)
  TRISC7=1;
  SPBRG=25;         //設(shè)置波特率為9600  
                    //波特率計(jì)算公式
                    //1.同步方式:波特率=Fosc/[4(X+1)]
                    //2.異步方式:BRGH=0:波特率=Fosc/[64(x+1)]
                    //            BRGH=1:波特率=Fosc/[16(x+1)]
  IPEN=1;           //開(kāi)中斷優(yōu)先級(jí)
  RCIP=0;           //串口接收使能為低優(yōu)先級(jí)
  RCIE=1;           //串口接收中斷使能
  RCIF=0;
  TXIE=0;           //禁止發(fā)送中斷
  GIE=1;            //開(kāi)總中斷和外圍中斷
  PEIE=1;         
  TXEN=1;           //使能串口發(fā)送
  CREN=1;           //使能串口接收 ,注意18F是CREN而不是RCEN,編譯器都認(rèn)為是正確的但是RCEN不管用!
  Counter=&receive[0];//把數(shù)組的首地址給指針
  Uartsend=0;
} 
//***********************************
//AD轉(zhuǎn)換函數(shù)
//***********************************
void ADchange()
{
  ADCON0=ADCON0|0x02;  //啟動(dòng)AD轉(zhuǎn)換
  if(DADflage)         //如果AD轉(zhuǎn)換完成,這里采用
  {
    DADflage=0;
    shuchai();
    display();
  }
}
//***********************************
//AD 數(shù)據(jù)拆分
//***********************************
void shuchai()
{
  unsigned int i;
  Dat1=Dat;      //保存這次的計(jì)數(shù)值
  i=Dat;
  buf[3]=i/1000; //取出千位
  i=i%1000;      //取出百位數(shù)
  buf[2]=i/100;  //取出百位數(shù)
  i=i%100;       //取出十位數(shù)
  buf[1]=i/10;    
  i=i%10;
  buf[0]=i;
}
//***********************************
//Uart receive data send
//***********************************
void Uartrs()
{
  if(Uartsend)
  {
    unsigned char i;
    Uartsend=0;
    for(i=0;i<10;i++)
    {
      Udatas(*Counter);
      Counter++;
    }
    Counter=&receive[0]; //重新初始化
  }
}
//***********************************
//Uart 數(shù)據(jù)發(fā)送子程序
//***********************************
void Udatas(unsigned char dad)
{
  TXREG=dad;
  while(1)
  {
    if(TXIF==1) break;   //等待數(shù)據(jù)寫入
  }
  delay(80);
}                  
//***********************************
//I2C寫子程序
//***********************************
void c64W()
{
  Start();
  if(I2Cerror==1)
  {
    I2Cerror=0;
    return;         //返回防止死循環(huán)
  }
  Senddata(0xa0);   //發(fā)送尋址地址,以及寫操作地址!
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
  Senddata(0x00);   //發(fā)送高位地址
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
  Senddata(0x40);   //發(fā)送地址低字節(jié)
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
 Senddata(0x55);    //發(fā)送數(shù)據(jù) 
 if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
 Stop();
   
}
//***********************************
//I2C讀數(shù)據(jù)程序
//***********************************
void c64R()
{
  Start();
  if(I2Cerror==1)
  {
    I2Cerror=0;
    return;         //返回防止死循環(huán)
  }
  Senddata(0xa0);   //發(fā)送尋址地址,以及寫操作地址!
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
  Senddata(0x00);   //發(fā)送高位地址
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }
  Senddata(0x40);   //發(fā)送地址低字節(jié)
  if(I2Cerror==1)
  {
    I2Cerror=0;
    Stop();         //錯(cuò)誤處理
    return;         //返回防止死循環(huán)
  }

 Restart();         //發(fā)送重新起始位
 Senddata(0xa1);    //發(fā)送讀命令
 if(I2Cerror==1)
 {
   I2Cerror=0;
   Stop();         //錯(cuò)誤處理
   return;         //返回防止死循環(huán)
 }
 Datain();
 Stop();
 
 if(save==0x55)
 {
   RB7=1;
 }
 conet++;
}
//***********************************
//I2C重復(fù)啟動(dòng)
//***********************************
void Restart()
{
  RSEN=1;
  while(1)
  {
    if(SSPIF==1) break;
  }
  SSPIF=0;
}
//***********************************
//I2C數(shù)據(jù)寫等待
//***********************************
void WriteWait()
{
  while(1)
  {
   Start();           //在數(shù)據(jù)寫入時(shí)間,如果在給器件發(fā)送數(shù)據(jù)不會(huì)有響應(yīng)
   Senddata(0xa0);
   Stop();
   if(I2Cerror==0) break; //等待數(shù)據(jù)寫入,=0則有應(yīng)答位產(chǎn)生
  }
}
//***********************************
//I2C起始位發(fā)送函數(shù)
//***********************************
void Start()
{
  unsigned char i=0;
  SEN=1;            //起始位發(fā)送
  while(1)
  {
    i++;
    if(SSPIF==1) break;
    if(i==200)      //防止死循環(huán)
    {
      i=0;
      I2Cerror=1;   
      break;  
    }
  }
  SSPIF=0;
}
//***********************************
//I2C停止位發(fā)送
//***********************************
void Stop()
{
  PEN=1;
  while(1)
  {
    if(SSPIF==1) break;
  }
  SSPIF=0;
}
//***********************************
//I2C數(shù)據(jù)發(fā)送函數(shù)
//***********************************
void Senddata(unsigned char data)
{
  unsigned char i;
  SSPBUF=data;            //發(fā)送數(shù)據(jù)
  while(1)
  {
    if(SSPIF==1) break;
  }
  SSPIF=0;
  for(i=0;i<10;i++)
  {}
  if(ACKSTAT)   //如果沒(méi)有發(fā)出應(yīng)答信號(hào)
  {
    I2Cerror=1;
  }
  else          //如果發(fā)出應(yīng)答信號(hào)
  {
    I2Cerror=0;
  }
}
//***********************************
//I2C 數(shù)據(jù)讀入函數(shù)
//***********************************
void Datain()
{
  RCEN=1;
  while(1)
  {
    if(SSPIF==1) break;
  }
  SSPIF=0;
  save=SSPBUF;      //讀數(shù)
  ACKDT=1;          //發(fā)送非應(yīng)答位
  ACKEN=1;
  while(1)
  {
   if(SSPIF==1) break;
  }
  SSPIF=0;
}
//***********************************
//164顯示程序
//***********************************
void display()         //164顯示程序,用SPI端口發(fā)送數(shù)據(jù)
{
  unsigned char i;
  unsigned char y,t;   //傳輸完四個(gè)字節(jié)
  for(i=0;i<4;i++)
  {
    y=buf[i];
    t=table[y];
    SSPBUF=t; 
    while(1)
    {
     if(SSPIF) break;
    }
    SSPIF=0; 
  }       
}         
//***********************************
//延時(shí)函數(shù)
//***********************************
void delay(unsigned int rr)  //延時(shí)函數(shù)
{         
  unsigned int asd;
  for(asd=0;asd<rr;asd++)
  {}      
}         
//***********************************
//主函數(shù)  
//***********************************
void  main()
{          
  PICint();          //初始化函數(shù)
//Uartint();         //異步串行口初始化
//SPI_Iint();
//ADint();           //AD模塊初始化
//timer1();   
//display();
//i2cint();          //I2C初始化
//c64W();            //往C64里寫一次數(shù)據(jù)
//WriteWait();
//c64R();            //讀C64里
  while(1) 
  {        
    //CLRWDT();
    //delay(20000);
    CLRWDT();
    RB7=1;
    CLRWDT();
    SLEEP();         //等待看門狗復(fù)位
    RB7=0;
    delay(20000);
    CLRWDT();   
  }       
}         

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合另类小说| 欧美sm美女调教| 91精品国产黑色紧身裤美女| 精品区一区二区| 国产精品丝袜一区| 亚洲啪啪综合av一区二区三区| 一区二区在线观看不卡| 奇米影视一区二区三区小说| 国产成人亚洲综合a∨婷婷图片| 色视频成人在线观看免| 欧美一区二区人人喊爽| 久久免费美女视频| 一区二区三区免费在线观看| 美女视频黄a大片欧美| 成人av高清在线| 91精品国产综合久久福利| 国产丝袜欧美中文另类| 亚洲一区二区欧美| 国产精品亚洲第一区在线暖暖韩国| 色噜噜偷拍精品综合在线| 日韩一区二区三区视频| 亚洲私人黄色宅男| 六月婷婷色综合| 91国偷自产一区二区开放时间 | 日韩美女啊v在线免费观看| 日韩av一级片| 成人ar影院免费观看视频| 日韩一区国产二区欧美三区| 亚洲天堂av老司机| 国产精品123区| 91麻豆精品国产91久久久使用方法| 国产精品国产三级国产aⅴ入口| 日本va欧美va精品| 日本道在线观看一区二区| 久久精品人人做人人爽97| 午夜精品久久久久久久| 99vv1com这只有精品| ww久久中文字幕| 日韩精品欧美精品| 99久久久久免费精品国产| 欧美xxxx在线观看| 午夜精品免费在线观看| 91丨九色丨黑人外教| 国产午夜精品福利| 极品销魂美女一区二区三区| 欧美日韩你懂得| 一区二区三区四区不卡在线| 不卡一区在线观看| 久久精品人人爽人人爽| 久久精品久久久精品美女| 欧美日韩亚洲综合在线| 亚洲女性喷水在线观看一区| 成人高清视频在线观看| 久久精品视频一区二区三区| 美洲天堂一区二卡三卡四卡视频| 欧美综合天天夜夜久久| 精品日产卡一卡二卡麻豆| 亚洲一区在线观看免费观看电影高清| 国产不卡视频一区二区三区| 日韩欧美一区二区久久婷婷| 亚洲高清不卡在线| 日本韩国欧美国产| 亚洲视频香蕉人妖| 91尤物视频在线观看| 国产精品久久久久桃色tv| 成人一区二区视频| 国产日韩欧美麻豆| 国产电影精品久久禁18| 久久老女人爱爱| 国产一区二区毛片| 久久一二三国产| 国产乱子伦一区二区三区国色天香| 日韩精品一区在线| 久久99久久精品| 精品国产电影一区二区| 国内一区二区在线| 国产视频一区二区在线| 懂色一区二区三区免费观看 | 免费看日韩a级影片| 91精品国产乱码久久蜜臀| 免费成人结看片| 精品三级在线观看| 国产久卡久卡久卡久卡视频精品| 国产亚洲综合在线| 成人爽a毛片一区二区免费| 欧美国产成人在线| 99麻豆久久久国产精品免费优播| 亚洲欧美日韩在线不卡| 91久久香蕉国产日韩欧美9色| 亚洲在线一区二区三区| 欧美日韩久久一区| 美美哒免费高清在线观看视频一区二区 | 精品久久久久久久人人人人传媒| 九九久久精品视频| 中文字幕欧美三区| 91在线丨porny丨国产| 亚洲一区在线观看免费观看电影高清| 欧美日韩一区在线| 久久成人麻豆午夜电影| 国产婷婷色一区二区三区四区| av电影一区二区| 亚洲一区二区三区视频在线播放| 日韩一区二区三区免费观看| 国产精品亚洲午夜一区二区三区 | 欧美在线三级电影| 日本中文字幕一区二区视频| 久久久久久日产精品| 99久久婷婷国产精品综合| 亚洲国产视频一区| 精品久久久久香蕉网| youjizz国产精品| 亚洲成人av电影| 久久影院电视剧免费观看| 99riav久久精品riav| 亚洲成av人综合在线观看| 欧美r级在线观看| 99re视频这里只有精品| 日韩中文字幕1| 国产日韩欧美高清在线| 欧美视频中文字幕| 国产在线精品一区二区夜色| 亚洲欧洲一区二区在线播放| 欧美日韩dvd在线观看| 国产精品456| 亚洲电影一级片| 国产精品麻豆一区二区 | 久久精品国产一区二区三区免费看| 国产精品色在线| 欧美精品 日韩| 成人黄色免费短视频| 丝袜美腿一区二区三区| 国产精品第五页| 欧美精品一区二区三区一线天视频 | 久久久久久久久久久黄色| 91黄色免费版| 成人爽a毛片一区二区免费| 免费成人性网站| 一区二区在线观看视频| 国产欧美精品一区| 在线成人高清不卡| 色综合久久中文综合久久牛| 极品瑜伽女神91| 丝袜亚洲另类欧美综合| 亚洲男人天堂av网| 国产亚洲成av人在线观看导航| 91精品国产91久久久久久最新毛片| 成人app网站| 国产精品一品二品| 久久精品国产精品亚洲综合| 亚洲一区二区三区精品在线| 国产精品77777| 蜜桃一区二区三区在线观看| 亚洲国产精品一区二区www| 欧美韩日一区二区三区| 精品美女在线观看| 欧美日韩不卡在线| 91福利国产精品| 99国产精品久久久| 国产黄色91视频| 精品午夜久久福利影院| 日本成人中文字幕| 午夜日韩在线电影| 亚洲已满18点击进入久久| 国产精品卡一卡二| 国产精品视频一区二区三区不卡| 精品成人a区在线观看| 91精品国产一区二区三区| 欧美日韩国产大片| 欧美日韩免费视频| 欧美少妇性性性| 欧美视频日韩视频| 欧美中文字幕一区二区三区| 91免费观看视频在线| 99久久免费国产| 一本大道久久a久久综合| 99久久精品国产麻豆演员表| av电影在线观看一区| caoporn国产一区二区| 成人av在线网| av亚洲精华国产精华| 99久久99久久久精品齐齐| 99国产精品99久久久久久| 91亚洲精品久久久蜜桃网站| 91麻豆免费在线观看| 成人免费视频app| 97久久精品人人爽人人爽蜜臀| av色综合久久天堂av综合| voyeur盗摄精品| 97超碰欧美中文字幕| 91视频在线观看免费| 91蝌蚪porny成人天涯| 欧美亚洲动漫制服丝袜| 欧美日韩视频在线第一区| 欧美日本一区二区三区四区| 91精品国产入口| 欧美精品一区二区久久婷婷| 国产亚洲欧美激情| 国产精品久久福利| 亚洲免费观看高清完整版在线观看| 亚洲影院理伦片|