中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開(kāi)發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開(kāi)發(fā)工具

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

初學(xué)C.按鍵+ LCD+DS1302+A_D程序

更新時(shí)間: 2019-03-23
閱讀量:1655

十年專注單片機(jī)方案開(kāi)發(fā)的方案公司英銳恩,分享初學(xué)C.按鍵+ LCD+DS1302+A_D程序。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類(lèi)運(yùn)算放大器等。

#include
#include
#define uchar  unsigned char
#define uint   unsigned int
static volatile unsigned char acc @ 0x20;
static volatile bit acc0     @ (unsigned)&acc*8+0;
static volatile bit acc7     @ (unsigned)&acc*8+7;
#define PORTAIT(add,bit) ((unsigned)(&add)*8+(bit))
#define PORTBIT(add,bit) ((unsigned)(&add)*8+(bit))
#define PORTCIT(add,bit) ((unsigned)(&add)*8+(bit))

static  bit    RS  @  PORTCIT(PORTC,0);  
static  bit    RW  @  PORTCIT(PORTC,1);  
static  bit    E   @  PORTCIT(PORTC,2);  
static  bit T_RST  @  PORTCIT(PORTC,5);  
static  bit  T_CLK @  PORTCIT(PORTC,6);  
static  bit  T_IO  @  PORTCIT(PORTC,7);  

static  bit  PORTA_0 @  PORTAIT(PORTA,0);   ///*定義PORTA 0位*/
static  bit  PORTA_1 @  PORTAIT(PORTA,1);   ///*定義PORTA 1位*/
static  bit  PORTA_2 @  PORTAIT(PORTA,2);   ///*定義PORTA 2位*/
static  bit  PORTA_5 @  PORTAIT(PORTA,5);   

static  bit  RB_7 @  PORTBIT(PORTB,7);
const   unsigned char  Data[ ]={'0', '1', '2','3','4', '5', '6','7', '8','9',' '};
const   unsigned char  Ds1302[] = {9, 9, 0, 7,  1, 9 ,3,9,  2,4, 5, 9 ,5,9,};
                                                      // // 年  星期   月    日    時(shí)   分  秒
const   unsigned char ds1302_sub[ ]={0};
uchar  DisCash[]={0x00,0x30,0x09,0x1,0x06,0x06,0x06};
                              //初始化參數(shù)  秒  分  時(shí)  日 月 星期 年
  unsigned  char  y,i;
            char *pc;
  uchar  BCD[3];
uchar get1302[7];
uchar appear[]={0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0};
void Delay   (  );
void enable  ();
void  display();//顯示程序
//延時(shí)子程序
void delay()
{  
unsigned  int i=1000;
  while(i--) //for(i=6000;0<i;>  {

  ;  // continue;
     }
}
////////////////十六進(jìn)制轉(zhuǎn)十進(jìn)制程序

void  H_BCD (uchar x)
{  
         //i,j,t1,t2;
    BCD [2]=x%10;
    BCD [1]=(x%100)/10;
    BCD [0]=x/100;
}
    
//////////寫(xiě)入數(shù)據(jù)子程序////////////////////////////
void W_data ()
{
         Delay();//判斷液晶顯示器是否忙
         RS=1;
         RW=0;
         PORTB=y;
       // enable();//寫(xiě)入控制命令子程序
         E=1;
         E=0;
}

//////寫(xiě)入控制命令子程序////////////////////////////
void enable  ()
{  Delay();
   RS=0;

  RW=0;
   PORTB =y;
   E=1;
   E=0;
}
///////判斷液晶顯示器是否忙///////////////////////
void Delay ()
{
    RS=0;
    RW=1;
    E=0;
    NOP();
    TRISB=0x80;
    E=1;
while(RB_7==1 )

 {
       RS=0;
       RW=1;
       E=0;
       NOP();
       E=1;
     }
     TRISB=0x00;
}
///////////////////////////////////////////////////////////////////////////

void  interrupt  adint(void)
  {
      ADIF=0;//清/AD中斷標(biāo)志位
  }

