⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prt.c

📁 K51下的微型打印机驱动程序,使用环境:K51+SM8958A+62C256
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <reg52.h>
#include <comm.h>
#include <lcd.h>

#define uchar unsigned char
#define uint unsigned int

extern uchar xdata high;
extern uint  xdata nb_sp;
extern uchar key0;
extern bit DEBUG;

extern uchar code ASCII[118][16];
extern uchar code H_01[32],H_02[32],H_03[32],H_04[32],H_05[32],H_06[32],H_07[32];
extern uchar code H_08[32],H_09[32],H_10[32],H_11[32],H_12[32],H_13[32],H_14[32];
extern uchar code H_15[32],H_16[32],H_17[32],H_18[32],H_19[32],H_20[32],H_21[32];
extern uchar code H_22[32],H_23[32],H_24[32],H_25[32],H_26[32],H_27[32],H_28[32];
extern uchar code H_29[32],H_30[32],H_31[32],H_32[32],H_33[32],H_34[32],H_35[32];
extern uchar code H_36[32],H_37[32],H_38[32],H_39[32],H_40[32],H_41[32],H_42[32];
extern uchar code H_43[32],H_44[32],H_45[32],H_46[32],H_47[32],H_48[32],H_49[32];
extern uchar code H_50[32],H_51[32],H_52[32],H_53[32],H_54[32],H_55[32],H_56[32];
extern uchar code H_57[32],H_58[32],H_59[32],H_60[32],H_61[32],H_62[32],H_63[32];
extern uchar code H_64[32],H_65[32]; 
extern uchar xdata clockr [6];
extern uchar xdata err_ch[20];

uchar xdata clkasc[12],s;
void    ascii_buff(uchar ascii,uchar *buf);
uchar   bdata     p_dot;
sbit    dot7    = p_dot^7;
sbit    dot6    = p_dot^6;
sbit    dot5    = p_dot^5;
sbit    dot4    = p_dot^4;
sbit    dot3    = p_dot^3;
sbit    dot2    = p_dot^2;
sbit    dot1    = p_dot^1;
sbit    dot0    = p_dot^0;
uchar xdata print_buff[640];

extern void  clear_lcd(void);
extern uint  rd_jsq;
extern uchar xdata file[400][MAX_TIME+8];
extern void  rdtime(void);

void  txtdata(uchar t_data)
  {
    TI=0;
    SBUF=t_data;
    wait3: if ( TI==0)  goto  wait3;
  }
uchar rddata(void)
  {
    idata uchar rd = 0xff;
    if ( RI == 0)  goto  wait3;
    rd = SBUF;
    RI=0;
    wait3:
    return(rd);
  }
void out_pc(uint i)
  {
    idata j;
    j = i/100;
    txtdata(j);
    j = i % 100;
    j /= 10;
    txtdata(j);
    j = i % 10;
    txtdata(j);
  }
void to_pc(void)
  {
    idata uint i;
    idata uchar c;
    to_w0:
    c = 0xff;
    rd_jsq = 0;
    while(c == 0xff)
      {
        if(rd_jsq > 2000) goto to_err;
        c = rddata();
      }
    if(c == 0x7f) goto to_err;
    if(c != 0x71) goto to_w0;
    txtdata(0x72);
    c = 0xff;
    rd_jsq = 0;
    while(c == 0xff)
      {
        if(rd_jsq > 2000) break;
        c = rddata();
      }
    if(c != 0x73) goto to_err;
    clear_lcd();
    wr_hz(64+0*16,1,H_01);
    wr_hz(64+1*16,1,H_02);
    wr_hz(64+2*16,1,H_30);
    wr_hz(64+3*16,1,H_18);
    for(i=0;i<nb_sp;i++)
      {
        out_pc(i+1);
        out_pc(file[i][FILE_XC]);
        out_pc(file[i][FILE_YJ]);
      }
    txtdata(0x74);
    txtdata(0x74);
    c = 0xff;
    rd_jsq = 0;
    while(c == 0xff)
      {
        if(rd_jsq > 2000) break;
        c = rddata();
      }
    if(c != 0x75) goto to_err;
    clear_lcd();
    wr_hz(64+0*16,1,H_30);
    wr_hz(64+1*16,1,H_18);
    wr_hz(64+2*16,1,H_50);
    wr_hz(64+3*16,1,H_51);
    key0 = 0;
    goto to_end;
    to_err:
    clear_lcd();
    wr_hz(64+0*16,1,H_30);
    wr_hz(64+1*16,1,H_18);
    wr_hz(64+2*16,1,H_48);
    wr_hz(64+3*16,1,H_49);
    key0 = 0;
    to_end:
    if(key0 != 6) goto to_end;
    key0 = 0;
    clear_lcd();
  }
