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

📄 ft_ca413.c

📁 msp430f413读4442卡的热量表源程序
💻 C
📖 第 1 页 / 共 2 页
字号:

#include  <msp430x41x.h>
#include  <math.h>
const unsigned int hanzhi[]={0,478,899,1321,1741,2162,2582,3002,3422,3841,4261,4680,5099,5518,5967,6355,6774,7193,7611,8029,8448,8866,9284,9702,10120,10538,10956,11374,11792,12210,12628,13046,13463,13881,14299,14717,15135,15552,15970,16388,16806,17224,17641,18059,18477,18895,19313,19731,20149,20567,20985,21403,21821,22239,22657,23075,23494,23912,24330,24748,25167,25585,26004,26422,26841,27259,27678,28097,28515,28934,29353,29772,30191,30610,31029,31448,31868,32287,32706,33126,33545,33965,34385,34804,35224,35644,36064,36484,36904,37325,37745,38165,38584,39007,39427,39848,40269,40690,41111,41533,41954};
const unsigned int midu[]={0,10002,10002,10002,10002,10002,10002,10001,10001,10000,9999,9998,9997,9996,9995,9993,9992,9990,9988,9986,9984,9982,9980,9978,9975,9973,9970,9967,9965,9962,9959,9956,9953,9949,9946,9943,9939,9936,9932,9928,9924,9921,9917,9913,9909,9904,9900,9896,9891,9887,9883,9878,9873,9869,9864,9859,9854,9849,9844,9839,9834,9829,9824,9818,9813,9808,9802,9797,9791,9786,9780,9774,9768,9763,9757,9751,9745,9739,9733,9726,9720,9714,9708,9701,9695,9688,9682,9675,9669,9662,9655,9649,9642,9635,9628,9621,9614,9607,9600,9593,9586};
const unsigned char seg[]={0x7d,0x05,0x3e,0x7a,0x63,0x5b,0x5f,0x70,0x7f,0x7b,0x37,0x1f,0x75,0x1d,0x0d,0x06,0x02};
unsigned char dis_buff[]={0,0,0,0,0,0,0,0,0,0,0,0};//显示缓存单元
//unsigned char ljgl_ca[]={0,0,0,0,0,0,0,0,0,0,0,0,0};
char read_buf[12];
unsigned long ljll=0,scgl,tempca=0,js=0,hs=0,js1=0,hs1=0,js_hz=0,hs_hz=0,hz_cha=0,js_wendu=0,hs_wendu=0;
no_init unsigned long ljrl,ljgl,yl;
no_init unsigned int ljll_cnt;
double pt_ajs=0,pt_bjs=0,pt_ad0js=0,pt_ad50js=0,pt_ad100js=0,wendu_js=0;//进水参数
double pt_ahs=0,pt_bhs=0,pt_ad0hs=0,pt_ad50hs=0,pt_ad100hs=0,wendu_hs=0;//回水参数
unsigned char halfsec,sec10s,kset_v=0,flag_ca=0,iccard_ec,minitue,hour,opcl=1,k,data1=0,data2=0,data3=0,data4=0,data7=0,data8=0,data11=0,data12=0;//键值缓存
unsigned int cap_reg=0,cap_reg1=0,ljrl_30s=0,js_ad=0,hs_ad=0,bz_cha=0,js_cha=0,hs_cha=0,bz,bz1,bz2,pttemp;
void delay(unsigned int v)
{
  while(v!=0)v--;
}
void dgdg(void)
{
  CACTL1=CARSEL+CAREF0+CAON;
  CACTL2=P2CA0;
  TACTL=TASSEL1+TACLR+MC1;
  CCR1=50000+TAR;
  CCTL1|=CCIE;
  P2OUT&=~BIT1;
  P1OUT&=~BIT5;
}
void dsds(void)
{
  cap_reg1=TAR;

          cap_reg1-=cap_reg;
          bz2=cap_reg1;
        CCTL1&=0;
          TACTL&=~MC1;
          TACTL|=TACLR;
          CACTL1&=~CAON;
}
void dada(void)
{
  CCTL1=CM1+CCIS0+CAP+CCIE;
  cap_reg=TAR;
}