////////系統(tǒng) 各I/O初始化子程序///////////////////////////////////////////
void  initial ()
{   TRISB=0;
    TRISC=0;
    TRISA=0x0ff;
}
//////////A/D轉(zhuǎn)換初始化子程序//////////////////////////////
void  adinitial()
{

ADCON1=15;//;設(shè)置RA為A/D甬道模擬輸入
                   //;RC時(shí)鐘。打開(kāi)A/D轉(zhuǎn)換器。先中通道0
     ADCON0=0x0c1;// B'11000001'   // ;A/D時(shí)鐘為RC。RA0作A/D輸入等
       ADIE=1; //時(shí)。開(kāi)放中斷
       ADIF=0; //清/AD中斷標(biāo)志位   PIR1,
       PEIE=1; //開(kāi)放外圍部件中斷INTCON,
       GIE=1;   //開(kāi)放總中斷   INTCON,
}
/////往1302寫(xiě)入1Byte數(shù)據(jù)////////////////////////
void RTInputByte(uchar d)
{
    uchar i;
    acc = d;
    TRISC=0x00;
    for(i=8; i>0; i--)
    {
      T_IO = acc0;//CARRY;//ACC0;  //*相當(dāng)于匯編中的 RRC */
      T_CLK = 1;
      T_CLK = 0;

acc = acc >> 1;
    }
}
///////從1302讀取1Byte數(shù)據(jù)////////////////////////
uchar RTOutputByte(void)
{
    uchar i;
    TRISC=0x80;
    for(i=8; i>0; i--)
    {
      acc = acc >>1;         //*相當(dāng)于匯編中的 RRC */
      acc7= T_IO;// CARRY
      T_CLK = 1;
      T_CLK = 0;
    }
     return(acc);
}
///////先寫(xiě)地址,后寫(xiě)命令/數(shù)據(jù)//////////////////////////
void W1302(uchar ucAddr, uchar ucDa)
{
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);      // /* 地址,命令 */
    RTInputByte(ucDa);        // /* 寫(xiě)1Byte數(shù)據(jù)*/
    T_CLK = 1;
    T_RST = 0;
}
///////先寫(xiě)地址,后讀命令/數(shù)據(jù)////////////////////////
uchar R1302(uchar ucAddr)
{
    uchar ucData;

T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);            // /* 地址,命令 */
    ucData = RTOutputByte();        // /* 讀1Byte數(shù)據(jù) */
    T_CLK = 1;
    T_RST = 0;
    return(ucData);
}
/////////向1302寫(xiě)入 秒 分 時(shí) 日 月 星期 年 */////////////
void Set1302(uchar *pClock)
{

  uchar i;
    uchar ucAddr = 0x80;
    W1302(0x8e,0x00);           ///* 控制命令,WP=0,允許寫(xiě)操作*/
    for(i =7; i>0; i--)
    {
      W1302(ucAddr,*pClock);    ///* 秒 分 時(shí) 日 月 星期 年 */
      pClock++;
      ucAddr +=2;
    }
     W1302(0x8e,0x80);          // /* 控制命令,WP=1,寫(xiě)保護(hù)*/
}
////////從1302讀出 秒 分 時(shí) 日 月 星期 年 *//////////////////
void v_Get1302(unsigned char  ucCurtime[])
{
unsigned char i;
unsigned char ucAddr = 0x81;
for (i=0;i<7;i++)
   {
      ucCurtime[i] = R1302(ucAddr);///*格式為: 秒 分 時(shí) 日 月 星期 年 */
      ucAddr += 2;
   }
}
//////////拆字子程序///////////////////////////////////////
void  bcd_bcd( )
  {  uchar   a=6;


    for (i=0;i<=15;)
     {
           appear[i]=(get1302[a]&0xf0)/16;

 i++;
           appear[i]=get1302[a]&0x0f;
           i++;
           a--;
     }
}
////////按鍵掃描///////////////////////////////////////////////////
              