void ascii_buff(uchar ascii,uchar *buf)
  {
    idata uchar  i;        
    ascii-=0x20;
    for(i=0;i<16;i++) *buf++=ASCII[ascii][i];                      
  }

void number_2p_map(uchar num,uchar *buff)
  { 
    ascii_buff('.',buff);  buff=buff+16;        
    ascii_buff('0'+num/10,buff);  buff=buff+16;
    ascii_buff('0'+num%10,buff);
  }
void print_number(uint num)
  {
    idata uchar  k,r,n;
    uint  idata ax,i;
    i=0;k=100;ax=num;
    for (r=0;r<3;r++)
      {
        ax=ax/k;
        if ((ax|i|(r>1))==0)  goto pn;
        //txtdata(' ');
        else
          {
            n='0';
            for (i=0;i<ax;i++)  n++;
            txtdata(n);
          }
        pn:  i=ax; ax=num%k;  k=k/10;
      }
  }
/*
void print_p(uint num)
  {
    idata uchar r,n;
    idata uint  ax,i,k;
    txtdata(9);
    i=0;k=1000;ax=num;
    for (r=0;r<4;r++)
      {
        ax=ax/k;
        if ((ax|i|(r>1))==0) goto pp;
        else 
          {
            n='0';
            for (i=0;i<ax;i++)  n++;                
          }
        txtdata(n);
        if (r==2) txtdata('.');
        pp:i=ax; ax=num%k;  k=k/10;
      }
  }
*/
void print_2p(uint num)
  {
    idata uchar r,n;
    idata uint ax,i,k;
    txtdata(9);
    i=0;k=100;ax=num;
    for (r=0;r<3;r++)
      {
        ax=ax/k;
        //if ((ax|i|(r>1))==0)
        // goto pp;
        //else 
          {
            n='0';
            for (i=0;i<ax;i++)  n++;                
          }
        txtdata(n);
        if (r==0) txtdata('.');
        i=ax; ax=num%k;  k=k/10;
      }
  }

uchar print_chang(uchar dot_data)
  {
    idata uchar  chang;
    chang=0;
    p_dot=dot_data;
    if (dot7)  chang|=0x01;
    if (dot6)  chang|=0x02;
    if (dot5)  chang|=0x04;
    if (dot4)  chang|=0x08;
    if (dot3)  chang|=0x10;
    if (dot2)  chang|=0x20;
    if (dot1)  chang|=0x40;
    if (dot0)  chang|=0x80;
    return(chang);
  }
void number_map(uint num,uchar *buff)
  {
    idata uchar k,r,n;
    idata uint  ax,i;
    i=0;k=100;ax=num;
    for (r=0;r<3;r++)
      { 
        ax=ax/k;
        if ((ax|i|(r>1))==0) ascii_buff(' ',buff); 
        else
          {
            n='0';
            for (i=0;i<ax;i++)  n++;
            ascii_buff(n,buff); 
          }
        buff=buff+16;
        i=ax; ax=num%k;  k=k/10;
      }
  }
