<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC16F877A定時器的學習

          PIC16F877A定時器的學習

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

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

          本文引用地址:http://www.ex-cimer.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判斷中斷時間是否到了!
          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 ;//當前狀態(tài)
          bank1 uchar frame[3] ;//幀緩沖
          bank1 uchar temp ;
          //ms級延時程序
          void DelayMS(uint ms){
          uint i;
          while(ms--){
          for(i=0;i<100;i++);
          }
          }

          //10us級延時程序
          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 ;
          //注意這里可以使用簡單的IF語句,但為了擴展幀格式,使用switch語句
          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 ;
          }
          }


          }



          關鍵詞: PIC16F877A定時

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();