//////////按鍵掃描/////////////////////////////////////////////////
void   Key()
{  
   uchar a,b,c,i;
  di();
  a=PORTA ;

 if(56!=(a&56))
   {
      display();
      a=PORTA ;
      if(56!=(a&56))
      {
        for (b=0;b<14;)
          {
                uchar  z,x;
    
                for(z=50;z>0&&b<14;z--)
                  {    z--;
                      display();// delay();
                       delay();
                       a=PORTA;
                       a=a&56;
                       switch(a)
                        {
    
                            case 48 :
                                if(Ds1302[b]!=appear[b] )
                                   (appear[b])++;
                                    a=PORTA ;
                                  for(x=20;x>0&&56!=(a&56);x--)
                                   {   display();// delay();

 delay();
                                    } break; // 年  星期  月 日   時(shí)  分 秒  
                            case 40 : if(appear[b]!=0)(appear[b])--;
                                       a=PORTA ;
                                        for(x=20;x>0&&56!=(a&56);x--)
                                        {  display();// delay();
                                              delay();
                                        } break;//  年  星期  月 日   時(shí)  分 秒    
                            case 24 :  b++;   while( PORTA_5==0);     break;
                        }
                    }
                    
                     a=PORTA ;
                   for(z=50;( z>0&&56==(a&56));z--)
                   {  
                      
                      i=appear[b];
                      appear[b]=10;
                      display( );

       delay();
                      appear[b]=i;
                      a=PORTA;
                     //a=a&56;
                     z--;
                
                    }
                  
          }
                 while( PORTA_5==0);
                  i=13;
                  c=12;
                for(b=0;b<7;b++)
                 {
                      DisCash[b]=((appear[c]&0x0f)*16)|(appear[i]&0x0f);
                       i=i-2;
                       c=c-2;
                 }
                 Set1302(&DisCash[0]);
                 a=PORTA ;
       }  
    }

//////////顯示子程序/////////////////////////////////////////////
void  display()//顯示程序
{
      y=0x80;//0x0C0;寫(xiě)入起始地址
       enable();//寫(xiě)入控制命令子程序
      
       for(i=0;i<8;)
       {
          y=Data[ appear[i]];    // 1';//0x47;
          W_data ();//寫(xiě)入數(shù)據(jù)子程序
       // delay();
           i++;
           y=Data[ appear[i]];    // 1';//0x47;
           W_data ();//寫(xiě)入數(shù)據(jù)子程序
       // delay();
           i++;
           y='-'; // 1';//0x47;
           W_data ();//寫(xiě)入數(shù)據(jù)子程序
        //delay();
       }
        y=0x0C0;

 enable();//寫(xiě)入控制命令子程序
        for(i=8;i<14;)
         {
             y=Data[appear[i]];    // 1';//0x47;
             W_data ();//寫(xiě)入數(shù)據(jù)子程序
                //delay();
               i++;
               y=Data[appear[i]];    // 1';//0x47;
               W_data ();//寫(xiě)入數(shù)據(jù)子程序
               // delay();
                i++;
                y=':';    // 1';//0x47;
                W_data ();//寫(xiě)入數(shù)據(jù)子程序
                // delay();
      
          }
             y='-';    // 1';//0x47;
             W_data ();//寫(xiě)入數(shù)據(jù)子程序
             // delay();

          for(i=0;i<3;i++)
               {
        
                 y=Data[ BCD[i]];    // 1';//0x47;
                 W_data ();//寫(xiě)入數(shù)據(jù)子程序
                }
}
///////主程序//////////////////////////////////////////////////////
void main()

{  
    // TRISB=0x00;
    // TRISC=0x00;
         Set1302(&DisCash[0]);
        initial ();//系統(tǒng) 各I/O初始化子程序
        adinitial();//A/D轉(zhuǎn)換初始化子程序/
        y=0x01;//PORTB
        enable();//寫(xiě)入控制命令子程序
        y=0x38;//8位2行5X7點(diǎn)陣0x3c
        enable();//寫(xiě)入控制命令子程序
        y=0x0C;//顯示器開(kāi),F(xiàn)=光標(biāo)開(kāi),閃爍開(kāi)。
        enable();//寫(xiě)入控制命令子程序
        y=0x06; //文字不動(dòng),光標(biāo)自動(dòng)右移。
        enable();//寫(xiě)入控制命令子程序

///////////////////////////////////////////////////
   while(1)
   {
        v_Get1302(get1302);//從1302讀出 秒 分 時(shí) 日 月 星期 年
       bcd_bcd(get1302);//拆字子程序
       H_BCD ( ADRES ); //十六進(jìn)制轉(zhuǎn)十進(jìn)制程序
       ei();
       ADGO=1;      //啟動(dòng)A/D轉(zhuǎn)換 ADCON0,
      
       display();
        Key();
    }  
}

 

(文源網(wǎng)絡(luò),侵刪)

赤峰市| 屏东县| 连平县| 和政县| 泰安市| 新巴尔虎右旗| 奇台县| 静安区| 顺平县| 乌鲁木齐县| 五华县| 甘德县| 巨鹿县| 许昌市| 陆河县| 长垣县| 桑植县| 江津市| 甘洛县| 池州市| 延边| 巫溪县| 资中县| 南陵县| 奉新县| 万源市| 东明县| 蒲江县| 兴山县| 海林市| 阿鲁科尔沁旗| 突泉县| 磴口县| 霍城县| 黄骅市| 阿巴嘎旗| 山东省| 青田县| 溆浦县| 霍邱县| 灵武市|