在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

  • <dfn id="79stg"></dfn>
    <object id="79stg"><div id="79stg"><label id="79stg"></label></div></object>
    <ruby id="79stg"><dl id="79stg"><noscript id="79stg"></noscript></dl></ruby>

      新聞中心

      EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F877A定時(shí)器的學(xué)習(xí)

      PIC16F877A定時(shí)器的學(xué)習(xí)

      作者: 時(shí)間:2016-11-09 來(lái)源:網(wǎng)絡(luò) 收藏
      由于實(shí)時(shí)數(shù)據(jù)的仿真需要用到定時(shí)器產(chǎn)生數(shù)據(jù),今天晚上完成PIC16F877A產(chǎn)生正弦波形,并將波形數(shù)據(jù)發(fā)送到上位機(jī)!

      這是一個(gè)三角波的仿真程序,并通過(guò)串口發(fā)送到上位機(jī)

      本文引用地址:http://www.biyoush.com/article/201611/317653.htm

      #include
      #include
      #include

      #include "main.h"
      #include "t232.h"
      #include "lcd.h"
      #include "timer.h"

      //define global variable

      bank1 uchar flag =0 ;//利用flag判斷中斷時(shí)間是否到了!
      bank1 char dat[6] ;

      bank2 char str[]="shan dong qing gong ye xue yuan" ;
      bank2 char str1[]="Starting........" ;
      bank2 char str2[]="Capturing......." ;
      bank2 char str3[]="Stop.........." ;
      //bank2 float test = 0;
      //bank2 float t1 ;
      bank2 uchar t1 =0 ;
      bank2 uchar t2=0 ;
      bank1 uchar state = READY ;//當(dāng)前狀態(tài)
      bank1 uchar frame[3] ;//幀緩沖
      bank1 uchar temp ;
      //ms級(jí)延時(shí)程序
      void DelayMS(uint ms){
      uint i;
      while(ms--){
      for(i=0;i<100;i++);
      }
      }

      //10us級(jí)延時(shí)程序
      void Delay10US(uint us){
      uchar i;
      for(i=0;i}
      void interrupt main_int()
      {
      if(RCIE&&RCIF)
      {
      RCIF=0;
      if(OERR)
      {
      CREN=0;
      CREN=1;
      }
      else//不溢出,
      {
      temp=RCREG ;
      //注意這里可以使用簡(jiǎn)單的IF語(yǔ)句,但為了擴(kuò)展幀格式,使用switch語(yǔ)句
      switch(temp)
      {
      case (:
      break ;
      case ):
      break ;
      default:
      state=temp ;
      }
      }
      }
      if(T0IF==1)
      {
      T0IF=0;//must clear zero manually
      flag=1 ;
      }
      }
      void init_all()
      {
      init_232() ;
      init_lcd() ;
      init_timer() ;
      }
      void main()
      {

      init_all() ;

      while(1)
      {
      while((t1>=-20)&&(state==CAPTURE))
      {
      t1++ ;
      sprintf(dat,"(%d)",t1) ;
      send_str(dat) ;
      if(t1==20)
      break ;
      }
      while((t1<=20)&&(state==CAPTURE))
      {
      t1-- ;
      sprintf(dat,"(%d)",t1) ;
      send_str(dat) ;
      if(t1==-20)
      break ;
      }
      switch(state)
      {
      case READY :
      sendcmd(0x01) ;
      sendcmd(0x82) ;
      printlcd(str) ;
      lcd_shift(0,6) ;
      break ;
      case WAIT:
      sendcmd(0x01) ;
      sendcmd(0x82) ;
      printlcd(str1) ;
      break ;
      case CAPTURE:
      sendcmd(0x01) ;
      sendcmd(0x82) ;
      printlcd(str2) ;
      break ;
      case END:
      sendcmd(0x01) ;
      sendcmd(0x80) ;
      printlcd(str3) ;
      delay_long() ;
      break ;
      default:
      break ;
      }
      }


      }



      關(guān)鍵詞: PIC16F877A定時(shí)

      評(píng)論


      技術(shù)專區(qū)

      關(guān)閉