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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 經(jīng)典常用的單片機(jī)c程序

          經(jīng)典常用的單片機(jī)c程序

          作者: 時(shí)間:2011-05-05 來(lái)源:網(wǎng)絡(luò) 收藏

          //16進(jìn)制->10進(jìn)制互換

          本文引用地址:http://www.ex-cimer.com/article/150798.htm


          unsigned char d[10]; //用于顯示的10位顯示緩存

          //========================================================
          //16進(jìn)制to10進(jìn)制輸出子:顯示數(shù)據(jù),起始位,結(jié)束位,有無(wú)小數(shù)點(diǎn)
          //========================================================
          void output(unsigned long dd,unsigned char s,unsigned char
          e,unsigned char dip) {
          unsigned long div;
          unsigned char tm[8],i,j;
          div=10000000;
          for (i=0;i8;i++) {
          tm[i]=dd/div;
          dd%=div;
          div/=10;
          }
          for (i=0;i6;i++) {
          if (tm[i]!=0) break;
          tm[i]=nul;
          }
          tm[5]|=dip; //小數(shù)點(diǎn)控制,請(qǐng)看“串行LED數(shù)碼管顯示驅(qū)動(dòng)
          j=7;
          for (i=s;ie;i++) {
          d[i]=tm[j];
          j--;
          }
          }

          //把顯示位5-9位的10進(jìn)制數(shù)轉(zhuǎn)換成為16進(jìn)制數(shù)
          unsigned int input(void) {
          unsigned int dd,dat;
          dd=10000;dat=0;
          for (i=5;i10;i++) {
          dat+=dd*temp;
          dd/=10;
          }
          return(dat);
          }
          /* 89C51系列CPU編程器接收CPU程序*/

          #i nclude reg51.h>
          #i nclude intrins.h>
          #i nclude absacc.h>

          #define e 8
          #define p 9
          #define l 10

          sbit led=P3^2;
          sbit p27=P2^7;
          sbit p26=P2^6;
          sbit p36=P3^6;
          sbit p37=P3^7;
          sbit rst=P3^3;
          sbit ale=P3^5;
          sbit vpp=P3^4;

          bit b_break;
          unsigned int adds;


          // 13.8mS
          void int_t0(void) interrupt 1 {
          TH0=-100;
          b_break=1;
          }

          void wait(unsigned char w) {
          unsigned int t=w*184;
          b_break=0;
          TL0=-t%256-1;TH0=-t/256;
          while (b_break==0) {}
          }

          void nop(void) {
          _nop_();_nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();_nop_();
          _nop_();_nop_();_nop_();_nop_();
          }

          unsigned char command(void) {
          TH0=-100;b_break=0;
          while (RI==0) {if (b_break==1) return(0);}
          RI=0;
          return(SBUF);
          }

          void earsure(unsigned char cpu) {
          switch (cpu) {
          case 1: //89C51
          case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();
          ale=0;wait(110);ale=1;nop();
          break;
          case 3:
          case 4:break;
          case 5:
          case 6:break;
          }
          }

          void program(unsigned char cpu) {
          unsigned int bdata adds=0;
          unsigned char d;
          switch (cpu) {
          case 1: //89C51
          case 2:
          p36=p37=1;rst=1;
          while (1) {
          TH0=-100;b_break=0;
          while (RI==0) {if (b_break==1) return;}
          RI=0;
          d=SBUF;
          //address
          P0=adds%256;
          P2=adds/256;
          p27=1;
          //data
          P1=d;
          nop(); //48clcl
          //vpp
          vpp=1;
          nop(); //48clcl
          //ale
          ale=0;
          wait(1);//100uS
          ale=1;
          nop(); //10uS
          vpp=0;
          nop(); //48clcl
          p27=0;
          nop(); //48clcl
          P1=0xff;
          TH0=-100;b_break=0;
          while (d!=P1) {if (b_break==1) return;} //data
          polling
          SBUF=d;
          adds++;
          }
          break;
          case 3:
          case 4:
          case 5:
          case 6:break;
          }
          }

          void lock(unsigned char cpu) {
          unsigned char i;
          switch (cpu) {
          case 1: //89c51
          case 2:
          //lock 1
          rst=p26=p36=p27=p37=1;nop();
          vpp=1;
          nop();
          ale=0;
          // for (i=0;i6;i++) wait(100);
          wait(1);
          ale=1;
          nop();
          vpp=0;
          nop();

          //lock 2
          rst=p26=p27=1;p36=p37=0;nop();
          vpp=1;
          nop();
          ale=0;
          // for (i=0;i6;i++) wait(100);
          wait(1);
          ale=1;
          nop();
          vpp=0;
          nop();

          //lock 3
          rst=p26=p36=1;p27=p37=0;nop();
          vpp=1;
          nop();
          ale=0;
          // for (i=0;i6;i++) wait(100);
          wait(1);
          ale=1;
          nop();
          vpp=0;
          nop();
          break;
          case 3:
          case 4:
          case 5:
          case 6:break;
          }
          }


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁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); })();