void bzsj(void)
{
      dgdg();
//      P2OUT|=BIT2;
      LPM0;


      dada();
      P1OUT&=~BIT5;
      P2OUT|=BIT1;

      LPM0;

      dsds();
}
void jssj(void)
{
      dgdg();

//      P2OUT|=BIT3;

      LPM0;


      dada();

      P2OUT&=~BIT1;
      P1OUT|=BIT5;
      LPM0;

      dsds();
}
void hssj(void)
{
  dgdg();

//      P2OUT|=BIT4;
  LPM0;
  dada();
  P2OUT|=BIT1;
  P1OUT|=BIT5;
  LPM0;
  dsds();
}

unsigned char keycode(void)//键值子程序
{
  unsigned char x;

    x=(P1IN&0x10);


  return(x);
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1(void)//P1中断
{
  if((P1IN&0x10)==0)
  {
    delay(1000);
    if((P1IN&0x10)==0)
    {

      kset_v++;
      if(kset_v>7)
      {
       kset_v=0;
      }
     }
   }
  if((P1IN&0x08)==0)
  {
    delay(1000);
    if((P1IN&0x08)==0)
    {
      P6OUT|=BIT3;
      delay(50);
      P6OUT&=~BIT2;
      P6OUT|=BIT7;

     }
   }
  if((P1IN&0x04)==0)
  {
    delay(1000);
    if((P1IN&0x04)==0)
    {

      P6OUT|=BIT3;
      delay(50);
      P6OUT&=~BIT2;
      P6OUT|=BIT7;
      flag_ca&=~BIT1;
     }
   }
   P1IFG&=~BIT2;
   P1IFG&=~BIT3;
   P1IFG&=~BIT4;
   LPM3_EXIT;
}

unsigned long disp_int(unsigned long ljtemp)//主显拆分子程序
{
  unsigned char ljjm;
  ljjm=ljtemp%10;
  dis_buff[7]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[6]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[5]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[4]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[3]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[2]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[1]=seg[ljjm];
  ljtemp=ljtemp/10;
  ljjm=ljtemp%10;
  dis_buff[0]=seg[ljjm];
  if(dis_buff[0]==0x7d)
  {
    dis_buff[0]=0x00;
    if(dis_buff[1]==0x7d)
    {
      dis_buff[1]=0x00;
      if(dis_buff[2]==0x7d)
      {
        dis_buff[2]=0x00;
        if(dis_buff[3]==0x7d)
        {
          dis_buff[3]=0x00;

        }
        ;
      }
      ;
    }
    ;
  }
  return(0);
}
void close1(void)
{
  P6OUT&=~BIT3;
  P6OUT&=~BIT7;
  P6OUT&=~BIT2;
}
void open1(void)
{
  P6OUT&=~BIT3;
  P6OUT|=BIT7;
  P6OUT|=BIT2;
}

void read_Flash(char *addr,char *rbuf,int len)
{
  unsigned int cnt;
  for(cnt=0;cnt<len;cnt++)
  {
    *(rbuf+cnt)=*(addr+cnt);
  }
  FCTL3=FWKEY+LOCK;

}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A0(void)//TIMER1定时0.5S中断
{
  halfsec=halfsec+1;
//  sec30s=sec30s+1;
  sec10s=sec10s+1;
//  sec20s+=1;

    if(halfsec>119)
      {
        halfsec=0;
        minitue=minitue+1;
        if(minitue>59)
          {
            minitue=0;
            hour=hour+1;
            if(hour>239)
              {
                hour=0;
                if((P1IN&0x08)==0)
                {
                    open1();
                }
                else if((P1IN&0x04)==0)
                {
                    close1();
                    flag_ca|=BIT1;
                }
              }
          }
      }
  LPM3_EXIT;
}

#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
  switch(TAIV)
    {
      case 2:LPM0_EXIT;break;
      case 4:break;
      case 10:LPM0_EXIT;break;
      default:break;
    }
}
unsigned char tram_iccard(unsigned char iccard_temp)
{
  unsigned char iccard_cnt=0;
  sss:if((iccard_temp&0x01)!=0)
        P6OUT|=BIT6;//IC卡数据为1
      else
        P6OUT&=~BIT6;//IC卡数据为0
      delay(9);
      P6OUT|=BIT5;//时钟为1
      delay(9);
      P6OUT&=~BIT5;//时钟为0
      delay(9);
      iccard_cnt++;//循环8次
      iccard_temp=iccard_temp>>1;
      if(iccard_cnt<8)
        goto  sss;
      else return(0);

}
void iccard_start(void)
{
  delay(9);
  P6OUT&=~BIT5;
  delay(9);
  P6OUT|=BIT6;
  delay(9);
  P6OUT|=BIT5;
  delay(9);
  P6OUT&=~BIT6;
  delay(9);
  P6OUT&=~BIT5;
}
void iccard_stop(void)
{
  delay(9);
  P6OUT&=~BIT6;
  delay(9);
  P6OUT|=BIT5;
  delay(9);
  P6OUT|=BIT6;
  delay(9);

}
void clk256(void)
{
  unsigned char iccard_cnt=255;
  P6DIR|=BIT6;
  delay(9);
  P6OUT&=~BIT5;
  delay(9);
  P6OUT&=~BIT6;
  delay(9);
  preloop:P6OUT|=BIT5;
  delay(9);
  P6OUT&=~BIT5;
  delay(9);
  iccard_cnt--;
  if(iccard_cnt!=0)
    goto  preloop;
  else ;
  P6OUT|=BIT6;
}
void iccard_break(void)
{
  delay(9);
  P6OUT&=~BIT5;
  delay(9);
  P6OUT|=BIT4;
  delay(9);
  P6OUT&=~BIT4;
  delay(9);
}
unsigned char read_iccard(void)
{
  unsigned char iccard_cnt=0,read_temp=0,read_buf1=0;
  P6DIR&=~BIT6;
  delay(9);
  P6OUT&=~BIT5;
  delay(9);
  readloop:if((P6IN&0X40)!=0)
    read_temp=1;
  else read_temp=0;
  read_temp=read_temp<<iccard_cnt;
  read_buf1|=read_temp;
  P6OUT|=BIT5;
  delay(9);
  P6OUT&=~BIT5;
  iccard_cnt++;
  if(iccard_cnt<8)
    goto  readloop;
  else ;
  return(read_buf1);
}
unsigned char command_iccard(unsigned char iccard_data,unsigned char iccard_addres,unsigned char iccard_command)
{
  P6DIR|=BIT6;
  delay(9);
  iccard_start();
  delay(9);
  tram_iccard(iccard_command);
  tram_iccard(iccard_addres);
  tram_iccard(iccard_data);
  delay(9);
  iccard_stop();
  return(0);
}

