娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月12日(星期日)

2018年01月12日 | 單片機(jī)雙機(jī)通信c51程序

發(fā)布者:平靜的33號(hào) 來源: eefocus關(guān)鍵字:單片機(jī)  雙機(jī)通信  c51程序 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

工程名稱:雙機(jī)通信 
說明:此程序可以實(shí)現(xiàn)兩個(gè) 單片機(jī) 之間的相互通信;串口采用方式1  
      工作,10位異步接受和發(fā)送,波特率可變,由定時(shí)器1控制;且含有校驗(yàn) 


程序說明:SCON:串口通信控制寄存器 
SBUF:串行口的收發(fā)緩沖寄存器 
 PCON:電源管理寄存器。當(dāng)SMOD=1時(shí)串行口的波特率加倍。 
IE:中斷允許寄存器。ES=1表示允許串行口中斷 
TI:發(fā)送中斷標(biāo)志位,TI由硬件置位,置位表示一幀信息發(fā)送結(jié)束,TI在發(fā)送數(shù)據(jù)前必須由軟件清0 
RI:接收中斷標(biāo)志位,RI由硬件置位,置位表示一幀信息接收結(jié)束,RI在接收數(shù)據(jù)前必須由軟件清0 

*******************************************************************************************/ 

#include //將51中定義常用特殊功能寄存器的變量定義文件包含進(jìn)來 
#include "LCD12864.h" 

unsigned long vo_num1=0;//接收到的頻率值 
unsigned long vo_num3=0;// 接收到的失真度 
unsigned int vo_num4=0;//緩存校驗(yàn)值 
unsigned char vo_num2[8];//緩存我們串口接收到的數(shù)據(jù) 
unsigned char m=0; 
unsigned int buf; 
unsigned int pf=0;//校驗(yàn)和 
#define seg_c P2 //將數(shù)碼管的段顯示定義到P2口 
#define bit_c P0   //將數(shù)碼管的位選擇定義到P0口 
#define fosc  22118400  //定義晶體振蕩頻率 
#define  bps  9600 //定義我們要通訊的波特率 
#define th1   256-(fosc/12/16/bps)   //利用宏計(jì)算出我們要給定時(shí)器中賦什么樣的值才能滿足我們需要的波特率 
//將0-F 查表 成我們鍵盤對(duì)應(yīng)的字符  
unsigned char  code  seg[11]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};//定義從0-9 所對(duì)應(yīng)的段碼 
unsigned char  num[8]={9,8,7,6,5,4,3,2}; //聲明8個(gè)顯示緩存 對(duì)應(yīng)我們數(shù)碼管的8個(gè)位        
/********************************************************************************** 
函數(shù)名稱:串口初始化函數(shù) 
**********************************************************************************/  
              
