久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4260|回復: 1
打印 上一主題 下一主題
收起左側

ARM基本知識

[復制鏈接]
跳轉到指定樓層
樓主
ID:113276 發表于 2016-4-10 17:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 除了正常的保存之外,在編譯無誤后,選擇另存為相同名稱的.h文件,將點h文件中的main函數名稱修改成其他名稱,如xmain,或main1等,則新項目就可以調用原項目中的函數!
一、項目1先編寫LCD1602,編譯無錯誤后再將LCD1602.c另存為LCD1602.h,將LCD1602.h中的main()函數文件改為main0()
#include<reg52.h>
#include<INTRINS.H>
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
void delay(unsigned char us)
{
  while(us--);
}
void w1602(bit r,unsigned char dat)
{
  rs=r;
rw=0;
e=0;
P1=dat;
delay(3);
e=1;
delay(7);
e=0;
}
void init1602()
{
    w1602(0,0x38);
 w1602(0,0x06);
 w1602(0,0x0c);
 w1602(0,0x01);
}
void main()
{
  char i;
init1602();
w1602(0,0x80);
for(i=0;i<10;i++)
 {
        
 w1602(1,0x30+i);
    }
} 
二、建立DS1302萬年歷項目DS1302
#include"reg52.h"
#include"intrins.h"    //注意上面項目作為頭文件調入該項目
#include"LCD1602.h"
sbit rst=P2^3;
sbit sclk=P2^4;
sbit Dio=P2^5;
sbit A7=ACC^7;
sbit B0=B^0;
void w1302(unsigned char addr,dat)
{
  char i;
rst=0;
sclk=0;
rst=1;
for(i=0;i<8;i++)
{
B=addr>>i;     
sclk=0;
Dio=B0;
sclk=1; 
   }
for(i=0;i<8;i++)
{
     B=dat>>i;     
sclk=0;
Dio=B0;
sclk=1;
   }
rst=0;
}
unsigned char r1302(unsigned char addr)
{
  char i;
rst=0;
sclk=0;
_nop_();
rst=1;
for(i=0;i<8;i++)
{
     B=addr>>i;     
sclk=0;
Dio=B0;
sclk=1;
   } 
for(i=0;i<8;i++)
{     
A7=Dio;
sclk=1;
ACC=ACC>>1;
sclk=0; 
   }
rst=0;
return(ACC);
}
void main()
{
init1602();            //上以項目中的函數可以無條件調用
w1302(0x80,0x33);
while(1)
{
    w1602(0,0x80);
w1602(1,0x30+((r1302(0x81)>>4) & 0x0f));//調用
w1602(1,0x30+(r1302(0x81) & 0x0f));//調用
  }
} 
三、建立溫度DS18B20程序項目
#include"reg52.h"
#include"intrins.h"
#include"LCD1602.h"
sbit ds18b20=P2^6;
unsigned char dd[]="date:";
unsigned char dd1[]="temp:";
unsigned char temp1,temp2,TT,ttT;

bit Reset(void)
{
   bit k;
   ds18b20=0;   
   delay(145);     
   ds18b20=1;      
   delay(10);   
   k=ds18b20; 
   delay(90);
   return k;
}
//---------------------------
unsigned char ReadByte(void)
{
   unsigned char j,buf=0;
   for(j=0;j<8;j++)
   {
        buf=buf>>1;
        ds18b20=0; 
        _nop_(); 
        _nop_();
        ds18b20=1; 
        _nop_(); 
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        if(ds18b20==1)
            buf|=0x80;
        delay(8);
                   
     }
   return buf;
}
//-------------------------------
void WriteByte(unsigned char dat)
{
    unsigned char j;
    for(j=0;j<8;j++)
     {             
       if(dat&0x01)
         {      
            ds18b20=0; 
            _nop_();
            _nop_();
            ds18b20=1;
            delay(10);
         }
      else 
         {            
            ds18b20=0;
            delay(10);
            ds18b20=1; 
            _nop_();
            _nop_();
         }
    dat=dat>>1;
 }
}
//------------------
bit Convert(void)
{    
 if(Reset()==0)
     {  
        WriteByte(0xcc);
        WriteByte(0x44);
        return 1; 
     }
 else   
     {   
        return 0; 
     }
}
//---------------------------------------
void ReadFlash(void)
{    
 unsigned char Lsb,Msb; 
    if(Reset()==0)
      {
        WriteByte(0xcc);
        WriteByte(0xbe);
        Lsb=ReadByte();
        Msb=ReadByte();
        temp1=Lsb;//L 8bit
        temp2=Msb;//H 8bit
      } 
     else
      {
        temp1=0;
        temp2=0;
      }
}
void disp_temp(unsigned char addr)
{
char i,m;
   
        if(Convert()==1)      
              {      
                ReadFlash();               
                TT=(temp2<<4)|(temp1>>4)&0x7F;
if((TT & 0x80)==0x80)
                     ttT=(~TT & 0x3F)+1;
else
  ttT=TT;
              }
m=20;
while(m--)
{
w1602(0,addr);
for(i=0;i<5;i++)
w1602(1,dd1[i]);
 if((TT & 0x80)==0x80)   //-
{
 if(TT==0x80)
{
ttT=128;
w1602(1,0x20);
                                            w1602(1,0X30+(ttT/100));
w1602(1,0x30+(ttT%100)/10);
w1602(1,0x30+ttT%10);
                                         }
 else
{
w1602(1,0x20);
 w1602(1,0x2d);
if(ttT/10>0)
w1602(1,0x30+ttT/10);
   else
w1602(1,0x20);
     w1602(1,0x30+ttT%10);
}
}
 else               //+
                                           {
w1602(1,0x20);
 if(ttT/100>0)
{
w1602(1,0X30+(ttT/100));
w1602(1,0x30+(ttT%100)/10);
w1602(1,0x30+(ttT%10));
}
else
{
if((ttT%100)/10>0)
{
w1602(1,0x30+(ttT%100)/10);
w1602(1,0x30+ttT%10);
}
else   
  w1602(1,0x30+ttT%10); }       
              }
                                              w1602(1,0x22);
w1602(1,0x43);
w1602(1,0x20);
w1602(1,0x20);
}
}
void main()
{
init1602();
while(1)
{
 
       disp_temp(0xc3);
       }
}
 