void clk_asc(void)
  {

    rdtime();
    s=clockr[5];  s >>= 4;
    clkasc[11] = s + 0x30;
    s=clockr[5];  s &= 0x0F;
    clkasc[10] = s + 0x30;
    s=clockr[4];  s >>= 4;
    clkasc[9] = s + 0x30;
    s=clockr[4];  s &= 0x0F;
    clkasc[8] = s + 0x30;
    s=clockr[3];  s >>= 4;
    clkasc[7] = s + 0x30;
    s=clockr[3];  s &= 0x0F;
    clkasc[6] = s + 0x30;

    s=clockr[2];  s >>= 0x04;
    clkasc[5] = s + 0x30;
    s=clockr[2];  s &= 0x0F;
    clkasc[4] = s + 0x30;
    s=clockr[1];  s >>= 0x04;
    clkasc[3] = s + 0x30;
    s=clockr[1];  s &= 0x0F;
    clkasc[2] = s + 0x30;
    s=clockr[0];  s &= 0x04;
    clkasc[1] = s + 0x30;
    s=clockr[0];  s &= 0x0F;
    clkasc[0] = s + 0x30;

  }

void print_16(uchar num)
  {
    idata uchar dot,k;
    uchar xdata *buf;
    for (dot=0;dot<2;dot++)
      {
        txtdata(27);
        txtdata(75);
        txtdata(num);
        txtdata(0);
        buf=print_buff;
        buf=buf+dot;
        for (k=0;k<num;k++)
          {
            txtdata(print_chang(*buf++));
            buf++;
          }
        txtdata(0x0d);         
      }
  }
void print_time(void)
  {
    clk_asc();
    txtdata(27);txtdata(87);txtdata(2);
    txtdata('2');txtdata('0');txtdata(clkasc[11]);txtdata(clkasc[10]);
    txtdata('/');
    txtdata(clkasc[9]);txtdata(clkasc[8]);
    txtdata('/');
    txtdata(clkasc[7]);txtdata(clkasc[6]);
    txtdata(' ');txtdata(' ');txtdata(' ');
    txtdata(clkasc[5]);txtdata(clkasc[4]);
    txtdata(':');
    txtdata(clkasc[3]);txtdata(clkasc[2]);
    txtdata(0x0d);
    txtdata(27);txtdata(87);txtdata(1);
  }
void print_test(void)
  {
    idata uchar k;
    idata uchar code *hp;
    uchar xdata *buf; 
    txtdata(27);
    txtdata(49);
    txtdata(0);  
    txtdata(0x0d);
    txtdata(0x0d);
    print_time();
    buf=print_buff;
    if (err_ch[0]==0)
      {
        hp = H_54;
        for (k=0;k<64;k++) *buf++=*hp++;
        hp = H_03;
        for (k=0;k<64;k++) *buf++=*hp++;
        hp = H_01;
        for (k=0;k<32;k++) *buf++=*hp++;
        hp = H_56;
        for (k=0;k<32;k++) *buf++=*hp++;
        print_16(96);
      }
    else
      {
        hp = H_52;
        for (k=0;k<64;k++) *buf++=*hp++;
        hp = H_23;
        for (k=0;k<64;k++) *buf++=*hp++;
        ascii_buff(':',buf); buf=buf+16;
        print_16(72);
        txtdata(27);txtdata(87);txtdata(2);
        txtdata(27);txtdata(68);txtdata(1);txtdata(8);txtdata(15);txtdata(22);txtdata(0);
        for (k=0;k<20;k++)
          {
            if ( err_ch[k] == 0)
              {
                txtdata(0x0d);
                break;
              }
            else
              {
                txtdata(9);
                print_number(err_ch[k]);
                if (((k+1)%4) == 0)  
                  {
                    txtdata(0x0d);
                    txtdata(27);txtdata(68);txtdata(1);txtdata(8);txtdata(15);txtdata(22);txtdata(0);
                  }
              }
          }
        txtdata(27);txtdata(87);txtdata(1);
      }
    txtdata(27);
    txtdata(49);
    txtdata(3);
    txtdata(0x0d);
    txtdata(0x0d); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -