经典常用的单片机c程序 - 深圳led背光源生产厂家,lcd显示屏,lcm液晶显示模块|模组厂-z6尊龙官网
  1. z6尊龙官网

    1. 
        •  深圳市z6尊龙官网产品分类列表

          联系我们

          公司名称:深圳市z6尊龙官网光电有限公司
          厂址 :中国.广东省.深圳市宝安西乡臣田工业区

          营销专线
          吴先生 手机:13538278608
          胡先生 手机:13823360976
          固定电话 :86-0755-28246146/
          28246906/28246536/28247229
          电话传真:86-0755-89715671
          投诉与售后咨询 黄小姐:13823217679
          胡先生:13928021976

          Email:bly@tuanm9.com

          公司网址:https://www.tuanm9.com/

          经典常用的单片机c程序

          经典常用的单片机c程序

          //16进制<->10进制互换程序

          unsigned char d[10]; //用于显示的10位显示缓存

          //========================================================

          //16进制to10进制输出子程序:显示数据,起始位,结束位,有无小数点

          //========================================================

          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;i<8;i++) {

          tm[i]=dd/div;

          dd%=div;

          div/=10;

          }

          for (i=0;i<6;i++) {

          if (tm[i]!=0) break;

          tm[i]=nul;

          }

          tm[5]|=dip; //小数点控制,请看“串行LED数码管显示驱动程序”

          j=7;

          for (i=s;i d[i]=tm[j];

          j–;

          }

          }

          //把显示位5-9位的10进制数转换成为16进制数

          unsigned int input(void) {

          unsigned int dd,dat;

          dd=10000;dat=0;

          for (i=5;i<10;i++) {

          dat+=dd*temp;

          dd/=10;

          }

          return(dat);

          }

          /* 89C51系列CPU编程器接收CPU程序*/

          #i nclude

          #i nclude

          #i nclude

          #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;i<6;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;i<6;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;i<6;i++) wait(100);

          wait(1);

          ale=1;

          nop();

          vpp=0;

          nop();

          break;

          case 3:

          case 4:

          case 5:

          case 6:break;

          }

          }

          void main(void) {

          unsigned char disp,flash,temp,cpu;

          EA=1;

          SCON=0xd8;PCON=0×80;

          TMOD=0×21;

          TL1=TH1=0xff;TR1=1;

          TH0=-100;ET0=TR0=1;

          flash=0×80;

          while (1) {

          temp=command();

          switch (temp) {

          case 0:

          case 1: //89c51

          case 2: //89C52

          case 3: //80f51

          case 4: //80F52

          case 5: //87F51

          case 6:cpu=temp;SBUF=temp;break;//87f52

          case e:SBUF=temp;earsure(cpu);break; //erasure

          case p:SBUF=temp;program(cpu);break; //program

          case l:LOCk(cpu);SBUF=temp;break; //lock

          default:SBUF=temp;break;

          }

          b_break=0;

          if ((++disp)>flash) {disp=0;LED=!led;}

          }

          }

          //HT1380实时时钟驱动程序

          sbit clock_dat=P0^1;

          sbit clock_clk=P0^2;

          sbit clock_rst=P0^3;

          sbit a0=ACC^0;

          sbit a1=ACC^1;

          sbit a2=ACC^2;

          sbit a3=ACC^3;

          sbit a4=ACC^4;

          sbit a5=ACC^5;

          sbit a6=ACC^6;

          sbit a7=ACC^7;

          void clock_out(unsigned char dd) {

          ACC=dd;

          clock_dat=a0;clock_clk=1;clock_clk=0;

          clock_dat=a1;clock_clk=1;clock_clk=0;

          clock_dat=a2;clock_clk=1;clock_clk=0;

          clock_dat=a3;clock_clk=1;clock_clk=0;

          clock_dat=a4;clock_clk=1;clock_clk=0;

          clock_dat=a5;clock_clk=1;clock_clk=0;

          clock_dat=a6;clock_clk=1;clock_clk=0;

          clock_dat=a7;clock_clk=1;clock_clk=0;

          }

          unsigned char clock_in(void) {

          clock_dat=1;

          a0=clock_dat;

          clock_clk=1;clock_clk=0;a1=clock_dat;

          clock_clk=1;clock_clk=0;a2=clock_dat;

          clock_clk=1;clock_clk=0;a3=clock_dat;

          clock_clk=1;clock_clk=0;a4=clock_dat;

          clock_clk=1;clock_clk=0;a5=clock_dat;

          clock_clk=1;clock_clk=0;a6=clock_dat;

          clock_clk=1;clock_clk=0;a7=clock_dat;

          return(ACC);

          }

          unsigned char read_clock(unsigned char ord) {

          unsigned char dd=0;

          clock_clk=0;

          clock_rst=0;

          clock_rst=1;

          clock_out(ord);

          dd=clock_in();

          clock_rst=0;

          clock_clk=1;

          return(dd);

          }

          void write_clock(unsigned char ord,unsigned char dd) {

          clock_clk=0;

          clock_rst=0;

          clock_rst=1;

          clock_out(ord);

          clock_out(dd);

          clock_rst=0;

          clock_clk=1;

          }

          
          首 页 | 公司简介 | 企业荣誉 | 产品中心 | 新闻中心 | 联系我们 | 集团首页

          版权所有 深圳市z6尊龙官网光电有限公司     粤ICP备08129267号-1
          1. XML地图