四、建立綜合項目DS1302_18B20
#include"reg52.h"
#include"intrins.h"
#include"DS1302.h"
sbit ds18b20=P2^6;

unsigned char dd[]="date:";
unsigned char dd1[]="temp:";
unsigned char temp1,temp2,TT,ttT;

bit Reset(void)
{
   bit k;
   ds18b20=0;   
   delay(145);     
   ds18b20=1;      
   delay(10);   
   k=ds18b20; 
   delay(90);
   return k;
}
//---------------------------
unsigned char ReadByte(void)
{
   unsigned char j,buf=0;
   for(j=0;j<8;j++)
   {
        buf=buf>>1;
        ds18b20=0; 
        _nop_(); 
        _nop_();
        ds18b20=1; 
        _nop_(); 
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        if(ds18b20==1)
            buf|=0x80;
        delay(8);
                   
     }
   return buf;
}
//-------------------------------
void WriteByte(unsigned char dat)
{
    unsigned char j;
    for(j=0;j<8;j++)
     {             
       if(dat&0x01)
         {      
            ds18b20=0; 
            _nop_();
            _nop_();
            ds18b20=1;
            delay(10);
         }
      else 
         {            
            ds18b20=0;
            delay(10);
            ds18b20=1; 
            _nop_();
            _nop_();
         }
    dat=dat>>1;
 }
}
//------------------
bit Convert(void)
{    
 if(Reset()==0)
     {  
        WriteByte(0xcc);
        WriteByte(0x44);
        return 1; 
     }
 else   
     {   
        return 0; 
     }
}
//---------------------------------------
void ReadFlash(void)
{    
 unsigned char Lsb,Msb; 
    if(Reset()==0)
      {
        WriteByte(0xcc);
        WriteByte(0xbe);
        Lsb=ReadByte();
        Msb=ReadByte();
        temp1=Lsb;//L 8bit
        temp2=Msb;//H 8bit
      } 
     else
      {
        temp1=0;
        temp2=0;
      }
}
void main()
{
unsigned char i;
init1602();
while(1)
{
           if(Convert()==1)      
              {      
                ReadFlash();               
                TT=(temp2<<4)|(temp1>>4);
                ttT=(~TT & 0x3F)+1;
              } 
     //week
w1602(0,0x81);
for(i=0;i<5;i++)
w1602(1,dd[i]);
        w1602(1,0x30+((r1302(0x85)>>4) & 0x0f));
             w1602(1,0x30+(r1302(0x85) & 0x0f));
w1602(1,0x2d);
w1602(1,0x30+((r1302(0x83)>>4) & 0x0f));
             w1602(1,0x30+(r1302(0x83) & 0x0f));
w1602(1,0x2d);
w1602(1,0x30+((r1302(0x81)>>4) & 0x0f));
             w1602(1,0x30+(r1302(0x81) & 0x0f));
  w1602(0,0xc3);     //temp
for(i=0;i<5;i++)
w1602(1,dd1[i]);
 if(temp2 & 0x80==0x80)   //-
   {
      w1602(1,0x2d);
w1602(1,0x30+ttT/10);
      w1602(1,0x30+ttT%10);
}
 else               //+
              {
w1602(1,0x20);
w1602(1,0x30+TT/10);
w1602(1,0x30+TT%10);
              }
            w1602(0x22,1);
w1602(0x43,1);
  }
}





評分

參與人數 1黑幣 +5 收起 理由
viatek001 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:160541 發表于 2017-1-7 09:46 | 只看該作者
ARM的應用前景會越來越好,現在ARM也開始在工業控制行業和EOS(嵌入式操作系統)、MCU強強聯合了,易德電子有ARM架構+嵌入式OS+單片機控制的嵌入式工控電腦已經在醫療機械、工業控制、檢測設備、珠寶加工設備、激光設備等行業/產品上用了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美又大粗又爽又黄大片视频 | 成人小视频在线观看 | 在线观看中文字幕亚洲 | 国产精品综合色区在线观看 | 亚洲高清在线 | 色欧美综合 | 91在线一区二区 | 欧美精品在线观看 | 一区二区三区视频在线免费观看 | 久久精品亚洲成在人线av网址 | 国产91综合一区在线观看 | 男人天堂午夜 | 毛片a | 亚洲成人99 | www.日本在线播放 | 99只有精品 | 国产91丝袜在线18 | 国产精品一二三区在线观看 | 91在线免费视频 | 日韩欧美在线不卡 | 亚洲精品免费视频 | 狠狠躁躁夜夜躁波多野结依 | 久久国产精品免费一区二区三区 | 在线免费观看黄a | 青青草一区二区三区 | 美女一区二区在线观看 | 成人免费淫片aa视频免费 | 日韩精品免费在线观看 | 一区二区三区欧美在线 | 99久9 | 久久久久久成人 | 一区二区成人在线 | 91在线视频网址 | 电影午夜精品一区二区三区 | 激情毛片 | 日韩精品在线一区 | 国产一区免费视频 | 成人在线精品视频 | 农夫在线精品视频免费观看 | av片在线观看 | 人人爽人人草 |