您当前的位置:五五电子网电子知识单片机-工控设备源码-程序经典常用的单片机c程序 正文
经典常用的单片机c程序

经典常用的单片机c程序

点击数:7470 次   录入时间:03-04 11:46:43   整理:http://www.55dianzi.com   源码-程序

//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<e;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 <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;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;
    }
 }



www.55dianzi.com

 void main(void) {
     unsigned char disp,flash,temp,cpu;
     EA=1;
     SCON=0xd8;PCON=0x80;
     TMOD=0x21;
     TL1=TH1=0xff;TR1=1;
     TH0=-100;ET0=TR0=1;

[1] [2] [3] [4]  下一页


本文关键字:单片机  经典  c程序  源码-程序单片机-工控设备 - 源码-程序

《经典常用的单片机c程序》相关文章>>>