void serial_init (void)  //在使用串口模式1 前要初始 化串口寄存器等... 
{            
  SCON=0x50;   //串口工作于方式1,10位異步接收/發(fā)送,波特率可變 
  TMOD=0X20; //因?yàn)槟J?用到了定時(shí)器1的自動(dòng)重裝模式,所以要這樣設(shè)置定時(shí)器 
  PCON=0X00; //為了讓通訊速率更快,設(shè)置SMOD=1 那么它所在的寄存器PC0N=0X80 ,串行口的波特率加倍。 
  TH1=th1; //將宏計(jì)算的定時(shí)器初值放到TH1中 
  TL1=th1;      
  TR1=1;//啟動(dòng)定時(shí)器來產(chǎn)生串口工作所需要的波特率 
  ES =1;//允許出串口中斷 
  EA=1; //打開總中斷允許位 


/********************************************************************************** 
函數(shù)名稱:串口發(fā)送數(shù)據(jù)函數(shù) 
**********************************************************************************/  

void putbyte(unsigned char byte)// 利用硬件串口方式1 發(fā)送一個(gè)字節(jié)數(shù)據(jù) 

   SBUF=byte;//將要發(fā)送的數(shù)據(jù)送到發(fā)送緩沖區(qū)域,系統(tǒng)自動(dòng)發(fā)送 
   while(!TI);//查詢是否發(fā)送結(jié)束  當(dāng)TI=1  代表發(fā)送結(jié)束 
   TI=0;//清發(fā)送結(jié)束位方便下一次發(fā)送 

/********************************************************************************** 
函數(shù)名稱:串口接收數(shù)據(jù)函數(shù) 
說明:采用中斷方式接收數(shù)據(jù),串口中斷的服務(wù)號(hào)是4 
**********************************************************************************/  
//串口中斷服務(wù)函數(shù)  無論接收中斷或者發(fā)送中斷都能進(jìn)來 
serial () interrupt 4   
{   
  
  if(RI)   //RI=1,表示一楨數(shù)據(jù)接收完 
  {                          
   vo_num2[m]=SBUF; 
   m++; 
 //  if(m>8) 
//   m=0; 
   
   } 
    RI=0;  //RI清0之后才能接收到下一幀數(shù)據(jù)。 
 }             

/********************************************************************************** 
函數(shù)名稱:軟件延時(shí)函數(shù) 

**********************************************************************************/  
void delay(unsigned char ms) //軟件延遲函數(shù) 

  unsigned int a=0; 

   while(ms--) 
   { 
     for(a=0;a<10;a++); 
   } 


/********************************************************************************** 
函數(shù)名稱:顯示函數(shù) 
說明:數(shù)碼管段選是P2口,位選是P0口。 

**********************************************************************************/  

 void display(unsigned int dis) 
{  
        unsigned char loop=0; 
         num[0]=10; 
         num[1]=10; 
         num[2]=10; 
         num[3]=dis/10000;            //得到要顯示數(shù)據(jù)的萬位 
         num[4]=(dis%10000)/1000;     //得到要顯示數(shù)據(jù)的千位 
         num[5]=(dis%1000)/100;       //得到要顯示數(shù)據(jù)的百位 
         num[6]=(dis%100)/10;         //得到要顯示數(shù)據(jù)的十位 
         num[7]=(dis%10);             //得到要顯示數(shù)據(jù)的個(gè)位 
  for(loop=0;loop<8;loop++) 
         { 
           bit_c=~(0x01<           seg_c=seg[num[loop]]; 
           delay(6); 
     seg_c=0xff;       //在這里加了這句話,消除鬼影 
         } 
         
}  


/********************************************************************************** 
函數(shù)名稱發(fā)送校驗(yàn)函數(shù) 
說明: 

**********************************************************************************/  

void  check_transport( unsigned int buf) 
{   
    do 
 {   pf=0x00;                        //校驗(yàn)和清零 
     putbyte(buf);                   //發(fā)送數(shù)據(jù)并求解校驗(yàn)和   
     pf=(pf+buf&0x01+buf&0x02+buf&0x04+buf&0x08+buf&0x10+buf&0x20+buf&0x40+buf&0x80); 
                                 //求解校驗(yàn)和 
     putbyte(pf);                   //發(fā)送校驗(yàn)和     

     } while(SBUF!=0);   



/********************************************************************************** 
函數(shù)名稱:接收校驗(yàn)函數(shù) 
說明: 

**********************************************************************************/  
void check_receive() 

  
while(1) 
   {    
      
  pf=0x00;                         //校驗(yàn)和清零                
//      vo_num4=SBUF; 
//  pf=pf+(vo_num4&0x01+vo_num4&0x02+vo_num4&0x04+vo_num4&0x08+vo_num4&0x10+vo_num4&0x20+vo_num4&0x40+vo_num4&0x80);   

        vo_num2[m]=SBUF; 
  pf=pf+( vo_num2[m]&0x01+vo_num2[m]&0x02+ vo_num2[m]&0x04+ vo_num2[m]&0x08+ vo_num2[m]&0x10+ vo_num2[m]&0x20+ vo_num2[m]&0x40+vo_num2[m]&0x80); 


                                  //求解校驗(yàn)和 
  if((SBUF^pf)==0x00)             //判斷求出的校驗(yàn)和與接收到的校驗(yàn)和是否相等 
   { 
      putbyte(0x00);   
    m++;          

   break; 
   } 
   else  
   { 
    putbyte(0xff);              //如果不相等。則發(fā)送ff 
  
          } 
      }//while(1) 


  

  

/********************************************************************************** 
函數(shù)名稱:主函數(shù) 
說明: 

**********************************************************************************/  

void disp(void) 

 lcd_init(0); 
 refrash_charactor(); 
 lcd_clear(); 
 str_1="頻率:        Hz"; 
 str_2="失真度:0.      "; 

 lcd_display(1,1,str_1); 
 lcd_display(1,2,str_2); 


main() 

   unsigned char temp; 
    serial_init ();  //在使用串口模式1 前要初始   
    disp();                  
                    

  while(1) 
  {   
   
//      putbyte(0xeb)  ; 
//   putbyte(0x90)  ; 
//   putbyte(0xaa)  ; 
//   m=0; 
              
//      check_receive();   
     if(vo_num2[0]==0xeb&&vo_num2[1]==0x90&&vo_num2[2]==0xaa) 
  
  { vo_num1=vo_num2[3]*256+vo_num2[4];//頻率 
   vo_num3=(vo_num2[5]*256+vo_num2[6])*10; //失真度 
   refrash_charactor(vo_num1,vo_num3); 
   lcd_display(4,1,freq); 
   lcd_display(6,2,dist); 
   m=0; 
  } 
  }//while(1)  


關(guān)鍵字:單片機(jī)  雙機(jī)通信  c51程序 引用地址:單片機(jī)雙機(jī)通信c51程序

上一篇:智能家居控制系統(tǒng)C程序
下一篇:單片機(jī)實(shí)現(xiàn)測溫電路

推薦閱讀

英國曼徹斯特大學(xué)的研究人員將石墨烯傳感器嵌入于RFID裝置中,實(shí)現(xiàn)了免用電池的無線智能濕度監(jiān)測器;借由這項(xiàng)研究推動(dòng)石墨烯技術(shù)結(jié)合其他2D材料的可能性,從而為無線感測應(yīng)用開創(chuàng)新的物聯(lián)網(wǎng)應(yīng)用…英國曼徹斯特大學(xué)(University of Manchester)的研究人員將石墨烯傳感器嵌入于無線射頻辨識(shí)(RFID)裝置中,以實(shí)現(xiàn)免用電池的無線智能濕度監(jiān)測器。這項(xiàng)研究的目...
近年來,隨著自動(dòng)化生產(chǎn)需求的持續(xù)釋放,機(jī)器人產(chǎn)業(yè)迎來了迅猛發(fā)展,各種機(jī)器人技術(shù)都在商業(yè)化應(yīng)用中找到了合適的落地,推動(dòng)著各行各業(yè)的快速轉(zhuǎn)型升級(jí)。反過來,由于行業(yè)應(yīng)用的深化和下沉,也呼喚著機(jī)器人技術(shù)的高要求發(fā)展與進(jìn)一步升級(jí),人們對(duì)機(jī)器人技術(shù)智能化本質(zhì)的加深,增強(qiáng)了大家對(duì)技術(shù)未來發(fā)展情況的殷切期待。2018年,機(jī)器人產(chǎn)業(yè)的火熱發(fā)展,已經(jīng)向...
對(duì)于硬件工程師來說,一些工具的使用也至關(guān)重要,工具使用的不當(dāng),往往導(dǎo)致得到的結(jié)果也是不正確的,可能會(huì)給硬件工程師一個(gè)錯(cuò)誤的判斷。本章就會(huì)列舉出很多實(shí)用的關(guān)于硬件工程師必須要會(huì)的一些工具的使用方法和技巧。測電源紋波電源紋波如何測得?你設(shè)計(jì)的電源紋波多大?你怎么降低電源的紋波和噪聲?以上一系列問題是筆者在面試過程中總結(jié)出來的,這也是...
姚頌是現(xiàn)任賽靈思人工智能業(yè)務(wù)高級(jí)總監(jiān),負(fù)責(zé)公司在全球領(lǐng)域的人工智能業(yè)務(wù)拓展和生態(tài)建設(shè)。 在明確的需求驅(qū)動(dòng)下,百度、阿里、騰訊等互聯(lián)網(wǎng)巨頭紛紛加入云端 AI 芯片市場,芯片公司們也必須清楚自己的客戶在哪里。此外,除了硬件本身,芯片公司還需要關(guān)注全系統(tǒng)設(shè)計(jì)、考慮經(jīng)濟(jì)性問題、在軟件架構(gòu)領(lǐng)域應(yīng)用更多機(jī)器學(xué)習(xí)的最新技術(shù),構(gòu)建開源生態(tài)和社區(qū),...

史海拾趣

問答坊 | AI 解惑

航天測控電子設(shè)備電路板故障診斷技術(shù)

隨著科學(xué)技術(shù)的快速發(fā)展,特別是數(shù)字技術(shù)及各種超大規(guī)模集成電路的廣泛應(yīng)用,電子裝備尤其是軍用電子裝備結(jié)構(gòu)越來越復(fù)雜,功能越來越完善,自動(dòng)化程度也越來越高。雖然電子系統(tǒng)的性能得到提高,但是對(duì)測試和維修保障也產(chǎn)生了測試流程復(fù)雜、測試時(shí)間 ...…

查看全部問答∨

推薦幾本關(guān)于LINUX和ARM的書

一些對(duì)學(xué)習(xí)Linux和ARM具有參考意義的書…

查看全部問答∨

Motorola 廉價(jià)單片機(jī)原理及應(yīng)用

書名:MOTOROLA J, K系列廉價(jià)單片機(jī)原理及應(yīng)用 作者:余永權(quán)/林偉 出版社:北京航空航天大學(xué)出版社 頁數(shù):217 出版日期:1998-12-1 簡介:單片機(jī)在工業(yè)控制、汽車、儀器、家用電器、玩具、計(jì)算機(jī)外部設(shè)備、航空航天、交通運(yùn)輸、通信等領(lǐng)域都有廣泛的 ...…

查看全部問答∨

如何用C/C++程序?qū)崿F(xiàn)撥通 sim300實(shí)驗(yàn)板

小弟剛找到份工作 接到一個(gè)任務(wù) BOSS給了塊SIM300實(shí)驗(yàn)板 讓我看AT命令 還讓我用C程序?qū)崿F(xiàn)撥通這個(gè)實(shí)驗(yàn)板 其實(shí)我還不是很明白我要做什么 又該是如何實(shí)現(xiàn)呢 望大蝦不惜賜教~…

查看全部問答∨

求GPS有源天線的電路原理圖。

對(duì)LNA一竅不通,現(xiàn)在需要突擊做一個(gè)400MHZ~800MHZ的低噪放。求哪位大俠有GPS的有源模塊給點(diǎn)電路參考一下。…

查看全部問答∨

我在網(wǎng)上的第一次銷售

本帖最后由 ddllxxrr 于 2016-1-7 17:12 編輯 本站強(qiáng)薦:185娛樂x城.足球x真_人.彩票齊全x手機(jī)可投x注任何游戲. 首次開戶送10元.首存送58元.信譽(yù)絕對(duì)保證185.cc …

查看全部問答∨

【問TI】bq77910控制芯片的激活問題

本帖最后由 dontium 于 2015-1-23 13:22 編輯 你好,我們?cè)谟肨I控制芯片bq77910做實(shí)驗(yàn),我們?cè)趯?shí)驗(yàn)中遇到一些無法解決的問題:充電器檢測頭CHGST在電池電壓V > (欠壓保護(hù)值UV + 欠壓回滯點(diǎn)UVH)可以進(jìn)行充電器的檢測,從而使控制芯片bq77910從休 ...…

查看全部問答∨

一些國賽的小資料,不知道重復(fù)沒

本帖最后由 paulhyde 于 2014-9-15 03:20 編輯 一些國賽的小資料,不知道重復(fù)沒    …

查看全部問答∨

為什么不能實(shí)現(xiàn)端口中斷觸發(fā)定時(shí)器開啟啊啊啊啊啊啊????

#include <msp430g2231.h> unsigned int a=0,p=1; void delay(int x) {   int i,j;   for(i=0;i<=x;i++)       for(j=0;j<=x;j++); } void initial() {       &nb ...…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 安福县| 葫芦岛市| 梨树县| 新昌县| 秦皇岛市| 泰州市| 宜城市| 科技| 临安市| 林芝县| 岳普湖县| 织金县| 阳城县| 法库县| 博野县| 满城县| 新竹县| 宝鸡市| 安宁市| 托克逊县| 新绛县| 高雄市| 皋兰县| 兴文县| 刚察县| 蓬安县| 宜都市| 肇源县| 马公市| 江津市| 都昌县| 城步| 罗山县| 根河市| 望都县| 韶山市| 辽中县| 徐闻县| 凌源市| 白水县| 龙泉市|