void ccc1(void)
{
                command_iccard(0,0x30,0x30);
                data11=read_iccard();
                tempca=read_iccard();
                js=read_iccard();
                hs=read_iccard();
                js1=read_iccard();
                hs1=read_iccard();
                js_hz=read_iccard();
                hs_hz=read_iccard();
                hs_cha=read_iccard();
                js_wendu=read_iccard();
                hs_wendu=read_iccard();
                data12=read_iccard();
                iccard_break();
}
void ccc2(void)
{
   scgl=(hs_wendu+js_wendu*10+hs_cha*100+hs_hz*1000+js_hz*10000+hs1*100000+js1*1000000+hs*10000000+js*100000000+tempca*1000000000);
   yl+=scgl;
   ljgl+=scgl;
}


void iccard_main(void)
{

    P6DIR|=BIT5;
    P6DIR|=BIT4;
    delay(40);
    P6OUT|=BIT4;
    delay(9);
    P6OUT|=BIT5;
    delay(9);
    P6OUT&=~BIT5;
    delay(9);
    P6OUT&=~BIT4;
    delay(9);
    read_iccard();
    read_iccard();
    read_iccard();
    read_iccard();
    command_iccard(0,0x40,0x30);
    data1=read_iccard();
    data2=read_iccard();
    iccard_break();
    if(((data1==0x3C)&&(data2==0xC3))||((data1==0x2D)&&(data2==0xD2))||((data1==0x69)&&(data2==0x96)))
    {

          command_iccard(0,0,0x31);

          iccard_ec=read_iccard();
          data1=iccard_ec;

          data2=read_iccard();

          data3=read_iccard();

          data4=read_iccard();
   //       P3OUT&=~BIT3;
          if((iccard_ec&0x07)!=0)
          {
            command_iccard(0x06,0,0x39);
            clk256();
            iccard_break();

⌨️ 快捷键说明

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